vim 命令手册

vi/vim 命令手册

 

 

本手册介绍了 vi/vim 编辑器的主要功能。为了便于查找,这里一并给出了命令和它们的定制参数。在使用这个手册之前,必须注意以下几点:
   ●很多命令可以与重复因子一起使用(vi);
   ●vim(不是vi)把一个区域(region)定义为一个连续的文本块,许多命令与文本块有关;
    一个区域可以用v定义,后面跟一个光标移动命令;
   ●用[Ctrl+l]组合键可以清除并重画屏幕;
   ●:set命令用来定制编辑环境。

 


 
移动光标

 命令  功能
 h  光标左移
 l(或空格键)  光标右移
 k(或[Ctrl+p])  光标上移
 j(或[Ctrl+n])  光标下移
 [Ctrl+f]  向前翻页
 [Ctrl+b]  向后翻页
 [Ctrl+d]  向前翻半页
 [Ctrl+u]  向后翻半页
 1G  跳到文件首
 40G  跳到第40行
 G  跳到文件尾
 [Ctrl+g]  显示当前行号及文件的百分比
 :set number  显示所有带行号的行


 
在一行内移动光标
B、E和W命令的作用与b、e和w的作用一样,只是后者忽略了标点符号。

 命令  功能
 b  向后移动到单词首
 e  向前移动到单词尾
 w  向前移动到单词首
 0或|  移动到行首
 30|  移动到第30列
 ^  移动到本行的第一个单词的首字符
 $  移动到行尾


 
插入文本

 命令  功能
 i  在光标的左侧插入字符
 20i-[Esc]  插入20个连字符
 I  在行首插入字符
 [Ctrl+v][Ctrl+b]  插入[Ctrl+b]字符
 [Ctrl+v][Esc]  插入[Esc]字符
 a  在光标的右侧添加文本
 A  在行尾添加文本
 o  在当前行下面插入一空行
 O  在当前行上面插入一空行
 :set showmode  当vi处在输入模式下时显示提示信息
 :set sm  即时显示配对的)或}
 :set ts=n  把制表符设置为n(默认为8)
 :set ai  下一行从前一行的缩进位置开始


 
删除和移动文本

 命令  功能
 x  删除光标所在的字符
 6x  删除光标位置的字符以及右侧的5个字符
 X  删除前一个字符
 dd  删除当前行
 4dd  删除4行
 64dd  删除64行
 dw  删除一个单词
 d0  删除到行首
 d$  删除到行尾
 d  删除一个区域(只用于vim)
 p  把被剪切的文本粘贴到下面(整行)或右侧(部分行)
 P  把被剪切的文本粘贴到上面(整行)或左侧(部分行)
 "add  把当前行粘贴到缓冲区a里
 "ap  把缓冲区a里的内容粘贴到当前位置
 J  把当前行于下一行合并为一行
 xp  调换两个字符的位置


 
修改文本

 命令  功能
 rch  把光标位置的字符替换为ch
 R  替换光标右边的文本
 s  把光标所在的字符替换为任意个字符
 S  替换整行内容
 cw  修改一个单词
 c  修改区域里的文本(vim)
 ~  改变所扫描的或区域里的字母的大小写
 !tr'[a-z]''[A-Z]'  把区域里的字母转换为大写(vim)
 !tr'[A-Z]''[a-z]'  把区域里的字母转换为小写(vim)


 
复制文本

 命令 功能 
 yy  复制当前行
 6yy  复制六行
 yw  复制单词
 y  复制区域(vim)
 p  把复制的文本粘贴到右边或下面
 P  把复制的文本粘贴到左边或上面
 "ayy  把当前行复制到缓冲区a里
 "ap  恢复缓冲区a里的内容


 
启动编辑器

 命令 功能
 vi +100 foo  打开文件foo并把光标定位在100行
 vi +/pat foo  打开文件foo并把光标定位在pat第一次出现的行
 vi +foo  打开文件foo,把光标定位在文件尾
 vi foo1 foo2 ...  打开文件foo1,用n切换到foo2等
 vi -r foo  把交换文件里的内容恢复到缓冲区里
 vi -R foo  一只读模式打开foo文件


 
保存与退出

 命令  功能
 :w  保存文件并继续编辑
 :w bar  同微软Windows操作系统中的“另存为……”
 :w! bar  同上,但是覆盖现存的文件bar
 :n1,n2w foo  把n1到n2之间的行保存到文件foo
 :n1,n2w>>foo  把n1到n2之间的行添加到foo文件尾
 :.w foo  把当前行保存到文件foo
 :$w foo  把最后一行保存到文件foo
 :x  保存并退出编辑器
 :wq  同上
 :q  如果文件的内容没有变化则退出编辑器
 :q!  放弃修改并退出编辑器


 
多文件编辑
如果当前行还没有保存(并且 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]  在窗口之间切换 Ctrl+w+R 将窗口移到右边 Ctrl+w+L 将窗口移到左边
 :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程序


下面为自己加的东西:
在文件中要修改部分文本的缩进:
在命令模式下,按v去选择多行,再按shift+>(<)来改变缩进。
也可以使用3再按shift+>(<)来改变缩进(3倍)

 

转自:http://yazku.blog.163.com/blog/static/12355625520106505228575/

posted @ 2013-12-13 15:24  0弓虽  阅读(205)  评论(0编辑  收藏  举报