Что Emacs эквивалентно vi dd? Я хочу удалить текущую строку. Пробовал CTRL+, kно он удаляет только с текущей позиции.
122
C-a # Go to beginning of line
C-k # Kill line from current point
А также есть
C-S-backspace # Ctrl-Shift-Backspace
который вызывает M-x kill-whole-line
.
Если вы хотите установить другую привязку глобального ключа, вы должны поместить это в ~ / .emacs:
(global-set-key "\C-cd" 'kill-whole-line) # Sets `C-c d` to `M-x kill-whole-line`
Если вы хотите удалить несколько целых строк, вы можете добавить к команде номер:
C-u 5 C-S-backspace # deletes 5 whole lines
M-5 C-S-backspace # deletes 5 whole lines
C-u C-S-backspace # delete 4 whole lines. C-u without a number defaults to 4
C-u -5 C-S-backspace # deletes previous 5 whole lines
M--5 C-S-backspace # deletes previous 5 whole lines
Иногда мне также C-x z
помогают:
C-S-backspace # delete 1 whole line
C-x z # repeat last command
z # repeat last command again.
# Press z as many times as you wish.
# Any other key acts normally, and ends the repeat command.
C-x z
, это действительно круто. И, кстати, хороший и точный ответ.C-k C-k
что-то вродеd$ S-j
in vim, но это может довольно хорошо удалять строки вперед.C-cd
?Если вы не хотите уничтожать строку (которая помещает ее в буфер обмена ОС и убивает кольцо), а просто удалите ее:
источник
Другой способ удалить строку, не помещая ее в список уничтожений:
Это оставит точку в начале пустой строки. Чтобы избавиться от этого, вы можете добавить что-то вроде этого
(delete-blank-lines)
в конец функции, как в этом примере, что, возможно, немного менее интуитивно понятно:источник
Самый быстрый / простой способ удалить (уничтожить) всю строку из любой точки строки, ничего не выбирая:
Он универсален для удаления всего, что выбрано, или строки по умолчанию, если ничего не выбрано.
Учитывая вопрос, вы, вероятно, также заинтересованы в воспроизведении «yank» Vim
yy
(хотя на языке Emacs «yank» сбивает с толку «put» Vimp
). Это:Красиво, гармонично и довольно легко запоминается. Даже немного похож на Vim's
i_CTRL-W
.После того, как вы поместили что-то в список убийств одним из вышеперечисленных способов, вы, вероятно, захотите «выдернуть» (вставить) это:
(Обратите внимание, что CS-backspace может не работать в терминале Emacs.)
источник
Вместо того, чтобы иметь отдельный ключ для удаления строки или вызывать префикс-аргумент. Вы можете использовать crux-smart-kill-line, который «убьет до конца строки и убьет всю строку при следующем вызове». Но если вы предпочитаете
delete
вместоkill
, вы можете использовать приведенный ниже код.Для операции «точка-строка» (kill / delete) я рекомендую использовать zop-to-char
источник
источник