Как я могу удалить текущую строку в Emacs?
Что такое Emacs эквивалент vi dd? Я хочу удалить текущую строку. Пробовал CTRL + k, но он удаляет только С текущее положение.
3 ответа:
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.
в случае, если вы не хотите, чтобы убить строку (что бы положить его в буфер обмена ОС и убить кольцо) , но просто удалить его:
(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)))))
самый быстрый / простой способ удалить (убить) полную строку, из любой точки на линии, ничего не выбирая, стоит:
C-w ; kill-region
он универсален в удалении того, что выбрано, или строки по умолчанию если ничего не выбрано.
учитывая вопрос, вы, вероятно, также заинтересованы в репликации "Янки" Вима,
yy
(хотя на языке Emacs "янки" смущает ВИМ "положил",p
). Это:M-w ; kill-ring-save
хороший и конгруэнтный, и довольно легко запоминающийся. Даже немного похоже на Vim
i_CTRL-W
.как только вы положили что-то в кольцо убийства с любым из вышеперечисленных, вы, вероятно, захотите "дернуть" (вставить) его:
M-y ; yank-pop
(обратите внимание, что C-S-backspace может не работать в терминале Emacs.)