我还是推荐所有刚入门vim的朋友先去用vimtutor练习,然后去看vim的帮助文档,写的十分仔细,而且可以马上实战,见效很快,以下的很多示意图都是vim帮助文档里的例子,我觉得很好,就拿出来了。
vim之所以高效的原因是因为它有一套高效的移动机制,作为学vim,可以说这一部分你不得不看,这可以大大减少了文章内移动的击键数,而且脱离的鼠标的束缚,让双手基本不用离开键盘操作。
一、VIM的基本移动
vim的基本操作无非是上(j)下(k)左(h)右(l) ,这个大家很熟悉了,当然,键盘的上下左右也是可以用的,但是相信我,等你用惯它自己这个,你会离不开它
j h l k
vim的所有指令基本都可以加数字,表示执行次数,也就是说,移动指令也支持:
10h 左移动10格 20j 上移20行
二、横向特殊移动
vim的高效从这里才正式体现:
1、首尾移动 ☆☆☆☆
0 移动至行第一个字符 ^ 移动至行第一个非空白字符 $ 移动至行最后一个字符 ^ <------------ .....This is a line with example text <----------------- ---------------> 0 $ (这里 "....." 表示空白字符)
以上命令比较重要,另外,如果你的文字区显示得比较小,一行会被折叠成几行,你可能会用到以下的命令,以下的命令全是以屏幕为参考而不是实际的行
g0 至屏幕行第一个字符 (当行回绕时和 "0" 不同) g^ 至屏幕行第一个非空白字符 (当行回绕时和 "^" 不同) g$ 至屏幕行最后一个字符 (当行回绕时和 "$" 不同) gm 至屏幕行中
2、词移动☆☆
w 跳到下个单词开头 b 向前跳到上个单词开头 e 跳到下个单词词尾 ge 向前跳到上个单词词尾 b b b 2b b <----<--<-<---------<--- This is a line with example text --->-->->---------------------> w w w 3w This is a line with example text ~ <-<--- -----> ----> ge ge e e
同样,这个里面也有几个其他命令,上面命令的大写,跳过的单位均是以空白字符分割的字串,很好记
W 跳到下个字串(以空白字符分割) B 跳到上个字串(以空白字符分割) E 跳到下个字串尾部(以空白字符分割) gE 向前跳到上个字串词尾
3、查找移动☆☆☆
f 向下查找某个字母出现的位置 F 向上查找某个字母出现的位置 t 向下查找某个字母出现的位置前 T 向上查找某个字母出现的位置前 Fh <--------------------- To err is human. To really foul up you need a computer. -------->-------------------> fh fy To err is human. To really foul up you need a computer. <------------ ----------------> Th tn
这里就一个提示,这里可以用' ; ' 进行重复操作,比如:按下fe,跳到err的e,再次按下; ,跳到really的e, 再次按下; 跳到need的e
4、匹配移动☆☆☆☆
匹配移动在代码块中使用非常多,而且效率特别高,用这个命令可以轻松的在(),{ } [ ] 中跳转,它帮你找匹配的括号,方便的很
% 跳到匹配的括号 (这个命令也可适用于 [] 和 {}。(可用 'matchpairs' 选项定义)) % <-----> if (a == (b * c) / d) ~ <----------------> %
注意:光标不在一个有用的字符上,"%" 会先 正向 查找找到一个,再按一次会移动到它的匹配处(比如在下面光标在=处,首先匹配的是(b * c)的左括号,再是它的右括号
if (a == (b * c) / d) ~ +--->---> %
三、纵向特殊移动
1、全局跳转☆☆☆☆
gg 跳到文件首 G 跳到文件尾 NG 跳到特定N行(代码调试常用) N% 跳到大约N%的位置
2、视野内移动☆☆☆
H 跳到视野内顶部 M 跳到视野内中间 L 跳到视野内下面 +-------------------------------+ H --> | text sample text | | sample text | | text sample text | | sample text | M --> | text sample text | | sample text | | text sample text | | sample text | L --> | text sample text | +-------------------------------+
四、附加:其他操作
1、滚屏
滚屏主要是阅读文档有用,有滚半屏,一屏,一行(这个就不说了,意义不大)
CTRL-U 向上滚动半屏,文字下移动 UP CTRL-D 向下滚动半屏,文字上移动 DOWN CTRL-B 向后滚动一屏,文字下移动 Backward CTRL-F 向前滚动一屏 ,文字上移动 Forward
2、不滚屏移动光标
移动中的一个常见问题是,当你用 "j" 向下移动的时候,你的光标会处于屏幕的底部,你可能希望,光标所在行处于屏幕的中间。这可以通过 "zz" 命令实现。
zz 光标移动到屏幕中间 zt 光标移动到屏幕顶部 (top) zb 光标移动到屏幕底部(bottom) +------------------+ +------------------+ | some text | | some text | | some text | | some text | | some text | | some text | | some text | zz -->| line with cursor | | some text | | some text | | some text | | some text | | line with cursor | | some text | +------------------+ +------------------+