用于甚长线路的vim导航

用于甚长线路的vim导航,vim,Vim,我正在用vim编辑一个文本文件,我使用“set wrap”启用了wrap。假设我有一条很长的线,它被包装成10行。假设我在第5行(包装时在第一行),我想进入第7行(包装时)的一个单词。我到那条线最快的方法是什么。我不太想去wl——可能有更好/更简单的方法,对吧? gj转到下面的行(同一行,但已包装) gk转到上一行 我的.vimrc里有一张地图 map j gj map k gk 当你知道这个词或看到它时。例如,它是hello,您可以使用/hello搜索它。那应该跳到那里。如果之前有hell

我正在用vim编辑一个文本文件,我使用“set wrap”启用了wrap。假设我有一条很长的线,它被包装成10行。假设我在第5行(包装时在第一行),我想进入第7行(包装时)的一个单词。我到那条线最快的方法是什么。我不太想去
wl
——可能有更好/更简单的方法,对吧?

  • gj
    转到下面的行(同一行,但已包装)
  • gk
    转到上一行
我的.vimrc里有一张地图

map j gj
map k gk

当你知道这个词或看到它时。例如,它是hello,您可以使用
/hello
搜索它。那应该跳到那里。如果之前有hello,您可以使用
n
进入下一个。

有几个动作专门处理
:set wrap
;它们大多是前缀为
g
的“正常”运动的变体

因此有
gj
gk
可以在屏幕上移动,还有
g0
g^
g$
,等等。请使用
:help
查找更多详细信息。

正如Paco在他的文章中所说,您可以使用
gj
gk>导航屏幕行。如果这太麻烦了(可能是这样),您可以将这些行添加到
~/.vimrc
中,让普通箭头键按照屏幕行而不是逻辑行导航:

noremap  <silent> <Up>   gk
noremap  <silent> <Down> gj
noremap  <silent> <Home> g<Home>
noremap  <silent> <End>  g<End>
inoremap <silent> <Up>   <C-o>gk
inoremap <silent> <Down> <C-o>gj
inoremap <silent> <Home> <C-o>g<Home>
inoremap <silent> <End>  <C-o>g<End>
noremap-gk
诺雷马普gj
诺雷马克
诺雷马克
inoremap gk
inoremap gj
inoremap g
inoremap g

我不知道这一点,谢谢你的启发。你不想在其中添加修饰符case@ChristianBrabandt这段代码对我来说非常适用,为什么我不包括
修饰符呢?因为在使用地图时,地图仅限于光标当前所在的缓冲区。这是一个缓冲区本地映射,而您似乎想要一个全局映射。@ChristianBrabandt因为它在.vimrc中,所以它对所有缓冲区都有效。不过,我现在删除了
参数,因为它似乎是多余的。不,它只对第一个缓冲区有效