即使在 Emacs 中使用全域視覺行模式,「(kill-line 0)」也會殺死實體行

即使在 Emacs 中使用全域視覺行模式,「(kill-line 0)」也會殺死實體行

我是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即使在視覺線模式下,仍然會破壞物理線。不過關鍵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)))

相關內容