我如何直观地在vim中移动光标?(不是按行)

jin*_*wan 14 vim

如果某些行太长,它将被强制换行.

例如,通常一条长线看起来像这样

1 first line
2 this is the long second line of the file
3 third line.
Run Code Online (Sandbox Code Playgroud)

但是,如果vim的窗口太窄,它将会是这样的

1 first line
2 this is the long
  second line of the file
3 third line
Run Code Online (Sandbox Code Playgroud)

问题来自于此.

让我们假设vim光标位于'第三行'中't'之前.如果我输入"k",光标将移动到"文件的第二行"中的"s"之前.之后,如果我再次输入'k',光标将在'first line'中移动到'f'!而不是't'在'这是长'中.我想要的是光标在'这是长'中移动到't',这对我来说是更直观的过程.如何设置我的vim这样的工作?

Gre*_*ill 27

在Vim中,gjgk命令在屏幕上逐行移动,而不是在文件中按行移动.这听起来可能与您的描述相符.

您可以像这样修改您的密钥:

:map j gj
:map k gk
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您可能需要考虑使用`:noremap`或`:nnoremap`; 有关详细信息,请参阅此处:http://learnvimscriptthehardway.stevelosh.com/chapters/05.html (7认同)

Roo*_*ook 5

不,如果某些行太长并且你设置了换行,它们将显示在"两行"上,所以说,但它们之间不会有换行符.如果你用set nowrap关闭换行,你会看到效果.

通常情况下,kj移动你上下.如果你想导航包裹的线条使用gkgj,或者像它一样,将它映射到例如光标键.

nmap <up> gk
nmap <down> gj
Run Code Online (Sandbox Code Playgroud)