最详细VIM命令大全资料.docx
《最详细VIM命令大全资料.docx》由会员分享,可在线阅读,更多相关《最详细VIM命令大全资料.docx(28页珍藏版)》请在冰豆网上搜索。
最详细VIM命令大全资料
VIM命令大全
2009-07-0210:
50A.M.
光标控制命令
命令 光标移动
h 向左移一个字符
j 向下移一行
k 向上移一行
l 向右移一个字符
G 移到文件的最后一行
w 移到下一个字的开头
W 移到下一个字的开头,忽略标点符号
b 移到前一个字的开头
B 移到前一个字的开头,忽略标点符号
L 移到屏幕的最后一行
M 移到屏幕的中间一行
H 移到屏幕的第一行
e 移到下一个字的结尾
E 移到下一个字的结尾,忽略标点符号
( 移到句子的开头
) 移到句子的结尾
{ 移到段落的开头
} 移到下一个段落的开头
0(数字),| 移到当前行的第一列
^ 移到当前行的第一个非空字符
$ 移到当前行的最后一个字符
+,Enter 移到下一行的第一个字符
- 移到前一行的第一个非空字符
在vi中添加文本
命令 插入动作
a 在光标后插入文本
A 在当前行插入文本
i 在光标前插入文本
I 在当前行前插入文本
o 在当前行的下边插入新行
O 在当前行的上边插入新行
s 删除光标所在处字符,并进入插入模式
S 删除光标所在的行,并进入插入模式
:
rfile 读入文件file内容,并插在当前行后
:
nrfile 读入文件file内容,并插在第n行后
Esc 回到命令模式
^vchar 插入时忽略char的指定意义,这是为了插入特殊字符
在vi中删除文本
命令 删除操作
x 删除光标处的字符
dw 删至下一个字的开头
dG 删除行,直到文件结束
dd 删除整行
db 删除光标前面的字
:
n,md 从第m行开始往前删除n行
d,d$ 从光标处删除到行尾
^h,backspace 插入时,删除前面的字符
^w 插入时,删除前面的字
修改vi文本
每个命令前面的数字表示该命令重复的次数
命令 替换操作
rchar 用char替换当前字符
Rtextescape 用text替换当前字符直到按下Esc键
stextescape 用text代替当前字符
S或cctextescape 用text代替整行
cwtextescape 将当前字改为text
Ctextescape 将当前行余下的改为text
cGescape 修改至文件的末尾
ccursor_cmdtextescape 从当前位置处到光标命令位置处都改为text
在vi中查找与替换
命令 查找与替换操作
/text 在文件中向前查找text
?
text 在文件中向后查找text
n 在同一方向重复查找
N 在相反方向重复查找
ftext 在当前行向前查找text
Ftext 在当前行向后查找text
ttext 在当前行向前查找text,并将光标定位在text的第一个字符
Ttext 在当前行向后查找text,并将光标定位在text的第一个字符
:
setic 查找时忽略大小写
:
setnoic 查找时对大小写敏感
:
ranges/pat1/pat2/g 用newtext替换oldtext
:
m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext
& 重复最后的:
s命令
:
g/text1/s/text2/text3 查找包含text1的行,用text3替换text2
:
g/text/command 在所有包含text的行运行command所表示的命令
:
v/text/command 在所有不包含text的行运行command所表示的命令
在vi中复制文本
命令 复制操作
yy 将当前行的内容放入临时缓冲区
nyy 将n行的内容放入临时缓冲区
p 将临时缓冲区中的文本放入光标后
P 将临时缓冲区中的文本放入光标前
"(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
在vi中撤消与重复
命令 撤消操作
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
以相反的方向重复前面的f、F、t或T查找命令
; 重复前面的f、F、t或T查找命令
"np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)
n 重复前面的/或?
查找命令
N 以相反方向重复前面的/或?
命令
保存文本和退出vi
命令 保存和/或退出操作
:
w 保存文件但不退出vi
:
wfile 将修改保存在file中但不退出vi
:
wq或ZZ或:
x 保存文件并退出vi
:
q!
不保存文件,退出vi
:
e!
放弃所有修改,从上次保存文件开始再编辑
vi中的选项
选项 作用
:
setall 打印所有选项
:
setnooption 关闭option选项
:
setnu 每行前打印行号
:
setshowmode 显示是输入模式还是替换模式
:
setautoindent 继承前一行的缩进方式,特别适用于多行注释
:
setsmartindent 为C程序提供自动缩进
:
setlist 显示制表符(^I)和行尾符号
:
setts=8 为文本输入设置tabstops
:
setwindow=n 设置文本窗口显示n行
:
setnumber 显示行数
:
setnonumber 取消显示行数
vi的状态
选项 作用
:
.= 打印当前行的行号
:
= 打印文件中的行数
ctrl+g 显示文件名、当前的行号、文件的总行数和文件位置的百分比
:
l 使用字母"l"来显示许多的特殊字符,如制表符和换行符
在文本中定位段落和放置标记
选项 作用
{ 在第一列插入{来定义一个段落
[[ 回到段落的开头处
]] 向前移到下一个段落的开头处
m(a-z) 用一个字母来标记当前位置,如用mz表示标记z
'(a-z) 将光标移动到指定的标记,如用'z表示移动到z
在vi中连接行
选项 作用
J 将下一行连接到当前行的末尾
nJ 连接后面n行
光标放置与屏幕调整
选项 作用
H 将光标移动到屏幕的顶行
nH 将光标移动到屏幕顶行下的第n行
M 将光标移动到屏幕的中间
L 将光标移动到屏幕的底行
nL 将光标移动到屏幕底行上的第n行
^e(ctrl+e) 将屏幕上滚一行
ctrl+y 将屏幕下滚一行
ctrl+u 将屏幕上滚半页
ctrl+d 将屏幕下滚半页
ctrl+b 将屏幕上滚一页
ctrl+f 将屏幕下滚一页
ctrl+l 重绘屏幕
z-return 将当前行置为屏幕的顶行
nz-return 将当前行下的第n行置为屏幕的顶行
z. 将当前行置为屏幕的中央
nz. 将当前行上的第n行置为屏幕的中央
z- 将当前行置为屏幕的底行
nz- 将当前行上的第n行置为屏幕的底行
vi中的shell转义命令
选项 作用
:
!
command 执行shell的command命令,如:
!
ls
:
!
!
执行前一个shell命令
:
r!
command 读取command命令的输入并插入,如:
r!
ls会先执行ls,然后读入内容
:
w!
command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:
w!
grepall
:
cddirectory 将当前工作目录更改为directory所表示的目录
:
sh 将启动一个子shell,使用^d(ctrl+d)返回vi
:
sofile 在shell程序file中读入和执行命令
vi中的宏与缩写
(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)
选项 作用
:
mapkeycommand_seq定义一个键来运行command_seq,如:
mapeea,无论什么时候都可以e移到一个字的末尾来追加文本
:
map 在状态行显示所有已定义的宏
:
umapkey 删除该键的宏
:
abstring1string2 定义一个缩写,使得当插入string1时,用string2替换string1。
当要插入文本时,键入string1然后按Esc键,系统就插入了string2
:
ab 显示所有缩写
:
unastring 取消string的缩写
在vi中缩进文本
选项 作用
ctrl+i或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的
:
setai 打开自动缩进
:
setsw=n 将移动宽度设置为n个字符
n<< 使n行都向左移动一个宽度
n>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度
:
.,+3s/^/#/g 注释从当前行起的后三行(不含当前行)
vi替换命令用法详解:
引用
:
ranges/pat1/pat2/g
其中
:
这是Vi的命令执行界面。
range是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。
你还可以使用行号,例如10,20表示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。
s表示其后是一个替换命令。
pat1这是要查找的一个正则表达式,这篇文章中有一大堆例子。
pat2这是希望把匹配串变成的模式的正则表达式,这篇文章中有一大堆例子。
g可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。
----------------------------------------
vi常用操作(较全)
1)文件操作
viFileName打开文件FileName,并将光标置于第一行首。
vi+nFileName打开文件FileName,并将光标置于第n行首。
vi+FileName打开文件FileName,并将光标置于最后一行。
vi+/patternFile打开文件File,并将光标置于其中第一个于pattern匹配的字符串处。
vi–rFileName在上次正用vi编辑FileName发生系统崩溃后,恢复FileName。
viFile1…Filen打开多个文件,依次对之进行编辑。
:
%!
xxd按十六进制查看当前文件
:
%!
xxd-r从十六进制返回正常模式
:
n1,n2con3将n1行到n2行之间的内容拷贝到第n3行下。
:
n1,n2mm3将n1行到n2行之间的内容移至第n3行下。
:
n1,n2d将n1行到n2行之间的内容删除。
:
n1,n2wfilename将n1行到n2行之间的内容保存到文件filename中
:
n1,n2w!
Command将文件中n1行到n2行的内容作为Command的输入并执行之,
若不指定n1、n2,则将整个文件内容作为Command的输入。
:
r!
Command将命令Command的输出结果放到当前行。
:
nr<文件>把<文件>插入到第n行
:
so<文件>读取<文件>,再执行文件里面的命令(文件中的命令应该都是一些ex命令)
:
l1,l2w<文件>把第l1和第l2行之间的文本写到<文件>中去
:
w>><文件>添加到<文件>末尾.也可以使用行号
:
e!
重新编辑当前文件,忽略所有的修改
·(、[、{、}、]、)对应显示
%显示当前(、[、{、}、]、)的对应项
)显示对应的(
)显示对应的[
]显示对应的{
·(、[、{、}、]、)内数据选择
daB删除{}及其内的内容(在非v可视模式下)
diB删除{}中的内容
ab选择()中的内容
ib选择()中的内容(不含())
aB选择{}中的内容
iB选择{}中的内容(不含{})
·语法提示与自动补齐
★插入模式下的单词自动完成
★行自动完成(超级有用)
·设置ctags
#ctags-f/usr/share/vim/vim63/funcs.tags-R/opt/j2sdk/src/usr/src/kernels/2.6.9-5.EL-i686
^p自动补齐上下文已有相近项
^n自动补齐~/.tags中的相近函数
^[显示~/.tags中的光标下的函数的原型,
按^t退出函数
:
pta函数名预览窗口快速打开相应函数所在文件,并将光标定位在对应函数的开头
K显示光标下的C函数的man说明手册
·变量定位
gd转到光标下局部变量的定义处
Gd转到光标下全局变量的定义处
·编译选项
:
cn命令会把你带到下一个出错地点,而不考虑它在什么文件里。
:
cc命令会向你显示当前错误的编译器输出信息;
:
cl会生成一个列有项目所有错误的列表,以供浏览这些错误
3]光标移动
·字符
h光标左移一个字符。
l光标右移一个字符。
·字
w或W光标右移一个字至字首。
B或b光标左移一个字至字首。
E或e光标右移一个字至字尾。
·句}光标移至句尾。
(光标移至句首。
·段)光标移至段落开头。
{光标移至段落结尾。
·行k或Ctrl+p光标上移一行。
j或Ctrl+n光标下移一行。
Enter光标下移一行。
nG光标移至第n行首。
n+光标下移n行。
n-光标上移n行。
n$光标移至第n行尾。
0光标移至当前行首。
$光标移至当前行尾。
·屏幕
H光标移至屏幕顶行。
M光标移至屏幕中间行。
L光标移至屏幕最后行。
Ctrl+u向文件首翻半屏。
Ctrl+d向文件尾翻半屏。
Ctrl+f向文件尾翻一屏。
Ctrl+b向文件首翻一屏。
nz将第n行滚至屏幕顶部。
不指定n时将当前行滚至屏幕顶。
4}插入
#在文件中插入行号(不是显示行号,是插入!
)
★:
g/^/exec"s/^/".strpart(line(".")."",0,4)
·光标
i在光标前插入。
a在光标后插入。
·行
I在当前行首插入。
A在当前行尾插入。
o在当前行之下一新行插入。
O在当前行之上新开一行插入。
5)替换
r替换当前字符。
R替换当前字符及其后的字符,直至按ESC键。
s从当前光标位置处开始,以输入的文本代替指定数目的字符。
S删除指定数目的行,并以所输入的文本代替。
6)修改
ncw或nCW修改指定数目的字符。
nCC修改指定数目的行。
:
rfilename将文件filename插入在当前行之下
7)查找替换
/把狭义单词写到搜索命令行
/把广义单词写到搜索命令行
:
g/str/s/str1/str2/g
第一个g表示对每一个包括s1的行都进行替换,
第二个g表示对每一行的所有进行替换
包括str的行所有的str1都用str2替换
:
%s/f$/for$/g将每一行尾部的“f”(f键和空格键)替换为for
:
%s/^/mv/g在每一行的头部添加“mv”(mv键和空格键)
:
s/fred/a/g替换fred成registera中的内容,呵呵
:
g/
#替换一个visual区域
#选择一个区域,然后输入:
s/Emacs/Vim/等等,vim会自动进入:
模式
:
'<,'>s/Ema