2016-07-31 66 views
1

当在文件中变化宽度的行之间上下移动时,是否可以使Emacs保持光标的水平位置?Emacs - 在更改行时保留水平位置

我将通过示例来解释我的意思。说我有3行文字:

1: ------a 
2: --b 
3: --c---d 

假设光标位于由一个上述标记的位置。如果我向下移动一行,则光标将位于b。如果我再次下移,它将在c。但我实际上最终想要在d

有没有一种方法,使Emacs的自动做,这样我可以从一个b只需按下箭头两次去d? Emacs将不得不记住我最近一次水平移动时的水平位置,并且每次垂直移动时尝试恢复水平位置。

+1

Emacs也正是你在默认情况下要求的。 – phils

回答

1

自定义用户选项goal-columnnil

(您也可以使用命令set-goal-column随时设置goal-column到当前列。)

+0

您的意思是,我应该这样做,在.emacs文件中? *(setq目标栏无)*它似乎没有任何影响。 – wdep1

+0

是的。 (但更好的方法是使用'M-x自定义选项目标栏')。它应该完全按照您在大多数模式中描述的内容进行。某些模式(如Dired)会使光标垂直移动始终移至特定列。如果它不符合你所描述的,尝试使用'emacs -Q'启动Emacs,然后将其设置为'nil'。如果这是有效的,那么递归地分割你的init文件来找出你正在做什么来对付这种行为。 – Drew

+0

我发现使用这个* normal-escape.el *脚本:https://www.emacswiki.org/emacs/CancelingInEmacs导致了这个问题;删除该脚本后,Emacs的默认行为实际上就是我想要的。 – wdep1