1.替换时记录匹配(括号钱需加反斜杠,提取记录的匹配用\1,\2)

:.,$s/\(\$(ct_sdrr)\)/"\1"/gc

:s#\([^/]*.tgz\) &$#\1 \&\& tar -xvzf \1 \&#     #&在前不需要加反斜线转义,在后需要。

2.替换某一字符为换行符,在行末再加一换行符

:s/$/\r/g

:s/^/#/g 11     将光标移动到第二行,然后执行上面的命令,后面的【11】代表,执行这个命令,重复11次。

:2,12s/^/#/g

3.全选(命令行模式下使用)

ggVG

gg:让光标移动到首行,V进入可视化模式。G移动到最后一行

#全部替换大写 (both work)
ggVGU
:%s/[A-Z]/\U&/g
#全部替换小写
ggVGu
:%s/[A-Z]/\L&/g

4.统一行的长度(70为你想要的长度)

:set tw=70

gq

5.打开英语拼写检查(不同vim的mapleader不同,我的mapleader是“,”,所以这里用”,“)

,ec

Another way for checking the spell is add the following words to vimrc.

set spell spelllang=en_us
setlocal spell spelllang=en_us
highlight clear SpellBad
highlight SpellBad term=standout ctermfg=1 term=underline cterm=underline
highlight clear SpellCap
highlight SpellCap term=underline cterm=underline
highlight clear SpellRare
highlight SpellRare term=underline cterm=underline
highlight clear SpellLocal
highlight SpellLocal term=underline cterm=underline
#misspelled words will be labeled by underlying wavy line

Other commands useful for correcting wrong spelled words or record your new words are listsed below.

]s           到光标位置之后的错拼单词
[s           到光标位置之前的错拼单词
z=           对光标位置的单词进行建议修改
zg           把单词加入个人词表

6.vim统计某字符出现次数(char 为某字符)【n表示只匹配不替换】

:%s/char//gn

7.vim中保存一段内容

:1, 20 w! swap

8.ddp (交换两行代码) 和 xp (交换两个字母)

9.删除的时候使用f和t

f的本意是行查找,fa,就是从光标当前位置开始,在本行中,找到第一个字母a,和d结合起来以后,就非常方便了.

<?php function test_php($a,$b,$c)  {   return true; }>
删掉第一个参数,把光标定位在第一个$上,执行“df,”就可以了。

删掉前两个参数,把光标定位在第一个$上,执行“d2f,”就可以了。

删除后两个参数,把光标定位在第二个$上,执行“dt)”就可以了。[
t的作用同于f,只是t会停留在要查找的字符的前一个字符上]

10.使用如下命令给正在编辑的文件添加行号:

:%!cat -n 

11.颠倒整个文件中所有行的顺序:

:g/^/m0

12.Ctrl-A 可以将光标所在位置处的数字加一,Ctrl-X可以将光标所在位置处的数字减一。

13.关于undo和redo:

u 命令为取消上一个操作;
U 为取消当前行的所有操作,即恢复当前行到原始状态;
Ctrl-r/R 为重复刚刚取消的操作

14.vim中读入文件

:r foo.txt 将foo.txt插入到当前光标的位置

:0r foo.txt 将foo.txt插入到第一行之前

:r !ls 在当前光标处插入文件列表

:$r !pwd 在最后一行的下方插入当前路径

15.vim中删除重复的行

:g/^\(.*\)$\n\1$/d   #删除的是重复项的前面一项
:g/\%(^\1$\n\)\@<=\(.*\)$/d #删除的重复项的后面的内容
:sort u #delete deplicate lines

第二个命令的解释:

g//d <-- Delete the lines matching the regexp
\@<= <-- If the bit following matches, make sure the bit preceding this symbol directly precedes the match
\(.*\)$ <-- Match the line into subst register 1
\%( ) <--- Group without placing in a subst register.
^\1$\n <--- Match subst register 1 followed by end of line and the new line between the 2 lines

16.vim删除空行

:g/^\s*$/d

经实验,可以删除包括空白,Tab,空白和Tab交错的所有空行。

:g/^$/d  删除真空行

17.DOS-unix格式转换

vi filename 然后用命令 :set ff?
可以看到dos或unix的字样. 如果的确是dos格式的, 那么你可以用set ff=unix把它强制为unix格式的, 然后存盘退出. 再运行一遍看.

sed 's/^M//' filename > tmp_filename

特别说明:^M并不是按键shift + 6产生的^和字母M, 它是一个字符, 其ASCII是0x0D, 生成它的办法是先按CTRL+V, 然后再回车(或CTRL+M).

17.vim中打开或关闭拼写检查engspec

\ec \ee  

18.Case insensitive match or substitute in Vim

/\ccopyright
/copyright\c
:s/copy\c/copy/
:s/\ccopy/copy/
  1. vim使用模板
#在.vimrc中加入以下语句就可使用构建好的模板
autocmd BufNewFile *.sh 0r ~/.vim/skeleton/skeleton.sh
autocmd BufNewFile *.py 0r ~/.vim/skeleton/skeleton.py

20.

————————————–