`(kill-line 0)` уничтожает физическую строку даже с global-visual-line-mode в Emacs

`(kill-line 0)` уничтожает физическую строку даже с global-visual-line-mode в Emacs

Я определяю backward-kill-lineтак.

(defun backward-kill-line ()
  (interactive)
  (kill-line 0))

И я использую global-visual-line-mode.

kill-lineубивает визуальную линию, но это backward-kill-lineубивает физическую линию. Как я могу изменить backward-kill-lineэто, чтобы убивать только визуальную линию?

решение1

kill-lineвсе еще убивает физические линии даже в режиме Visual Line. Однако клавиша C-kпереназначена на kill-visual-line.

В Emacs нет backward-kill-lineкоманды, но вы могли где-то ее подцепить. Если вам нужна функция, которая убивает визуальную линию, либо создайте функцию backward-kill-visual-line, либо используйте следующую комбинированную функцию, которая убивает визуальную линию, если она находится в режиме визуальной линии, и физическую линию в противном случае.

(defun backward-kill-visual-line (arg)
  "Kill ARG visual lines backward."
  (interactive "p")
  (funcall (if visual-line-mode #'kill-visual-line #'kill-line)
           (- 1 arg)))

Связанный контент