1. 统计某个词出现次数
:%s/word//gn 替换命令,n表示只统计不替换
2. 筛选文件A里某些符合条件的行,写入到文件B中
1) 文件A中
:redir > ./B.txt
:silent g/条件/
:redir end
缺点:会将行号一并写入文件b中,文件开头会空两行
2) 文件A中
:let @a=""
:g/条件/y A
:new B.txt
定位到B.txt, 退到一般模式下,按
"ap
参考地址:
3. 顺序递增某个数字
Fun(1) = 0,
Fun(2) = 1,
....
顺序递增30行.
输入第一行后,normal模式:yy31p -> v31j后,然后可选择以下方法其一
1) :'<,'>s/Fun(\zs\d*\ze/\=line(".")-line("'<")+2
:'<,'>s/\zs\d*\ze$/\=line(".")-line("'<")+1
2) let n=1 | g/Fun(\zs\d*/s//\=n/ | let n+=1
let n=0 | g/\zs\d*$/s//\=n/ | let n+=1
参考地址:
vi/vim使用技巧: 替换的巧妙使用(1)
4. 批量行操作
1) 插入注释:ctrl+v(gvim下ctrl+q) -> hjkl(左下上右)选择插入位置 ->shift+i(I)输入所需文字 -> ESC
取消注释:ctrl+v(gvim下ctrl+q) -> hjkl(左下上右)选择删除位置 -> d -> ESC
2) 插入注释::1,10s/^/#/g
取消注释::1,10s/^#//g
3) //为注释符时,可以用#取代/的作用,就不需要转义
插入注释::1,10s#^#//#g
取消注释::1,10s#//##g
4) 删除空白行 :g/^$/d
删除包含空格的空行 :g/^\s*$/d
删除以空格或tab从开头到结尾的空行 :g/^[ |\t]*$/d
删除以#开头的行 :g/^#.*$/d 或 :%s/^#.*$\n//g
5) 行尾操作
gg -> ctrl+v/ctrl+q -> G -> $ -> 输入行尾要插入的内容 -> ESC
6) 宏录制
比如 有n行文字 Just a test. 要求把偶数行的a改成another
gg -> qm(记录操作过程到m寄存器中) -> j$ 移动到下一行行尾 -> b跳到要修改的单词位置 -> caw 删除单词并重新输入新单词
-> ESC -> j -> q(结束记录过程) -> normal状态下输入1000@m,重复操作记录
7) .命令重复最近一次的编辑操作
参考网址:
vim 删除以#开头的、 删除空白行、 加释
5. 删除重复行
如下几个方法都是必须先排序 :sort
1) :sor[t] ur /^/
2) :g/^\(.*\)$\n\1$/d
3) :g/\%(^\1$\n\)\@<=\(.*\)$/d
4) :g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d
5) :%s/^\(.*\)\(\n\1\)\+$/\1/g
参考地址:
vim删除重复行 (走过弯路的人血泪总结)
Vim 中的正则表达式
阅读(1112) | 评论(0) | 转发(0) |