2011-05-24 40 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