Vim最大的特征与最大的困难就是纯键盘操作,所以快速移动光标是Vim的最基本技能。我接触Vim也有四个年头了, 曾经由于项目重构操作频繁而切换到了WebStorm,最近又由WebStorm 切换到了 Vim。 始终感觉光标移动是最大的痛处,同时又能从键盘操作获得极大的快乐。
下文便开始介绍那些常用的快捷键,先上图!
最近感受光标移动技能又一次升级了!来回顾一下我的Vim光标升级过程吧:
- 只会上下左右和插入(
h
,j
,k
,l
,i
)。所有操作都由这5个键来完成。这时候用Vim的键盘声因简直像打Dota一样。我大概持续了一个月。 - 学会了单词移动和文件头尾(
w
,b
,$
,^
,gg
,G
)。这时编辑起来不那么费力了,看起来还可以。这一阶段持续了两年…这两年里我学会了正则查找和替换(/xx
,%s/xx/xx/g
)。 - 能够熟练地滚屏(
zz
,zt
,zb
,c-f
,c-b
)、标识符间来回移动、按屏幕移动光标(H
,L
,M
)、窗格间移动(c-w hjkl
)。这是最近一年的水平,同时还学会了宏录制、列编辑等。 - 下一阶段:熟悉段落与单词间跳转,熟悉数字的使用。比如对于
func(args, count)
,我要记住从行首到第二个参数的快捷键是4w
。
如果你还没有接触过Vim,可以从这里开始。
字符移动
在Vim的Normal模式里(如果你在Visual模式或者Insert模式,可以按<Esc>
回到Normal模式),
通过h
, j
, k
, l
, i
来进行左下上右的光标移动。
在Vim中多数操作都支持数字前缀,比如10j
可以向下移动10行。
单词移动
多数情况下单词移动比字符移动更加高效。
w
移动光标到下一个单词的词首,b
移动光标到上一个单词的词首;e
移动光标到下一个单词的结尾,ge
移动光标到上一个单词的结尾。
单词移动同样支持数字前缀,比如
4w
可以向后移动4个单词。连续的标点符号算一个单词。有趣的是,
W
,B
,E
具有同样的功能,只不过它是用空格来分隔单词的,可以跳地更远~
^
到行首,$
到行尾。
拷贝一行:
^y$
。
相对屏幕移动
通过c-f
向下翻页,c-b
向上翻页;c-e
逐行下滚,c-y
逐行上滚。这在几乎所有Unix软件中都是好使的,比如man
和less
。
H
可以移动到屏幕的首行,L
到屏幕尾行,M
到屏幕中间。
zt
可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。
zz
将当前行移到屏幕中部,zb
移到底部。
文件中移动
通过:10
可以直接移动光标到文件第10行。如果你看不到行号,可以:set number
。
gg
移到文件首行,G
移到尾行。
拷贝整个文件:
ggyG
。
/xx
可以查找某个单词xx
,n
查找下一个,N
查找上一个。
在光标跳转之后,可以通过c-o
返回上一个光标位置,c-i
跳到下一个光标位置。
?xx
可以反向查找,q/
,q?
可以列出查找历史。
窗格间移动
参考另一篇文章:Vim 多文件编辑。
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://harttle.land/2015/11/07/vim-cursor.html。学识粗浅写作仓促,如有错误辛苦评论或 邮件 指出。