vi/vim
命令手册(高级篇)
多文件编辑
如果当前行还没有保存(并且 autowrite 未设置),则不能使用:e、:n和:rew命令。命令后面的!使得安全特性无效。
命令
|
功能
|
:e foo |
停止对当前文件的编辑,开始编辑foo文件
|
:e! foo |
同上,但是取消对当前文件的修改
|
:e!
|
装入当前文件的最近保存的内容
|
[Ctrl+^]
|
返回到最近编辑的文件
|
:n
|
编辑下一个文件(当用vi同时编辑多个文件时)
|
:set autowrite(aw) |
在用:n切换到下一个文件之前自动保存当前文件
|
:rew
|
返回到文件列表的第一个文件(当用vi同时编辑多个文件时)
|
:r foo |
把foo文件的内容插入当前行的下面
|
多窗口(
vim
)
命令
|
功能
|
:sq
|
把当前窗口拆分为两个
|
:new
|
打开一个新的空白窗口
|
:[Ctrl+w][Ctrl+w]
|
在窗口之间切换
|
:on
|
把当前窗口变为唯一的窗口
|
:q
|
退出当前窗口
|
:qa
|
退出所有窗口
|
:xa
|
保存并退出全部窗口
|
[Ctrl]+
|
增大窗口尺寸
|
[Ctrl]-
|
减小窗口尺寸
|
搜索与重复
搜索模式pat可以时一个字符串,也可以是一个正则表达式。vi使用一套专用的字符序列来执行一行内的搜索。
命令
|
功能
|
/pat
|
向前搜索pat
|
?pat
|
向后搜索pat
|
/printf
|
向前搜索printf
|
?[0-0]$
|
向后搜索行尾的数字
|
/^#
|
向前搜索行首的#
|
n
|
按上次搜索方向重复搜索
|
N
|
按与前次搜索的相反方向重复搜索
|
:set wrapscan(ws) |
继续搜索直至达到文件尾
|
:set ignorecase(ic) |
搜索时不区分大小写
|
:set magic |
保留正则表达式字符的意义
|
fc
|
在当前行向前搜索字符c
|
Fc
|
在当前行向后搜索字符c
|
;
|
在当前行重复上次向前搜索
|
,
|
在当前行重复上次逆向搜索
|
替换
源模式s1也可以是正则表达式。使用欧冠地址时,"."代表当前行,"$"代表最后一行,"1,$"代表整个文件。
命令
|
功能
|
:.s/s1/s2
|
把当前行中第一次出现的s1替换为s2
|
:1,$s/s1/s2
|
把整个文件里的s1替换为s2
|
:1,$s/echo/printf/g
|
把全部的echo替换为printf
|
:1,$s/s1/s2/gc
|
按交互方式把全部s1替换为s2
|
:1,$s/#//g
|
删除文件中所有的“#”
|
:3,10s/^/#/g
|
在3至10行的行首插入“#”
|
:$s/$/;/
|
在最后一行的行尾插入“;”
|
:1,$s/s1/s2/g
|
把所有的s1替换为s2
|
:1,$s/HEAD/<&>/g
|
把所有的HEAD替换为<HEAD>
|
标志与书签
命令
|
功能
|
ma
|
设置一个标签a
|
'a
|
移动到标签a
|
"
|
在当前标志与前一个标志位置之间切换
|
重做与恢复
命令
|
功能
| |
.
|
重复上次命令
| |
u
|
取消上次的编辑命令(在vim里取消所有以前的命令)
| |
[Ctrl+r]
|
重做上次取消的操作(只限于vim)
| |
U
|
取消所有对当前行的操作
| |
"4p
|
从缓冲区中恢复第4次最近的删除操作
|
缩写表示
命令
|
功能
|
:ab name stg |
把name缩写为stg
|
:unab stg |
删除stg缩写
|
:ab
|
列出所有的缩写
|
映射键
命令
|
功能
|
:map key commands |
把key映射到commands
|
:map! key commands |
在输入模式下把key映射到commands
|
:unmap key |
取消命令模式下的key映射
|
:unmap! key |
取消输入模式下的key映射
|
:map
|
显示命令模式下所有的映射
|
:map!
|
显示输入模式下的所有映射
|
与
UNIX
的接口命令
命令
|
功能
|
:!cmd
|
执行UNIX的cmd命令
|
:!%
|
把当前文件作为shell或perl脚本执行
|
:r !cmd |
把cmd命令的结果插入到当前行的下面
|
:r !head -n 3 foo |
把foo文件前三行内容插入到当前行的下面
|
sh
| 暂时退出UNIX shell 环境 |
[Ctrl+z]
|
暂停编辑(用fg命令可以返回vi编辑器)
|
:!cc%
|
编译正在编辑的C程序
|
:!javac % |
编译正在编辑的Java程序
|
转载于:https://blog.51cto.com/tianya23/309391