经常处理文本以及经常需要写代码的人,都会有自己比较常用的编辑器,本人喜欢用Vim,理由就是Vim编辑器灵活,并且可以达到纯键盘操作,使用纯熟情况下,根本不需要鼠标操作,听起来是不是很酷的?不过别高兴太早,想达到那个境界必须的指令是需要学习+记忆+练习的。总结指令如下:
1、(motion)
fx 向后 移动到搜索字母上,x 可以是任意一个字母
tx 向后 移到搜索字母的左边 (这真的很有用)
Fx 向前 移到搜索字母上
Tx 向前 移到搜索字母的左边
; 重复上面四种命令 ,也是重复命令 不过方向取反
. 重复上一个操作
以上命令都是在本行移动
,. 当前行 ,%当前文件
gd to definition of the current word
w:上一个词。b:下一个词。(以nonword的特殊字符作为word的边界,如.,-等
W 上一个词 B 下一个词 (以空格作为word的边界)又称长单词
e: 下个词的最后一个字母 ge 上个词的最后一个字母
0:移动光标到当前行首。
gm 移动到行正中
$:移动光标到行尾。
2$ 下一行行尾
^:移动光标到当前行的第一个字母位置。
) ( 移动光标到上/下一个句子。
{ } pre/next paragraph
[{ ]} begin/end of block
[[ ][ 代码块的开头和结尾 假设{和}位于第一列的情况下成立
[( ]) 括号范围内前后移动
gD 跳转到局部变量的定义处
gg:到文件首 G:到文件尾
numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)
H:移动光标到屏幕上面M:移动光标到屏幕中间L:移动光标到屏幕下面 当前屏幕的操作
nH 光标到当前屏幕的第n行
nL 光标到当前屏幕的倒数第n行
zt scroll to top
zz scroll to middle 有用 把当前编辑行置于屏幕中间
zb scroll to bottom
ctr+B/b ctr+F/f pre/next page
ctr+U/u ctr+D/d pre/next half page
ctr+e ctr+y 上/下滚一行
*:读取光标处的单词,并且移动光标到它再次出现的地方。
#:读取光标处的单词,并且移动光标到它上次出现的地方。
g* 它不完全匹配光标所在处的单词,而是匹配包含该单词的所有字符串
g# 它不完全匹配光标所在处的单词,而是匹配包含该单词的所有字符串
2.searching
+ - 下一行的开始 上一行的开始(非空)
% matching parenthesis
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n
?text:和上面类似,但是是反方向。
/搜索完整的text单词
/ab{3,5} 对b匹配3-5次
{0,1}匹配0或1次 跟=一样
{0,} 匹配0次或多次 跟*一样
{1,} 匹配1次或多次 跟+一样
{3} 匹配3次
/ab{-1,3} 将会匹配abbb中的ab 意思是尽可能的避免重复
/a.{-}b 其中{-}匹配前面的项一次或0次 尽可能地少 一般这个模式本身只可能匹配到0次 因此 这个命令 只会匹配到axbxb中的axb
/a.*b 则会尽可能多的匹配 因而对于axbxb 会匹配整个的axbxb
/the word 匹配以the结束而且下一行以word开始的行
\_s 匹配空格或断行
/the\_sword the 与word 之间有空格或断行
/du{3}d{3} 匹配一个数字 三个大写字母 单个数字
/joe/s-2 所查找之处往前两个字符
搜索完按n重复上次查找 N逆向上次查找
3n 向下搜索第三个
ma`a mark/jump to a 'a 转到标记所在的行头(行头)
`.: