私はemacsで動くための新しいキーバインディングを定義しています。私はM-nを次の行にバインドしたいのですが、同じことをする次の論理行も見つかりました。次の論理行はemacsで何をする
次の行が1行下に移動することがわかります。 次の論理行は何をしますか?
2つのコマンドが異なる動作をする例を挙げてください。 Emacsのヘルプ(C-h a next-logical-line
)から
私はemacsで動くための新しいキーバインディングを定義しています。私はM-nを次の行にバインドしたいのですが、同じことをする次の論理行も見つかりました。次の論理行はemacsで何をする
次の行が1行下に移動することがわかります。 次の論理行は何をしますか?
2つのコマンドが異なる動作をする例を挙げてください。 Emacsのヘルプ(C-h a next-logical-line
)から
:
次の論理的ラインは 「simple.el」内のインタラクティブコンパイルLisp関数です。
(次の論理的ライン&オプションARGトライVSCROLL)
移動カーソル上下ARG線ダウン。これは の 'next-line'と同じですが、変数 'line-move-visual'の値は無視して、視線が の代わりに論理行単位で常に移動する点が異なります。
論理行は、newline
文字による区切りに基づく行です。言い換えれば、論理行は表示ではなくテキストに基づいています。
https://github.com/emacs-mirror/emacs/blob/f069ea4f84a94bfbbd444073729f81fdd27c9445/lisp/simple.el#L5853は、next-line()のソースです。
変数「ラインの動きビジュアルは、」非nilなら、 表示ラインによって、このコマンドの移動:
ドキュメンテーション文字列は、次のテキストが含まれています。それ以外の場合は、可変幅の文字または継続行を考慮に入れずに、バッファ行単位で移動します。バッファライン単位で常に移動するコマンドについては、M-x next-logical-lineを参照してください。
https://github.com/emacs-mirror/emacs/blob/f069ea4f84a94bfbbd444073729f81fdd27c9445/lisp/simple.el#L6767は、(次の論理的ラインのソースである)
次の論理的ラインの実装である:
(defun next-logical-line (&optional arg try-vscroll)
"Move cursor vertically down ARG lines.
This is identical to `next-line', except that it always moves
by logical lines instead of visual lines, ignoring the value of
the variable `line-move-visual'."
(interactive "^p\np")
(let ((line-move-visual nil))
(with-no-warnings
(next-line arg try-vscroll))))
我々はnext-logical-line
がnext-line
を使用して実装されていることを見ることができるが、 line-move-visual
をnilに設定します。デフォルトでは、この変数はtに設定されています。
$ emacs -Q --batch --eval '(message "%s" line-move-visual)' t