`(kill-line 0)` は、Emacs の global-visual-line-mode でも物理行を削除します。

`(kill-line 0)` は、Emacs の global-visual-line-mode でも物理行を削除します。

私は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)))

関連情報