Welcome 微信登录

首页 / 操作系统 / Linux / Vi 命令简单易懂讲解

目录

  1. 正文
  2. 打开文件进入编辑
  3. 注意当前模式
  4. 光标移动
  5. 插入内容
  6. 删除
  7. 撤销操作
  8. 拷贝粘贴
  9. 保存/退出
  10. 在两个文件中复制粘贴
  11. 搜索字符串
  12. 替换字符串

正文

下面介绍vi 的一般用法,本文适合初学者入门,但不适合作为手册进行查询,如果需要以命令导向的手册,请使用$ man vi|more  

打开文件进入编辑

编辑一个文件:$ vi example.txt同时编辑多个文件:$ vi file1 file2 ... fileN如果使用vi 编辑的某个文件没有正常保存退出,会遗留一个隐含的文件:.filename.swp ,使用如下命令恢复从最后一次保存到非正常退出前所做的编辑:$ vi -r filename 

注意当前模式

进入文件编辑后,vi有四种模式,一种是插入模式(按键盘i 进入),这个模式下键盘输入会作为字符增加到文件中。另一种是编辑模式,这个状态下可以直接输入命令来移动光标,删除字符等操作,不需要回车确认,每一个命令按键都会直接发生作用。在插入模式下按ESC 键会回到编辑模式。第三种是命令模式,在编辑模式下按冒号":" 即进入命令模式,这时键盘输入的字符会出现在屏幕下方,回车后,命令执行。这个模式下可以输入保存、字符串搜索、退出编辑等命令。命令模式下,按回车或者ESC 键,回到编辑模式。第四种是搜索模式,在编辑模式下输入斜杠"/" 或者问号"?" 即进入搜索模式。上面的四种模式是我为了描述方便所起的名字,下面将引用到。 

光标移动

光标的上、下、左、右移动,分别对应按键:k、j、h、l (编辑模式)。定位到最后一行,输入大写G(编辑模式)。回到第一行,输入小写g(编辑模式)。跳到第n 行,在命令模式下输入数字n ,回车。显示当前所在行数和列数,编辑模式下输入ctrl+g 。 

插入内容

在当前字符前面插入内容,编辑模式下输入i ,进入了插入模式,然后输入内容,输入完成之后,按ESC 回到编辑模式。在当前字符后面插入内容,编辑模式下输入a ,其它操作与上面相同。在本行首插入内容,编辑模式下输入大写I 。其它操作与上面相同。在本行尾追加内容,编辑模式下输入大写A 。其它操作与上面相同。 

删除

删除当前光标的字符,编辑模式下输入x ,如果希望删除当前光标前面的字符,输入大写X 。删除一行,编辑模式下连续两次输入d 。删除一个单词,编辑模式下依次输入dw 。从当前光标删除至行尾,编辑模式下依次输入d$ 。 

撤销操作

撤销刚才的一次修改,编辑模式下输入u ,撤销对这一整行的修改,输入大写U 。如果希望撤销对文件的所有修改,命令模式下依次输入e! ,回车(输入冒号":" 进入命令模式,:e!)。 

拷贝粘贴

拷贝一行内容,编辑模式下连续输入两次y 。将剪贴板中的一行粘贴到当前行的后面,编辑模式下输入p 。拷贝n 行内容,编辑模式下输入数字n(n是要拷贝的行数,从当前行算起),然后输入y ,拷贝完成,输入p 粘贴多行。 

保存/退出

如果保存并关闭文件,命令模式下输入x ,回车即可。如果保存,同时继续文件编辑,命令模式下输入w ,回车。如果放弃所有更改,直接退出,命令模式下输入q! ,回车。命令模式下输入wq 与x 等价。 

在两个文件中复制粘贴

需要将file2 的某行粘贴到file1 中。同时打开两个文件,中间用空格分隔:$ vi file1.txt file2.txt打开后当前编辑的为file1 ,在命令模式下输入n ,切换到file2。找到相关行,编辑模式下输入yy ,再进入命令模式,输入大写N ,切换回上一个文件(以打开顺序为准),找到相关位置,编辑模式下输入p ,粘贴完毕。 

搜索字符串

要搜索字符串abc ,在搜索模式下(编辑模式下输入斜杠"/" 或者问号"?" 即进入搜索模式),输入abc ,回车。如果找到,光标会定位到从当前位置到第一个出现字符串abc 的位置,输入n 会跳到下一个abc 出现的位置,输入大写N ,跳到上一个abc 出现的位置。斜杠"/" 与问号"?" 的区别,前者向后正向搜索,后者向前反向搜索。 

替换字符串

要将当前行中的所有字符串abc 替换成efg ,命令模式下输入s/abc/efg/g ,回车。上面命令只会替换abc 而不会替换ABC 或者aBc 。如果希望忽略大小写,加上参数i ,s/abc/efg/gi ,回车。如果希望进行全文件范围替换,命令模式下输入%s/abc/efg/g ,回车。如果替换的字符串中包含了例如斜杠"/" 这样的特殊字符,使用反斜杠"" 转义。命令模式下,输入%s//image//img/gi ,回车以上命令会将文件中所有的字符串/image 替换成 /img ,并且不区分image 的大小写。Linux基础知识:Vi 编辑器Linux 自学笔记:crontab 详解相关资讯      Vi 
  • Ubuntu文本编辑时vi和nano命令的区  (12/29/2015 22:12:30)
  • Linux下Vi编辑器的使用介绍  (10/27/2014 06:37:43)
  • Vi文本编辑新手指南  (03/08/2014 07:58:28)
  • 在Vi里面实现字符串的批量替换  (03/07/2015 09:45:27)
  • Vi语法高亮设置  (10/27/2014 06:32:46)
  • Ubuntu中Vi不能正常使用方向键问题  (03/07/2014 08:54:38)
本文评论 查看全部评论 (0)
表情: 姓名: 字数