当前位置:文档之家› Vi常用命令

Vi常用命令

进入vi的命令 (1)移动光标类命令 (1)屏幕翻滚类命令 (2)编辑插入文本类命令 (3)删除命令 (5)搜索及替换命令 (6)选项设置 (8)组合命令 (10)最后行方式命令 (14)寄存器操作 (15)进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenamevi filename....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:(注意是数字零)光标移至当前行首$:光标移至当前行尾^ 光标移到行首f 光标移到当前光标位置后面的第一个指定的字符下F 光标移到当前光标位置前面的第一个指定的字符下t 光标移到当前光标位置后面的第一个指定的字符前T 光标移到当前光标位置前面的第一个指定的字符前% 光标移动到与当前括号匹配的括号处:n 光标移动到指定行按数字:0:移到文章的开头。

按G:移动到文章的最后。

按w:光标跳到下个字的开头按e:光标跳到下个字的字尾按b:光标回到上个字的开头按:#l:光标移到该行的第#个位置,如:5l,56l。

跳至指定的行Ctrl + g列出光标所在行的行号。

#G:例如,15G,表示移动光标至文章的第15行行首14.光标控制k:上移nk 上移n行j:下移nj 下移n行将光标移到第n行,按下mk将光标移到第m行,按下"ay'k即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等屏幕翻滚类命令Ctrl+u:向文件首翻半屏Ctrl+d:向文件尾翻半屏Ctrl+f:向文件尾翻一屏Ctrl+b;向文件首翻一屏nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

zz 将当前行置于屏幕中央zt 将当前行置于屏幕顶端zb 将当前行置于屏幕底端编辑插入文本类命令i :在光标前I :在当前行首a:光标后A:在当前行尾o:在当前行之下新开一行O:在当前行之上新开一行r:替换当前字符R:替换当前字符及其后的字符,直至按ESC键s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之ncw或nCW:修改指定数目的字nCC:修改指定数目的行J 删除换行符u 取消上次操作ctr-R 重做c 修改指定的内容,和d相似p 将删除缓冲区中的内容插入光标当前的位置y 复制vi a b c:n跳至下一个文件,:e#回到刚才编辑的文件。

比如当前编辑文件为a,:n跳至b,再:n跳至c,:e#回到b,想回到a的话用:ea打开一个,vi 文件名然后在vi的命令输入状态下输入:sp 另外一个文件的路径及文件名如此就可以在一个窗口打开3个文件了。

可以使用ctrl +两次按w在3个文件中切换:edit 编辑一个新的文件:previous 打开文件列表中的前一个文件:next 打开文件列表中的后一个文件:args 指定一个文件列表:saveas 给文件改名:file 给正在编辑的文件改名,但不保存:split 将窗口分成上下两个窗口:vsplit 将窗口分成左右两个窗口:split 文件为制定的文件打开新窗口:new 打开新窗口,以及一个无名的缓冲区:close 关闭窗口ctr-w w 切换窗口ctr-w [hjkl] 切换到窗口ctr-w [HJKL] 移动窗口:only 只保存当前窗口,其他窗口关闭ctw-w + 增加当前窗口高度ctw-w - 减小当前窗口高度:qall 所有的窗口都退出:wall 所有的窗口内容都写入文件取消上一命令(Undo)重复命令(Redo)重复命令只能在命令模式下工作,在该模式下按“.”键既可。

执行一个重复命令时,其结果是依赖于光标当前位置的。

取消上一命令(Undo)重复命令(Redo)重复命令只能在命令模式下工作,在该模式下按“.”键既可。

执行一个重复命令时,其结果是依赖于光标当前位置的。

fx 往右移动到x 字元上Fx 往左移动到x 字元上tx 往右移动到x 字元前Tx 往左移动到x 字元前; 配合f&t 使用,重复一次, 配合f&t 使用,反方向重复一次/string 往右移动到有string 的地方?string 往左移动到有string 的地方n 配合/&? 使用,重复一次N 配合/&? 使用,反方向重复一次d 删除(delete)y 复制(yank)p 放置(put)c 修改(change)x 删除光标下的字符("dl"的缩写)X 删除光标前的字符("dh"的缩写)D 从当前位置删除到行尾("d$"的缩写)dw 从当前位置删除到下一个单词开头db 从当前位置删除到前一个单词的开头diw 删除光标上的单词(不包括空白字符)daw 删除光标上的单词(包括空白字符)dG 删除到文末dgg 删除到文首如果你用"c" 代替"d",这会变成修改命令;而改用"y",则变成拷贝命令「cw」:更改光标所在处的字到字尾处「c#w」:例如,「c3w」表示更改3个字复制「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

daB 删除{}及其内的内容(在非v可视模式下)diB 删除{}中的内容ab 选择()中的内容ib 选择()中的内容( 不含() )aB 选择{}中的内容iB 选择{}中的内容( 不含{} )·变量定位gd 转到光标下局部变量的定义处Gd 转到光标下全局变量的定义处:r filename 将文件filename 插入在当前行之下复制与剪切xp 交换前后两个字符的位置ddp 上下两行的位置交换:g/fred/t$ 拷贝行,从fred到文件末尾(EOF)删除命令ndw或ndW:删除光标处开始及其后的n-1个字do:删至行首d$:删至行尾ndd:删除当前行及其后n-1行x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本u 撤消前一条命令的结果. 重复最后一条修改正文的命令搜索及替换命令/pattern:从光标开始处向文件尾搜索pattern?pattern:从光标开始处向文件首搜索patternn:在同一方向重复上一次搜索命令N:在反方向上重复上一次搜索命令:s/p1/p2/g:将当前行中所有p1均用p2替代:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:将文件中所有p1均用p2替换/ 向后搜索? 向前搜索`` 跳转到前一个位置`a 跳转到标记为a的位置ma 将光标的当前位置标记为a`[ 跳转到最后一次修改的起始位置`] 跳转到最后一次修改的结束位置`" 跳转到上次编辑该文件时光标最后停留的位置:s 替换:substitute 替换:%s/a/a/c 对所有行替换:m,ns/a/a/c 对从m到n行替换rc 用c 替换光标所指向的当前字符nrc 用c 替换光标所指向的前n 个字符5rc 用c 替换光标所指向的前5 个字符x 删除光标所指向的当前字符nx 删除光标所指向的前n 个字符3x 删除光标所指向的前3 个字符dw 删除光标右侧的字ndw 删除光标右侧的n 个字3dw 删除光标右侧的3 个字db 删除光标左侧的字ndb 删除光标左侧的n 个字5db 删除光标左侧的5 个字dd 删除光标所在行,并去除空隙ndd 删除n 行内容,并去除空隙3dd 删除3 行内容,并去除空隙从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个内存缓冲区中。

用户可将其粘贴到正文中的指定位置。

完成这一操作的命令是:p 小写字母p,将缓冲区的内容粘贴到光标的后面P 大写字母P,将缓冲区的内容粘贴到光标的前面yy 复制当前行到内存缓冲区nyy 复制n 行内容到内存缓冲区5yy 复制5 行内容到内存缓冲区/str1 正向搜索字符串str1n 继续搜索,找出str1 字符串下次出现的位置?str2 反向搜索字符串str2给出一个字符串,可以通过搜索该字符串到达指定行。

如果希望进行正向搜索,将待搜索的字符串置于两个“/”之间;如果希望反向搜索,则将字符串放在两个“?”之间。

例如::/str/ 正向搜索,将光标移到下一个包含字符串str 的行:?str? 反向搜索,将光标移到上一个包含字符串str 的行:/str/w file 正向搜索,并将第一个包含字符串str 的行写入file文件:/str1/,/str2/w file 正向搜索,并将包含字符串str1 的行至包含字符串str2 的行写正文替换利用:s 命令可以实现字符串的替换。

具体的用法包括::s/str1/str2/ 用字符串str2 替换行中首次出现的字符串str1:s/str1/str2/g 用字符串str2 替换行中所有出现的字符串str1:.,$ s/str1/str2/g 用字符串str2 替换正文当前行到末尾所有出现的字符串str1:1,$ s/str1/str2/g 用字符串str2 替换正文中所有出现的字符串str1:g/str1/s//str2/g 功能同上从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

相关主题