1、查找、替换
替换命令:[addr]s/源字符串/目的字符串/[option]
[addr] 表示检索范围,省略时表示当前行。
如:
“1,20” :表示从第1行到20行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s : 表示替换操作
[option] : 表示操作类型
如:g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
省略option时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
下面是一些例子:
#将That or this 换成 This or that :%s/\(That\) or \(this\)/\u\2 or \l\1/ —- #将句尾的child换成children :%s/child\([ ,.;!:?]\)/children\1/g
2、常用快捷键
F9 当前目录下生成tags
F12 当前目录下生成cscope数据库
F11 全屏切换
Shift+F11 鼠标模式切换(便于去掉行号,用鼠标复制内容到剪贴板)
Ctrl+] 跳到函数实现(鼠标双击也可以)
Ctrl+T 跳回上一次位置
:ta func 跳转到func函数
Ctrl+WW 在窗口间切换
:sp filename 打开另外一个文件
F2 在左边打开类型、函数列表(ctags)
F3 在右边打开选择文件窗口(按F3退出)(NERD)
F4 在下方打开最近访问文件窗口(按q退出)(MRU)
F5 符号搜索(按两次F5退出)
,sc 跳转到当前函数被调用处(cscope)
,be 打开buffer浏览器,查看当前已打开的文件
,zz 当前窗口最大化
:!cmd VI中执行shell命令
zo 展开折叠的行
zc 折叠行
:wq 保存退出
gg 到达文章开头
G 到达文件结尾
v 进入Visual模式字选择
V 进入Visual模式行选择
Ctrl+v 进入Visual模式块选择
y 复制
p 粘贴
dd 删除行(保存到寄存器)
2dd 删除2行
x 删除字符
r<c> 当前字符替换为<c>,“<c>”可以是任意单个字符
dw 删除单词
2dw 删除2个单词
Ctrl+Z 后台
fg 前台
jobs 查看后台任务
3、格式 (format)
dos/windows跟unix/linux对于文件的结束是不一样的。vim可以直接设定/更改格式
用纸令:
set fileformats=unix,dos 可以改变文件的格式 (change format)
:set ff=unix -> 设定文件成unix格式 (set file in unix format)
:set ff=dos -> 设定文件成dos格式 (set file in dos format)
:set ff? -> 检查当前文件格式 (check the format of current file)
如果改变格式,直接:w存档就会存成新的格式了。
4、加密 (encryption)
vim可以给文件加密码
vim -x 文件名 (filename) -> 输入2次密码,保存后文件每次都会要密码才能进入 (encrypt the file with password)
vim 处理加密文件的时候,并不会作密码验证,也就是说,当你打开文件的时候,vim不管你输入的密码是否正确,直接用密码对本文进行解密。如果密码错误,你看 到的就会是乱码,而不会提醒你密码错误(这样增加了安全性,没有地方可以得知密码是否正确)当然了,如果用一个够快的机器作穷举破解,vim还是可以揭开 的
5、vim 语法显示 (syntax)
:syntax enable -> 打开语法的颜色显示 (turn on syntax color)
:syntax clear -> 关闭语法颜色 (remove syntax color)
:syntax off -> 完全关闭全部语法功能 (turn off syntax)
:syntax manual -> 手动设定语法 (set the syntax manual, when need syntax use :set syntax=ON)
5、输入特殊字符 (special character)
CTRL-v 编码就可以了
例如 CTRL-v 273 -> ÿ 得到 ÿ
6、二进 制文件 (binary file)
vim可以显示,编辑2进位文件
vim -b datafile
:set display=uhex -> 这样会以uhex显示。用来显示一些无法显示的字符(控制字符之类)(display in uhex play non-display char)
:%!xxd -> 更改当前文件显示为2进位 (change display to binary)
:%!xxd -r -> 更改二进位为text格式 (convert back to text)
7、自动完成 (auto-completion)
vim本身有自动完成功能(这里不是说ctag,而是vim内建的)
CTRL-p -> 向后搜索自动完成 (search backward)
CTRL-n -> 向前搜索自动完成 (search forward)
CTRL-x+CTRL-o -> 代码自动补全 (code completion)
8、自动备份 (backup)
vim可以帮你自动备份文件(储存的时候,之前的文件备份出来)
:set backup -> 开启备份,内建设定备份文件的名字是 源文件名加一个 ‘~’ (enable backup default filename+~)
:set backupext=.bak -> 设定备份文件名为源文件名.bak (change backup as filename.bak)
自动备份有个问题就是,如果你多次储存一个文件,那么这个你的备份文件会被不断覆盖,你只能有最后一次存文件之前的那个备份。没关系,vim还提 供了patchmode,这个会把你第一次的原始文件备份下来,不会改动
:set patchmode=.orig -> 保存原始文件为 文件名.orig (keep orignal file as filename.orig)
9、总结
vim的使用技巧,只有在实际使用中慢慢总结、熟悉,另外可以参考酷壳大叔的几篇vim的文章。另外,有时间还要总结一下linux下grep/awk/sed的使用技巧,在linux环境下处理文本,这几个工具放在一起,很方便而且效率很高。