根据文件内容查找文件:
vimgrep
1
2
3
4:vimgrep /Exception/ *.log #查找目录下 所有含Exception 的 .log文件
:vimgrep /Exception/ */*.log # 遍历子目录
#搜索到的文件列表会加入到quickfix中去,执行:
:copen排序,删除重复行
1
2
3
4:sort //可以直接排序,这个太好用了
:g/^\(.*\)$\n\1$/d #去除重复行
:g/\%(^\1$\n\)\@<=\(.*\)$/d #功能同上,也是去除重复行
:g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d #功能同上,也是去除重复行查找忽略大小写
1
2:set ic #忽略大小写 set ignorecase
:set noic #不忽略大小写标记复制、粘贴
1
2"ay
"ap数字递增
1
2
3插入模式下:Ctrl+r ===> =(等号) ===> range(1,100) 回车
# 格式化补齐 4 位,0001,0002....
=map(range(1,100), 'printf(''%04d'', v:val)')多文件内容查找替换
1
2:args *.jsp #第一步:择定范围 *.jsp
:argdo %s#<title>光大保德信</title>#<title>光大保德信基金</title>#gc|update #替换内容“|update”执行替换后并且存盘。删除/保留匹配的行
1
2:g/pattern/d # 用于删除带有指定搜索内容的行
:g!/pattern/d 用于删除不带指定搜索内容的行删除空白行
1
:g/^\s*$/d
html标签选中、内容选中
1
2vat #整个标签
vit #标签的内容正则替换
1
2
3
4
5:%s#("\([A-Z_]\+\)")#'\1'#g
-- 功能将 ("BIT") 替换为 'BIT',将两边的括号去除了,将双引号改为了单引号
-- %s 表示在所有行中搜索替换,若要指定范围可以写成:1,10s、10s、1,$s 分别表示:1-10行、只在第10行、1-最后一行
-- # 跟在上面的s后面,表示使用其作为分隔符,因为/分隔符经常会用于替换内容,使用到就得转义比较麻烦
-- \(、\)、\+、\1 这些是正则表达式的内容,前面两个表示分组捕获,\+ 表示表达式的匹配次数还有*、?等等,\1 则是取前面捕获的第一个分组的内容粘贴时取消小自动缩进
1
2:set paste # 开启paste模式
:set nopaste # 粘贴完毕关闭paste模式BOM标记相关
1
2
3
4:set nobomb #去掉BOM标记
:set bomb #加上BOM标记
:set bomb? # 查询当前是否有BOM标记
:%!xxd #以16进制模式打开文件,可以看到具体的大端标记或小端标记返回符合查找条件的个数(下面返回yes出现的次数)
1
:%s/yes//gn
大小写替换 (动作,操作符,文本对象)
1
2
3
4
5
6
7~ # swap case: Upercase/lowercase
U # Upcase
u # lowercase
gU$ # go Upcase line end
gu$ # go lowercase line end
gUU # 类似 dd, UU, uu, ~~ 都具有“双击”整行生效的特性
# all operation see: :h operation