VI常用命令和快捷键.docx

上传人:小飞机 文档编号:3168607 上传时间:2023-03-11 格式:DOCX 页数:16 大小:44.85KB
返回 下载 相关 举报
VI常用命令和快捷键.docx_第1页
第1页 / 共16页
VI常用命令和快捷键.docx_第2页
第2页 / 共16页
VI常用命令和快捷键.docx_第3页
第3页 / 共16页
VI常用命令和快捷键.docx_第4页
第4页 / 共16页
VI常用命令和快捷键.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《VI常用命令和快捷键.docx》由会员分享,可在线阅读,更多相关《VI常用命令和快捷键.docx(16页珍藏版)》请在三一办公上搜索。

1、VI常用命令和快捷键语法:vi -wn -R 文件 说明: vi 是一个基于行编辑器 ex 上的全屏幕编辑器,可以在vi 中使用 ex,ed的全部命令,vi选项中 -wn 指将编辑窗口大小置为n行,-R 为将编辑的文件置为只读模式, vi 工作模式分为命令模式和输入模式,一般情况下在命令模式下,可敲入vi命令,进入输入模式下时可以编辑要编辑的文本,命令 a A i I o O c C s S R 可进入输入模式,在输入模式下按 ESC 键可推出输入模式,回到命令模式,在命令模式中敲入: 命令,则可进入ex方式,在屏幕底部出现提示符 : ,此时可使用任意ex命令,屏幕底行也用来作/ ? ! 命令

2、的提示行,大多数命令可以在其前面加数字,表示命令执行的重复次数,下面简单介绍一下vi 的命令集: 表示(CTRL)键 B 退回前一页,前面加数字表示重复次数,每次换页时保留上一页的两行 D 在命令模式下,表示下滚屏幕的一半,在输入模式下,表示回退至左边的自动缩进处 E 显示屏幕底线之下的一行 F 前进一页,前面加数字表示重复次数,每次换页时保留上一页的两行 G 显示当前文件名,当前行号和文件总行数,并用百分号当前行在整个文件中的位置 H(退格) 在命令模式下,光标左移一格;在输入模式下,删去前面的字符 I(TAB) 在输入模式下,产生一串空格 J(LF) 光标下移一行 L 刷新屏幕,即将屏幕重

3、新显示 M(回车) 在命令模式下,光标移动至下行开头;在输入模式下,开辟一新行 N 光标下移一行 P 光标上移一行 Q 在输入模式下,将其后的非打印字符作为正文插入 R 刷新屏幕 U 屏幕上滚一半,前面加数字时表示上滚的行数,此数字对以后的D U 命令有效 V 在输入模式下,将其后的非打印字符作为正文插入 W 在输入模式下,使光标回退一个字 Y 显示屏幕底线之上的一行 Z 暂停编辑,退回上层Shell (ESC) 退出输入模式,回到命令模式 ! 暂时退出编辑,执行Shell命令 (双引号) 用于标志有名缓冲区,编号缓冲区1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文 $

4、将光标移动到当前行尾,前加数字则表示前移行数,如2$表示移动到下一行行尾 % 将光标移动到配对的小括号或大括号上去 ( 退回句子开头 ) 前移到句子开头 - 退到上一行第一个非空格字符 . 重复上一次改变缓冲区内容的命令 / 模式 向前搜索模式,将光标移动到模式出现处,模式是一个正规表达式,(参看 grep) : 在屏幕底部提示:,其后可使用ex命令 ? 功能同 / ,但方向是向前查找 光标回退至前一节分界处 转意符 光标前移至节分界处 (不是CTRL) 光标移至当前行第一个非空字符上 连续两个表示将光标移至其移动前的位置,后跟字母表示光标字母标记的行首(参看 m 命令) A 在行尾插入正文,

5、进入输入模式 B 光标回退一个字 C 替换光标后的内容 D 删除光标后的内容 E 光标前移到字尾 F 字符 在当前行向左查找指定字符 G 光标移动到其前面数字指定的行,若未指定则移动到最后一行 H 光标移动到屏幕顶行,若前面有数字,则移动到屏幕上该数字指定的行 I 在行开头插入正文 J 连接两行,若前面有数字则连接数字指定的行 L 光标移动到屏幕底行,若前面有数字,则移动到屏幕底线往上数该数字指定的行 M 光标移动到屏幕中线 N 使用模式查找/或?时,重复找下一个匹配的模式,但方向与上次相反,其功能同 n ,但方向相反 O 在当前行上开辟一新行 P 将上次被删除的正文插入光标前面,可在其前面加

6、缓冲区编号,编号1-9用于保存被删去的正文,字母名缓冲区a-z供用户存放自定义的正文 Q 从vi 推出进入ex命令状态 R 替换字符串 S 替换整行 T 字符 向左查找字符 U 将当前行恢复至第一次修改前的状态 W 光标移至下一个字首 X 删除光标前的字符 Y 将当前行存入无名缓冲区,前面加数字表示存入的行数,也可用有名缓冲区来保存,以后可用命令p或P将其取出 ZZ 存盘退出vi a 光标后插入正文 b 光标回退至上一个字首 cw 替换当前字 c) 替换当前句子 dw 删除一个字 dd 删除一行 e 光标移到下一个字末 f 字符 在当前行向前查找字符 h 光标左移一格 i 在光标前插入正文 j

7、 光标下移一行 k 光标上移一行 l 光标右移一格 m 字母 用字母标记当前行,以后可用n 重复上次 / 或 ? 命令 (参看命令) 字母使光标移动到当前行,o 在当前行下开辟一新行 p 将用户缓冲区内容放到光标位置(参看P命令) r 替换当前字符 s 用一串字符替换当前字符 t 字符 光标移动至字符前 u 取消上次操作 w 光标移至下一字首 x 删除当前字符 yw 将当前字存入无名缓冲区,前面可加x,表示存入名字为x的有名缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命令取出 yy 将当前行存入无名缓冲区,用法参看yw 光标移动至前一段开头 | 光标移至行首,若前面加数字,则

8、移到数字指定行的行首 光标移至下一段开头 在:提示符下,常用命令如下: :w 当前文件存盘 :w! 强制存盘 :w 文件 将内容写入指定文件 :w! 文件 强制写入指定文件 :x,y w 文件 将 x至 y 行写入指定文件中 :r 文件 将文件读到光标位置 :r ! 命令 将系统命令的输出读到光标位置 :q 退出编辑 :q! 强制退出 :x 与命令ZZ相同 :e 文件名 编辑另一文件 :e ! 重新编辑文件,放弃任何改变 :sh 执行sh,结束后回到编辑 :! 命令 执行命令后回到编辑 :n 编辑下一文件 :n 文件表 重新定义待编辑文件表 :set 设置 vi 的选项,例如 set nu 表

9、示每行前显示行号,在选项前加no则表示清除该选项,例如 set nonu 表示每行前不显示行号,下面是一些常用的选项: ai 自动缩进 aw 编辑下一文件前自动存盘 ic 查找字符串时不区分大小写 nu 每行前显示行号 sm 输入)及时显示与之配对的( 或 slow 插入时延迟屏幕刷新 ws 使查找能绕过文件尾从头进行 wa 写文件之前不作对文件的检查 :s/old/new用new替换行中首次出现的old :s/old/new/g 用new替换行中所有出现的old :#,# s/old/new/g用new替换从第行到第行中出现的old :% s/old/new/g用new替换整篇中出现的old

10、 如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc u 取消操作 i插入命令 a附加命令 o打开命令 c修改命令 r取代命令 s替换命令 Esc退出命令 G文件尾行 1G文件首行 #G 文件的#行 :set nu :set nonu 显示行号 不显示行号 Vi 是一个历史悠久且功能强大的 UNIX 文书编辑器。在古早的年代,许多键盘都只有一些基本按键,连上下左右键都没有,所以 vi 大多数的功能都必须使用一些特殊的按键。 Vi 在使用时可以分成二种模式,一种是编辑模式,另一种则为命令模式。在编辑模式时,我们

11、可以使用上下左右键来移动光标并编辑输入我们所要编辑的文字内容。而命令模式时,我们可以进行档案操作 (开文件、存盘等)、搜寻等功能。使用 vi 时,我们会很常按 键, 键可以让我们离开编辑模式并进入命令模式。请执行 vi example.txt 来编辑 example.txt 这个档案,一进入 vi 时,预设会处于命令模式,我们必需先输入 o、i、或a才能进入编辑模式。 以下即为进入编辑模式的指令: 按键 意义 i Insert (插入),在目前光标前开始输入。 a Append (附加),在目前光标后开始输入。 o 在光标下方新增一空白行并开始编辑。 O 在光标上方新增一空白行并开始编辑。 如

12、果您输入错误,您无法使用 或 来删除,我们必须使用 vi 的其它命令来进行。请先按 来进入命令模式,接着您就可以使用下列指令来进行进阶编辑: 按键 意义 x 删除光标所在位置的字符。 dw 删除游标所在到字尾,即删除一个字。 dd 删除游标所在一整行。 d + 数字 + 删除从光标所在位置到其下方 n 行。例如输入 d5 ,将删除光标所在位置起 6 行。 yw 复制光标开始到字尾。 yy 复制游标所在一整行。 y + 数字 + 复制从光标所在位置到其下方 n 行。例如输入 y4 ,将复制光标所在位置起 5 行。 p 贴上上一次复制的内容。 :w 存档。 :w 文件名称 另存新檔。您必输在 w

13、后输入新的档名。 :q 离开 vi。如果档案有修改过会无法离开。 :wq 存档并离开。 :q! 不存档并离开。 接下来我们说明一下如何在档案中穿梭移动: 按键 意义 h 游标向左移。 j 游标向下移。 k 游标向上移。 l 游标向右移。 跳到行首。 $ 跳到行尾。 w 游标跳到下个字的开头。 e 游标跳到下个字的结尾。 b 游标跳到上个字的开头 + d 光标往下移动半个屏幕。 + u 光标往上移动半个屏幕。 + f 光标往上移动一个屏幕。 + b 光标往下移动一个屏幕。 :数字 跳到 n 行,例如输入 :100 即可将光标移到第 100 行。 /欲搜寻的字符串 输入 / 后,您可以在 / 后输

14、入所要搜寻的字符串,如果要找下一个,则直接按 / 即可。 只要您熟悉了上列指令,您大概就可以很轻松的使用 vi 了。Vi 还有许多功能,你可以 man vi 来获得更多信息。 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename.fi

15、lename :打开多个文件,依次进行编辑 移动光标类命令 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 :光标移至屏

16、幕最后行 0:光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrlb;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目

17、的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /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均用p

18、2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志 d 0 删除到某一行的开始位置 d 删除到某一行的第一个字符位置 d w 删除到某个单词的结尾位置 d 3 w 删除到第三个单词的结尾位置 d b 删除到某个单词的开始位置 d W 删除到某个以空格作为分隔符的单词的结尾位置 d B 删除到某个以空格作为分隔符的单词的开始位置 d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置 d) 删除到某个语句的结尾位置 d 4) 删除到第四个语句的结尾位置 d之间的内容 d fc 删除从文

19、本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置之间的内容 d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容 D 删除到某一行的结尾 d $ 删除到某一行的结尾 5 d d 删除从当前行所开始的5行内容 d L 删除直到屏幕上最后一行的内容 d H 删除直到屏幕上第一行的内容 d G 删除直到工作缓存区结尾的内容 d 1 G 删除直到工作缓存区开始的内容 7、修改操作 c l 更改当前字符 c w 修改到某个单词的结尾位置 c 3 w 修改到第三个单词的结尾位置 c b 修改到某个单词的开始位置 c W 修改到某个以空格作为分隔符的单词的结尾位置 c B 修改到某个

20、以空格作为分隔符的单词的开始位置 c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置 c 0 修改到某行的结尾位置 c) 修改到某个语句的结尾位置 c 4) 修改到第四个语句的结尾位置 c,s3是替换字符串 9、移动 fx 往右移动到 x 字符上fx 往左移动到 x 字符上Fx 往右移动到 x 字符前tx 往左移动到 x 字符后Tx ;分号,配合 f 和 t 使用,重复一次 ,逗号,配合 f 和 t 使用,反方向重复一次 10、 标记文本 mchar 用字母char标记当前光标的位置 char 移至char所标记处 char 移至char标记所在行的开头处 移至当前行上一次所在位置一个

21、双引号 移至当前行上第一次所在位置的行的开头处(在光标移动之后)两个单引号 ctrl+f向下翻页,ctrl+b向上翻页 shift+4到本行末尾,shift+6到本行开头 11、追加到缓冲区 对于已经有内容的缓冲区,可以继续追加内容在其后面,例如: Ad4w 删除光标后4个字,并附加到缓冲区a Ay) 取样从光标到文件尾的内容,并附加到缓冲区a K3yy 取样从光标所在行起的3行内容,并附加到缓冲区k 注意:在追加缓冲区的命令中,原缓冲区的名字一定要大写,才能将内容追加进去,否则是覆盖原缓冲区的内容。追加内容在原缓冲区末尾另起一行。 12、在:命令行模式下,首先可以确定命令的范围 .表示当前行

22、;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行 范围用,分隔 然后用命令 d表示删除,y表示复制大家都知道的 最后说一句,%表示全文 :%d 是删除全文 13、恢复前几次操作应用什么命令呀? :em52: 14、:n,n1 d n和n1都是行数, d是删除这些行 .表示当前的行。 : n n是行数,直接转到n行。 : r 文件名 把文件添加到当前的文件中 :n,n1 w 文件名 把从n行到n1行写道另外一个文件中 15、查找: 在一个单词上用*,就向下查找此单词,#是向上 用/查找hello,就不会查找到hello_world(用此替换也很好用) 替换: 如有一文件,内容为: a

23、a bb cc dd 用:%s/.*/printf(& is :%dn,&)/ 文件内容为变为: printf(aa is :%dn,aa) printf(bb is :%dn,bb) printf(cc is :%dn,cc) printf(dd is :%dn,dd) &为查找到的内容 用:为重复上一次替换 用系统命令编辑: 如有一文件,内容为: 333 222 334 444 111 553 554 233 运行命令:%!sort 文件内容为: 111 222 233 333 334 444 553 554 用此方法可以使用许多系统命令进行编辑,大家可以灵活运用 其他特殊用法: 用q:

24、看一看有什么用? 可以编辑你用过的命令 程序中在一个调用函数(如:printf)上用K,可以直接调出printf的帮助 这些是我比较常用的,并且我觉的很有用的命令,敬请指教。 16、:n1,n2w filename (把行N1-N2之间内容写入新文件FILENAME) :.=(显示光标所在行的行号) u(恢复上一次的操作) :!(shell-command 执行SHELL命令的操作) :n (直接把光标定义到N行) :line1,line2mline3: 将line1line2之间的内容移到line3下 相当于word的剪贴 :line1,line2tline3:将line1line2之间的内

25、容copyline3下,相当于word的粘贴 17、由于vi 是建立在 EX 上的 所以 当键入 : 时就来到了 EX 命令状态 :ab string strings 例如 :ab usa United States of America , 当你在文件里插入 usa 时 United States of America 就蹦出来了 :map keys new_seq 定义你当前 键盘命令 :set all vi or ex 的编辑状态 如 显示每行 :set nu 18、 3、把文件内容反转:g/m0/ 这个m0怎么解析 呢 ? valentine 解释: xp和ddp 应该理解为删除一个字

26、符(x)和删除一行(dd),然后在p(paste),这样便不需记新命令了. 把文件内容反转 (按行反转) :g/m0/ 应该是 :g/m0 无最后的/ mmove 0line No 1 试想,从第1行开始,每一行依次放在文件的开头处,会有什么结果? #一些环境配置 set nocp 该命令指定让 VIM 工作在不兼容模式下, 如果使用:set cp命令打开了兼容模式开关的话, VIM 将尽可能地模仿 vi 的操作模式.推荐大家使用VIM 的不兼容模式, 可以在你的 .vimrc 中的第一行写上: set nocp set ru 该命令打开 VIM 的状态栏标尺, 能即时显示当前光标所在位置在文

27、件中的行号、列号, 以及对应的整个文件的百分比 set hls 搜索时高亮显示被找到的文本 set is 搜索时在未完全输入完毕要检索的文本时就开始检索。 syntax on 打开关键字上色 set encoding=cp936 设置当前字符编码为简体中文。 这里还有一段能够自动判断文件的 encoding, 自动选择合适的编码的 .vimrc 代码, 感兴趣的话可以放到自己的配置文件中使用: Encoding settings if has(multi_byte) Set fileencoding priority if getfsize(expand(%) 0 set fileencodi

28、ngs=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1 else set fileencodings=cp936,big5,euc-jp,euc-kr,latin1 endif CJK environment detection and corresponding setting if v:lang = zh_CN Use cp936 to support GBK, euc-cn = gb2312 set encoding=cp936 set termencoding=cp936 set fileencoding=cp936 elseif v:lan

29、g = zh_TW cp950, big5 or euc-tw Are they equal to each other? set encoding=big5 set termencoding=big5 set fileencoding=big5 elseif v:lang = ko Copied from someones dotfile, untested set encoding=euc-kr set termencoding=euc-kr set fileencoding=euc-kr elseif v:lang = ja_JP Copied from someones dotfile

30、, unteste set encoding=euc-jp set termencoding=euc-jp set fileencoding=euc-jp endif Detect UTF-8 locale, and replace CJK setting if needed if v:lang = utf8$ | v:lang = UTF-8$ set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 endif else echoerr Sorry, this version of (g)vim was not compiled with multi_byte endif set sw=4 自动缩进的时候, 缩进尺寸为 4 个空格. set ts=4 Tab 宽度为 4 个字符。 set et 编辑时将所有 Tab 替换为空格。 set sm 显示括号配对情况。 打开这个选项后, 当输入后括号 (包括小括号、中括号、大括号) 的时候, 光标会跳回前括号片刻, 然后跳回来, 以此显示括号的配对情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号