Как удалить текущую строку в Emacs?

Что такое эквивалент emacs vi dd? Я хочу удалить текущую строку. Пробовал CTRL + k, но он удаляется только из текущей позиции.

Ответ 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.)