Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138721
  • 博文数量: 52
  • 博客积分: 863
  • 博客等级: 准尉
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-24 17:54
个人简介

没有人生,没有爱情!

文章分类

全部博文(52)

文章存档

2014年(9)

2013年(20)

2012年(17)

2011年(6)

我的朋友

分类: 系统运维

2012-03-02 11:39:08

vi/vim 命令手册(高级篇)  

2010-05-27 10:08:00|  分类: 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替换为
标志与书签
命令功能
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程序
阅读(1054) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~