众所周知vim的学习曲线很陡,但是正因为陡,所以学成之后不仅可以装B,还可以让你没有女朋友。 我无时无刻不在装B的道路上,加上vim特性多的罄竹难书,就像那天在freenode上#vim里的某个家伙说的, “我TMD已经用了3年vim,现在才知道还有这功能,vim界真是每天都有新鲜事啊”——哥自然要写点小众的 东西进一步提升B格。
常用的光标移动功能
h
、j
、k
、l
这些基本功就不说了,另外像w
、e
这种基于单词的移动方式我自己很少用,甚至
不明白在f
命令存在的情况下它们的存在还有什么意义。其实vim(和任何文本编辑器)里的光标移动无
非两种:纵向的和横向的。对纵向移动,numbers插件加上{行数}j
、{行数}k
或者直接
用/
、?
命令搜到想去的那行都是比较快的;而对横向移动,大多数情况下我都用f{字符}
或者
t{字符}
(当然还有F
和T
)直接跳,另外一行里有几个相同字符的时候,可以直接用;
命令重复跳
转,或者在F
命令前加次数也行。
还有,在很久以前不知道从什么地方抄来的:
1 2 |
|
^
和$
分别是跳转到行首和行尾,但是这两个字符的位置……虽然我用的是HHKB Pro 2 PD-KB400B,
按起来还是挺别扭的,所以投机取巧地映射为上面那两个键,效果拔群。
快速编辑
说实话用vim就像玩轮滑,会玩的比走路快,还可以玩玩平花、高空动作,不会玩的是在自杀。不过话说 回来很多高手都是在屡次自杀未遂之后练成的,所以以下内容只是我的自杀记录而已,不一定合所有人 的胃口。
I
、A
和D
应该地球人都知道,不用多说。我自己常用的还有i
后缀和Visual Block模式。
i
后缀:当光标在一对括号(()
)中间时,输入ci(
可以马上替换掉括号内的内容,这招对[]
、
{}
和<>
也适用。把i
换成a
,可以连外面的括号也一起替换掉。i
和a
也可以跟在d
命令后面,
效果是只删除相应区域的内容,不进入Insert(不好意思中文不会写)模式。这个功能还可以识别
html和xml里的标签(tag),cit
可以替换标签中的内容,dat
则是删除整个标签,怎一个爽字了得。
Visual Block:Normal模式下输入<C-v>
会进入这个模式,可以选择文本块,然后用I
命令可以
在文本块前面插入内容,这在需要往每行的固定位置插入或者删除内容的时候非常有用。
另外,其实还有一组强大到犯法的命令:q
录制操作和@
回放操作。这在你要手工处理格式化数据,又
不想写脚本的时候非常有用,不过严格来说不算编辑命令就是了。
窗口操作
Vim里的窗口操作全都是<C-w>
打头的,包括选择窗口。但是其实可以少敲一个键的,好像是很久很久以
前从这个人这里抄的:
1 2 3 4 |
|
复制操作
gvim下面操作X剪贴板的默认按键简直是让人按得惊心动魄,所以我是这样把它简化的:
1 2 3 4 5 |
|
这样当我输入<leader>yy
的时候,就能把整行复制到剪贴板里。
其他
其实也没有了,想到再来继续装。