2011-05-24 17 views
3

使用macvim。假设我在编辑器中有一个句子占用了5行。第二句话占据了下5行。从光标在第1行开始。在正常模式下,按j将带我到下一句(即第6行)。按行移动而不是按句子移动

如何将此行为更改为按j将我带到第2行(仍然是第一句话的一部分?)。或者,而不是使用j,以任何其他方式来实现这一目标?

+0

这条线就是你所说的“句子”。 'set nowrap'会显示为一条线。我认为,没有办法做到这一点,因为该“行”的长度取决于窗口的大小,并且在这些“行”之间没有实际的分隔符。 – khachik 2011-05-24 09:05:29

回答

4

实际的问题是行(不是句子)太长,并且它包裹到多条显示行。 jk的默认移动将以实线移动光标,而不是显示线。

您可以重新映射jk在正常模式下的显示行做的举动:

nnoremap j gj 
nnoremap k gk 

(在你的.vimrc)。

3

j带你到下一行。我认为你有一个术语问题(“句子”并不意味着你认为它的含义)。如果j不会将您带到屏幕上的下一行,这是因为该文件包含非常长的一行(您称之为“句子”),它太宽而无法放在屏幕上。如果线条很长,则显示在几条屏幕线上。 Vim称之为“显示行”。命令j移动到下一个文件行的相同位置; gj移动到下一个屏幕行上的同一列。

+3

虽然我认为你的解释增加了很多价值,但我认为从解决方案开始会好得多:你可以使用'gj'。现在,简单的答案隐藏在一条很长(很可能)令人困惑的蛇的尾部。 – sehe 2011-05-24 09:35:49

+0

嗯,我使用“句子”一词来给出一些上下文,但我知道线不一定对应于实际的句子。不知道显示行的术语。但是,谢谢,这正是我所期待的。 – Nigu 2011-05-24 09:40:37