Как удалить emacs ubuntu

Обновлено: 07.07.2024

What is the emacs equivalent of vi's dd ? I want to delete the current line. Tried CTRL + k but it only deletes from current position.

11.1k 21 21 gold badges 86 86 silver badges 128 128 bronze badges 66.6k 21 21 gold badges 125 125 silver badges 133 133 bronze badges

6 Answers 6

which invokes M-x kill-whole-line .

If you'd like to set a different global key binding, you'd put this in

If you want to delete a number of whole lines, you can prefix the command with a number:

Sometimes I also find C-x z helpful:

6,703 9 9 gold badges 39 39 silver badges 68 68 bronze badges 744k 157 157 gold badges 1644 1644 silver badges 1581 1581 bronze badges This works. Is there a way to do this using one command? Will I have to create a custom key binding to do this?

In case you don't want to kill the line (which would put it into the OS clipboard and kill ring) but simply delete it:

24.1k 6 6 gold badges 67 67 silver badges 107 107 bronze badges

Another method to delete the line without placing it into the kill ring:

This will leave the point at the beginning of a blank line. To get rid of this also, you may wish to add something like (delete-blank-lines) to the end of the function, as in this example, which is perhaps a little less intuitive:


4,721 2 2 gold badges 35 35 silver badges 51 51 bronze badges

Rather than having separate key to delete line, or having to invoke prefix-argument. You can use crux-smart-kill-line which will "kill to the end of the line and kill whole line on the next call". But if you prefer delete instead of kill , you can use the code below.

For point-to-string operation (kill/delete) I recommend to use zop-to-char


1,189 1 1 gold badge 15 15 silver badges 20 20 bronze badges

The fastest/simplest way to delete (kill) a full line, from any point on the line, without selecting anything, is:

It is versatile in deleting whatever is selected, or a line by default if nothing is selected.

Given the question, you're probably also interested in replicating Vim's "yank", yy (though in Emacs parlance a "yank" is confusingly Vim's "put", p ). This is:

Nice and congruent, and pretty easy to remember. Even slightly similar to Vim's i_CTRL-W .

Once you've put something in the kill ring with either of the above, you'll likely want to "yank" (paste) it:

Проблема в том, что в Emacs, запущенном в gnome-terminal как emacs -nw (т.е. в консольном режиме), комбинации C-RET почему-то воспринимаются как C-j. Как это лечить? google знает о проблеме немного, но все, что я нахожу, говорит о том, что это не лечится. Может гуру знают рецепты?

> C-RET почему-то воспринимаются как C-j

man ascii : ret - это C-m

Костыль можно прикрутить, но смысла мало, к тому же c-ret используется не столь часто, аки например m-ret

Нет, не работает. C-RET невозможно имитировать с помощью C-m

Вопрос по-прежнему открыт!

> Нет, не работает. C-RET невозможно имитировать с помощью C-m

И не должен, был намек на то что RET - это C-m, терминал не поймет C-RET. Так доступнее?

Как mcedit понимает C-PgDown если emacs этого не может понять? Значит есть все-таки способ заставить комбинации Ctrl+что-то_особое работать!


> Как mcedit понимает C-PgDown если emacs этого не может понять?

А при чем тут PgDown? Запусти cat и посмотри на коды, которые генерируют эти сочетания. PgDown и C-PgDown отличаются кодами. C-RET и RET — нет.

> PgDown и C-PgDown отличаются кодами.

PgDown - ведь esc-последовательность. Как к ней Ctrl прикрутить мне не очень непонятно. Вот M- (Alt-) - другое дело.

Тут наверное надо посмотреть как ведет себя mcedit в различных терминалах, может `gedit' ему посылает что-нибудь алтернативное.


> PgDown - ведь esc-последовательность. Как к ней Ctrl прикрутить мне не очень непонятно.

> Там просто генерируются разные esc-последовательности.

Портабельные между различными терминалами?

C-RET тоже отдавалась как некая esc-последовательность

И возражение ТС относительно C-PgDown приобретает больший вес.

ps. настроить вроде можно, в том же urxvt `Shift-SPC' у меня передает `C-x SPC' (для emacs и less)


> Портабельные между различными терминалами?

Впрочем, всё оказалось сложнее. Например, в чистой консоли у End и C-End коды совпадают. Но mc их различает. Значит curses (или на чем там mc крутится? на slang вроде) при запуске переключает режимы генерации кодов на терминале.

Даже интересно стало: установил mc. В чистой консоли коды одинаковые, а как отличить, что `mсedit' их различает?

В `urxvt' же C-(Pg..|End) ничего не передает.

> В `urxvt' же C-(Pg..|End) ничего не передает.

В этом случае их (prior и С-prior) и emacs различает.


> Например, в чистой консоли у End и C-End коды совпадают. Но mc их различает. Значит curses (или на чем там mc крутится? на slang вроде) при запуске переключает режимы генерации кодов на терминале.

> C-RET и RET

Также различаются в mc. Проверь!

Ну и да, интерес мой не праздный: я хочу эффективнее использовать emacs по сети, а граф. интерфейс тормозит. C-RET забиндена в maxima-mode на подачу всей строки на выполнение. Я могу, конечно, перебиндить, но это означает много хлопот, потому что такая комбинация не единственная, скажем C-Home, C-End, C-. C-, тоже не работают


> а как отличить, что `mсedit' их различает?

End, S-End, C-End в виртуальной консоли даёт одинаковый код. В mсedit: End — переход в конец строки, S-End — выделение до конца строки, C-End переход на последнюю строку.

> C-Home, C-End

Будут различаться и так.

я хочу эффективнее использовать emacs по сети

А монтировать сетевые ресурсы?

> А монтировать сетевые ресурсы?

Это костыль, раз. Во-вторых, консольный emacs грузится намного быстрее. В третьих, это emacs на рабочей машине, а не локальный.

> Это костыль, раз.

Да-да. и plan9 - сплошь костыли.

Во-вторых, консольный emacs грузится намного быстрее.

В третьих, это emacs на рабочей машине, а не локальный.

Аргумент, правда в том случае, если железо неподходящее или окружение нельзя/сложно такое же водрузить.

Хорошо, считай это моим иррациональным желанием: я хочу работать в консоли и желаю, чтобы эта работа шла столь же эффективно, как и в иксах. Для этого мне нужны горячие клавиши, которые (по возможности) не отличаются от иксовых, а также возможность не перебиндивать over 9000 их на все случаи жизни; я считаю, что большинство умолчаний и так хороши

Собственно, мне интересно, существует ли способ это сделать или все безнадежно.

> Собственно, мне интересно, существует ли способ это сделать или все безнадежно.

Если без костылей, то рискну предположить, что вряд ли. (У меня, например, в виде костылей S-SPC и М-S-SPC). Недаром у многих сочетаний есть аналоги (в том же `org-mode'), для этих можно и небольшие костыли к gnome-terminal прикрутить.

А так вроде можно упаковать в, скажем, esc-последовательность, а на удаленном emacs-е ее интерпретировать: тогда не надо будет конечные сочетания менять.

Надо было сразу с консольного начинать), а от хорошего отвыкать сложно.

> Надо было сразу с консольного начинать), а от хорошего отвыкать сложно.

Э-эх! X-овый emacs всем хорош, но по сети его гонять — сплошное мучение.


>Ну и да, интерес мой не праздный: я хочу эффективнее использовать emacs по сети, а граф. интерфейс тормозит. C-RET забиндена в maxima-mode на подачу всей строки на выполнение.

Ну, собственно, тут уже все сказано, и мнение о невозможности, к которому ты пришел, верно.

потому что такая комбинация не единственная, скажем C-Home, C-End, C-. C-, тоже не работают

C-Home, C-End у меня работают в эмуляторе TERM=xterm, например, но не работают в TERM=linux.

Читайте также: