编辑器之神 -- VIM

早就听说VIM的强大,今天来试用了一下,果然百闻不如一用,哈哈,下面来介绍一下VIM的使用吧


以下指令是GVIM的,是Vim的Windows版,和Linux的Vim有些出入,大同小异

 VIM默认的是指令模式,要切换插入模式按 i 或 a,如果要再切换到指令模式按 Esc 或 Ctrl+[


-------------常用快捷键-----------------------

:e 打开文件
:w 保存文件 可选参数(文件名),第一次保存的时候必须带文件名,比如:w D:/jackysong.txt
:sav 另存文件 可选参数(文件名)


:sy on 开启语法高亮
:set go= 隐藏菜单栏和工具栏

:color evening 背景色变黑,也可以用其他颜色
:tabnew d:\test.txt(文件路径) 以新选项卡方式打开文件
hjkl 方向
h 向左
j  向下
k 向上
l  向右
v 可视
shift+4 行尾
shift+6 行首
ctrl+d  下一页
ctrl+u  上一页
u        撤销,类似windows的undo
ctrl+r  恢复:类似windows的redo
i 插入字符
a 追加字符
b 前一个单词
w 后一个单词
gg 回到文档最前端
c 改变字符
y 复制字符
yy 复制整行字符
p 粘贴字符
Y$ 复制到行尾
x 剪切
U 转成大写
u 转成小写
dd 删除一行
n dd 删除n行
d0         表示删除从当前光标到光标所在行首的内容.
y$         表示拷贝从当前光标到光标所在行尾的内容.
d$         表示删除从当前光标到光标所在行尾的内容.
yfa        表示拷贝从当前光标到光标后面的第一个a字符之间的内容.
dfa        表示删除从当前光标到光标后面的第一个a字符之间的内容.

 
-----------------查找快捷键-----------------
/+查找内容   查找字符串
n  匹配字符串的前一项
N  匹配字符串的后一项
?+查找内容   向后查找
F<字符> 匹配查找到的字符串前面的字符
f<字符> 匹配查找到的字符串后面的字符
以下两个是针对f/F<字符>后的前后项
, 匹配字符的上一匹配项
; 匹配字符的下一匹配项
%s/查找内容/替换内容/g   从全局来替换所有匹配字符串,不加g的话就替换第一个

 


再看几个搜索替换的实用例子。
1:去掉所有的行尾空格:“:%s/\s\+$//”。
“%”表示在整个文件范围内进行替换,“\s”表示空白字符(空格和制表符),“\+”对前面的字符匹配一次或多次(越多越好),“$”匹配行尾(使用“\$”表示单纯的“$”字符);被替换的内容为空;由于一行最多只需替换一次,不需要特殊标志。这个还是比较简单的。

2:去掉所有的空白行:“:%s/\(\s*\n\)\+/\r/”。
这回多了“\(”、“\)”、“\n”、“\r”和“*”。“*”代表对前面的字符(此处为“\s”)匹配零次或多次(越多越好;使用“\*”表示单纯的“*”字符),“\n”代表换行
符,“\r”代表回车符,“\(”和“\)”对表达式进行分组,使其被视作一个不可分割的整体。因此,这个表达式的完整意义是,把连续的换行符(包含换行符前面可能有的连续空白字符)替换成为一个单个的换行符。唯一很特殊的地方是,在模式中使用的是“\n”,而被替换的内容中却不能使用“\n”,而只能使用“\r”。原因是历史造成的,详情如果有兴趣的话可以查看“:help NL-used-for-Nul”。

3:去掉所有的“//”注释:“:%s!\s*//.*!!”。
首先可以注意到,这儿分隔符改用了“!”,原因是在模式或字符串部分使用了“/”字符,不换用其他分隔符的话就得在每次使用“/”字符本身时写成“\/”,上面的命令得写成“:%s/\s*\/\/.*//”,可读性较低。命令本身倒是相当简单,用过正则表达式的人估计都知道“.”匹配表示除换行符之外的任何字符吧。

4:去掉所有的“/* */”注释:“:%s!\s*/\*\_.\{-}\*/\s*! !g”。
这个略有点复杂了,用到了几个不太常用的 Vim 正则表达式特性。“\_.”匹配包含换行在内的所有字符;“\{-}”表示前一个字符可出现零次或多次,
但在整个正则表达式可以匹配成功的前提下,匹配的字符数越少越好;标志“g”表示一行里可以匹配和替换多次。替换的结果是个空格的目的是保证像“int/* space not necessary around comments */
main()”这样的表达式在替换之后仍然是合法的。


-----------------列操作----------

ctrl+q按完之后,配合j,k键使用发挥其强大之处,选中相应列之后,按shift+i
接下来就选择在第一行进行插入操作,编辑完成后,按下Esc,那么你之前选中的列都会加上刚插入的字符
批量列删除的话,可以配合h,l键使用,选中后还是shift+i,然后按x或c
这个功能很强大,大大提高了我们的文本编辑效率。
posted @ 2010-01-30 22:49  songzibin  阅读(672)  评论(0编辑  收藏  举报