2017-11-30 1 views
1

私はemacsで動くための新しいキーバインディングを定義しています。私はM-nを次の行にバインドしたいのですが、同じことをする次の論理行も見つかりました。次の論理行はemacsで何をする

次の行が1行下に移動することがわかります。 次の論理行は何をしますか?

2つのコマンドが異なる動作をする例を挙げてください。 Emacsのヘルプ(C-h a next-logical-line)から

答えて

1

次の論理的ラインは 「simple.el」内のインタラクティブコンパイルLisp関数です。

(次の論理的ライン&オプションARGトライVSCROLL)

移動カーソル上下ARG線ダウン。これは の 'next-line'と同じですが、変数 'line-move-visual'の値は無視して、視線が の代わりに論理行単位で常に移動する点が異なります。

論理行は、newline文字による区切りに基づく行です。言い換えれば、論理行は表示ではなくテキストに基づいています。

0

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-linenext-lineを使用して実装されていることを見ることができるが、 line-move-visualをnilに設定します。デフォルトでは、この変数はtに設定されています。

 
$ emacs -Q --batch --eval '(message "%s" line-move-visual)' 
t 
関連する問題