2

我想使用beginneing-of-visual-lineend-of-visual-line

所以我在 .emacs 中写道,如下所示。

(global-set-key "\C-a" 'beginning-of-visual-line)
(global-set-key "\C-e" 'end-of-visual-line)

beginning-of-visual-line像我希望的那样工作。但是,如果我在视觉上多行使用 Ce,光标会转到下一行的开头。

为什么会这样?我该如何解决?

我在 Mac OS X 10.7.5 中使用 Emacs 24.3 (9.0)。

4

1 回答 1

2

我认为一般来说,end-of-line将点定位在行尾之后的下一个字符上。

我发现这在用 lisp 编码时很有帮助,因为它把点放在了一个完美的地方,可以轻松地评估以前的 s-exp。

但是,在视觉行结束的情况下,行结束后的第一个字符实际上在下一个视觉行上。如果您希望该点位于当前视线的最后一个字符上,则可以返回一个字符,如下所示:

(global-set-key (kbd "C-e") '(lambda ()
                               (interactive)
                               (end-of-visual-line)
                               (backward-char)))

编辑

实现相同目标的更好方法 - 这将解决您评论中的问题,只是启用视觉线模式:

(global-visual-line-mode 1)

这将自动使您C-aC-e视觉线条一起工作。

视觉线模式的唯一问题是,默认情况下,没有指示符显示换行的位置。要解决此问题,您可以使用:

(setq visual-line-fringe-indicators '(left-curly-arrow right-curly-arrow))

您需要将visual-line-fringe-indicators分配global-visual-line-mode放在 .emacs 中的调用之前,以使其正常工作。

上述来源:http ://www.emacswiki.org/emacs/VisualLineMode

于 2013-08-16T09:01:36.467 回答