动作命令是Vim中进行文档导航的核心,它们不仅可以移动光标,还能与操作符结合使用,选择文本区域进行编辑。熟练掌握这些跳转指令和方式,将会使你的开发效率成倍增长,而不是傻傻只会用jk和w进行跳转,从移动中节省大量时间。
1.让手指保持在本位行上
-
Vim针对盲打进行了优化,推荐使用h、j、k、l键代替光标键,以保持手指在本位行上。
初学者可以通过设置.vimrc文件
" Try to prevent bad habits like using the arrow keys for movement. This is
" not the only possible bad habit. For example, holding down the h/j/k/l keys
" for movement, rather than using more efficient movement commands, is also a
" bad habit. The former is enforceable through a .vimrc, while we don't know
" how to prevent the latter.
" Do this in normal mode...
nnoremap <Left> :echoe "Use h"<CR>
nnoremap <Right> :echoe "Use l"<CR>
nnoremap <Up> :echoe "Use k"<CR>
nnoremap <Down> :echoe "Use j"<CR>
" ...and in insert mode
inoremap <Left> <ESC>:echoe "Use h"<CR>
inoremap <Right> <ESC>:echoe "Use l"<CR>
inoremap <Up> <ESC>:echoe "Use k"<CR>
inoremap <Down> <ESC>:echoe "Use j"<CR>
将以上片段写入linux的~/.vimrc
或者windows系统下的C:\Users\<username>\.vimrc
,便可以实现屏蔽键盘传统利用上下左右键进行光标移动的习惯。从而训练自己尽快适应vim的移动方式
2.区分实际行与屏幕行
-
Vim区分实际行和屏幕行,其中j、k移动实际行,gj、gk移动屏幕行。
例如有一段特别长的代码,如果使用j则会直接跳到实际对应的下一行。
此时我们想要修改行中内容便极其不方便,但是使用gj便可以按照分行进行跳转
这里使用gj便会跳到第二行开头的“数”部分,而不是下一实际行
-
动作命令如0、^、$、g$等用于移动到行首、第一个非空白字符、行尾和屏幕行的对应位置。
3.基于单词移动
-
Vim提供基于单词的动作命令,如w、b、e、ge,用于快速移动光标。w和b命令移动到单词的开头,e和ge移动到单词或字串的结尾。
4.对字符进行查找
-
f{char}命令在当前行内查找字符并移动光标,;命令重复上次的查找,,命令反向查找。
在此行中输入fo会跳转至don,输入;会跳转至to,再输入,又会跳转到don
-
F{char}、t{char}、T{char}命令用于在当前行内反向查找或查找至字符前或后。
5.通过查找进行移动
-
查找命令
/<content>
可以跨行查找文本,n和N命令用于在查找结果间跳转。
6.遍历跳转列表
-
Vim记录每次跳转的位置,<C-o>和<C-i>命令可以在跳转位置间后退和前进。
-
单独使用",也可以实现跳转回上一次跳转的位置(常用于gg到文件首添加头文件后,用"返回原来编辑位置)
7.遍历改变列表
-
Vim记录每次文档修改的位置,g;和g,命令可以在修改位置间后退和前进。(注意此处位置单独记忆,也就是说如果修改A,再修改B。那么第一次g;会回到B,之后移动而不修改,再使用g;会回到A而非B)
8.用全局位置标记在文件间快速跳转(重要)
-
在 Vim 中,全局位置标记是一种非常有用的功能,它允许你在不同的文件之间快速跳转。这种标记实际上是书签的一种形式,你可以在某个文件的特定位置设置一个标记,然后随时跳转回这个位置。这对于需要在多个文件之间频繁切换的编辑任务来说尤其有用。
8.1 如何设置全局位置标记
要设置一个全局位置标记,你可以使用
m
命令后跟你想要用来表示该标记的字母。如果你使用的是小写字母,那么这个标记将只在当前的缓冲区(文件)内有效。如果你使用的是大写字母,那么这个标记将是一个全局标记,这意味着你可以在任何其他文件中跳转回这个位置。例如,如果你想在当前文件的当前位置设置一个全局标记,你可以按以下步骤操作:
mM
这将在当前位置设置一个名为
M
的全局标记。8.2 如何跳转到全局位置标记
一旦设置了全局位置标记,你可以使用
'
(单引号)后跟你设置的标记字母快速跳转回该位置。例如,如果你之前设置了名为M
的标记,你可以使用以下命令跳转回那个位置:'M
这将把你的光标移动到之前设置全局标记
M
的位置。8.3 全局位置标记的自动保存
全局位置标记在 Vim 会话之间是持久的,这意味着即使你关闭 Vim 并重新打开,这些标记仍然存在。这得益于 Vim 的
viminfo
功能,它允许你在 Vim 会话之间保存一些信息,包括全局位置标记。你可以通过设置viminfo
选项来控制哪些信息被保存,例如::set viminfo='100,<50,s10,h
这个设置意味着 Vim 将保存最多100个文件的标记,最后访问的50个文件,以及在插入模式下输入的最多10行文本。
8.4 使用全局位置标记的好处
在多个文件中工作时设置标记:当你在处理多个文件时,可以在每个文件的关键位置设置全局标记,这样你可以快速在这些文件间切换。在复杂的项目中导航:在大型项目中,你可以在不同文件的重要函数或代码段设置标记,以便于快速导航。
最后
Tips:
新手一枚,如果觉得有疑问可以私信询问!
如果上述文章内容有讲得不正确或者不清楚的地方,欢迎留言评论区或者私信!
最后,能给我一个小小的赞或者关注吗😘