Что такое эквивалент emacs vi dd? Я хочу удалить текущую строку. Пробовал CTRL + k, но он удаляется только из текущей позиции.
Как удалить текущую строку в Emacs?
Ответ 1
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.
Ответ 2
Если вы не хотите убивать строку (которая помещала бы ее в буфер обмена ОС и убивать кольцо), но просто удаляйте ее:
(defun delete-current-line ()
"Delete (not kill) the current line."
(interactive)
(save-excursion
(delete-region
(progn (forward-visible-line 0) (point))
(progn (forward-visible-line 1) (point)))))
Ответ 3
Самый быстрый/самый простой способ удалить (убить) полную строку, из любой точки на строке, не выбирая ничего, есть:
C-w ; kill-region
Он универсален при удалении выбранного или по умолчанию если ничего не выбрано.
Учитывая этот вопрос, вы, вероятно, также заинтересованы в репликации
Vim "yank", yy
(хотя на языке Emacs "янки" сбивает с толку
Vim "put", p
). Это:
M-w ; kill-ring-save
Хороший и конгруэнтный, и довольно легко запомнить. Даже немного
аналогично Vim i_CTRL-W
.
Как только вы положили что-то в кольцо убийства с любым из вышеперечисленных, вы, скорее всего, захотите "выдернуть" (вставить) его:
M-y ; yank-pop
(Обратите внимание, что C-S-backspace может не работать в терминале Emacs.)