文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,这里列了一些常用命令的用法
进入vi的命令;
vi filename:打开或者新建文件,并将光标置于第一行首 vi +n filename:打开文件,并将光标置于第n行首 vi + filename:打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename:在上次用vi编辑时发生系统崩溃,恢复filename
移动光标类命令;
h:光标左移一个字符 l:光标右移一个字符 space:光标右移一个字符 backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n:光标下移一行 enter:光标下移一行 w或W:光标右移一个字至字首 b或B:光标左移一个字至字首 e或E:光标右移一个字至字尾 ):光标移至句尾(:光标移至句首 }:光标移至段落结尾 {:光标移至段落开头 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H:光标移至屏幕顶行 M:光标移至屏幕中间行 L:光标移至屏蔽底行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾
屏幕翻滚类命令;
ctrl+u:向文件首翻半屏 ctrl+d:向文件尾翻半屏 ctrl+f:向文件尾翻一屏 ctrl+b:向文件首翻一屏 nzz:将第n行滚至屏幕顶部
插入文本类命令;
i:在光标前 I:在当前光标所在行行首 a:在光标后 A:在当前光标所在行行尾 o:在当前光标所在行下新开一行 O:在当前光标所在行上新开一行 r:替换当前字符(选中字符输入r后,则选中字符可被下次输入的字符替换) R:替换当前字符及其后的字符,直至ESC键(选中字符输入R后,则选中字符及之后的字符可被下次输入的字符替换) s:删除当前光标选中的字符,并输入想要替代的一个或者多个字符 S:删除当前光标选中的这行字符,并输入想要替代的字符 nC: 删除含光标所在行在内,光标下n行的字符
复制删除命令;
yy:复制当前光标所在行所有字符 nyy:复制包含当前光标所在行在内的之后n行字符 p:在当前光标所在行的下一行粘贴之前复制的字符 d$:删除当前光标所在字符及光标之后这行的字符 dd:删除当前光标所在行 ndd:删除含当前光标所在行以内的以下的n行字符 x或X:删除一个字符,x删除光标后的字符,X删除光标前的字符 dG:删除当前光标所在行以及之后所有的字符
搜索以及替换命令;
/pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g :将当前行中所有p1均用p2代替 :n1,n2s/p1/p2/g :将第n1至第n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换
选项设置;
all:列出所有选项设置情况 number:显示出当前光标所在行的行数 list:显示制表位(ctrl+I)和行尾标志($) set nu:显示所有行的行数 最后行方式命令; :q:退出vi :q!:不保存文件并退出vi :x:保存当前文件并退出 :w:保存但是不退出 :wq:保存并退出 :e filename :打开文件filename 进行编辑 :n1,n2 d:将n1行到n2行之间的内容(包含第n1,n2行)删除(如果只有n1则只删除n1) :n1,n2 m n3:将n1行到n2行之间的内容(包含第n1,n2行)移动到第n3行下(移动相当于剪切) :n1,n2 co n3:将n1行到n2行之间的内容(包含第n1,n2行)拷贝到第n3行下(拷贝也就是复制) :e! 放弃当前的所有修改,重新打开这个文件 vi_删除全部文本 :1,$d :.,$d 这个需要光标在第一行才可以