Unix和Linux的vi编辑器操作和用法完全解读教程

上一章Unix和Linux教程请查看:Unix和Linux常用网络通信工具使用
在本章中我们将了解vi编辑器在Unix中的工作方式。在Unix中有许多方法可以编辑文件,使用面向屏幕的文本编辑器vi编辑文件是最好的方法之一。此编辑器允许你在上下文中用文件中的其他行编辑行。
一个被称为VIM的vi编辑器的改进版本也已经发布,在这里VIM代表Vi的改进。vi通常被认为是Unix编辑器中事实上的标准,因为:

  • 它通常可用于所有类型的Unix系统。
  • 它的实现是非常相似的。
  • 它只需要很少的资源。
  • 它比其他编辑如ed或ex更容易使用。
你可以使用vi编辑器编辑现有文件或从头创建新文件,还可以使用此编辑器来读取文本文件。
一、启动vi编辑器下表列出了使用vi编辑器的基本命令:
编号 命令 & 描述
1 vi filename 如果文件不存在创建一个新的文件,否则打开一个现有的文件。
2 vi -R filename 以只读模式打开现有文件。
3 view filename 以只读模式打开现有文件。
使用vi newfile打开一个文件,然后你将注意到光标后面的每行上都有一个波浪号(~),波浪线表示未使用的线。如果一行不是以波浪线开头,并且显示为空白,则会出现空格、制表符、换行符或其他一些不可查看的字符。
二、操作模式在使用vi编辑器时我们通常会遇到以下两种模式:
  • 命令模式——这种模式使你能够执行管理任务,如保存文件、执行命令、移动光标、剪切(猛拉)和粘贴行或单词,以及查找和替换。在此模式下,你键入的任何内容都被解释为命令。
  • 插入模式——这种模式允许你将文本插入到文件中。在此模式中键入的所有内容都被解释为输入并放在文件中。
vi总是在命令模式下启动,要输入文本你必须处于插入模式:只需键入i即可。要退出插入模式请按Esc键,它将带你回到命令模式。
提示——如果你不确定你在哪个模式下,按Esc键两次将带你进入命令模式。使用vi编辑器打开一个文件。首先输入一些字符,然后进入命令模式以了解其中的区别。
三、退出vi退出vi的命令是:q。进入命令模式后键入冒号和’ q’ ,然后返回。如果你的文件被修改了,编辑器会警告你而且不让你退出。要忽略此消息不保存就退出vi的命令是:q!,这样就可以在不保存任何更改的情况下退出vi。
保存编辑器内容的命令是:w,你可以将上面的命令与quit命令组合使用,或者使用:wq和return。保存更改并退出vi的最简单方法是使用ZZ命令,在命令模式下输入ZZ, ZZ命令的工作方式与:wq命令相同。
如果你想指定/声明文件的任何特定名称,你可以在:w后面指定它。例如如果你想将正在处理的文件保存为另一个名为filename2的文件名,你可以输入:w filename2并返回。
四、在文件中移动要在文件中移动而不影响文本,必须处于命令模式(按Esc两次)。下表列出了一些命令,你可以使用这些命令一次移动一个字符
编号 命令 & 描述
1 k 将光标向上移动一行
2 j 将光标向下移动一行
3 h 将光标移动到左一字符位置
4 l 将光标移动到右一字符位置
【Unix和Linux的vi编辑器操作和用法完全解读教程】要在一个文件中移动,需要考虑以下几点:
  • vi是区分大小写的,在使用命令时需要注意大小写。
  • vi中的大多数命令都可以以希望操作发生的次数作为前缀,例如2j将光标沿光标位置向下移动两行。
在vi中移动文件还有许多其他方法。请记住必须处于命令模式(按Esc两次),下表列出了一些移动文件的命令
编号 命令 & 描述
1 0 or | 将光标置于行首
2 $ 将光标置于一行的末尾
3 w 将光标定位到下一个单词
4 b 将光标定位到前一个单词
5 ( 将光标定位到当前句子的开头
6 ) 将光标定位到下一个句子的开头
7 E 移动到空白分隔的单词的末尾
8 { 将段落向后移动
9 } 将段落向前移动
10 [[ 向后移动一部分
11 ]] 向前移动一段
12 n| 移动到当前行的第n列
13 1G 移动到文件的第一行
14 G 移动到文件的最后一行
15 nG 移动到文件的第n行
16 :n 移动到文件的第n行
17 fc 移到c
18 Fc 回到c
19 H 移动到屏幕顶部
20 nH 从屏幕顶部移动到第n行
21 M 移动到屏幕的中间
22 L 移动到屏幕的底部
23 nL 从屏幕底部移动到第n行
24 ?? 冒号后面跟一个数字将把光标定位在由x表示的行号上
五、控制命令下列命令可与控制键一起使用,以执行下表所示的功能。
编号 命令 & 描述
1 CTRL+d 向前移动1/2屏幕
2 CTRL+f 向前移动一个全屏
3 CTRL+u 向后移动1/2屏幕
4 CTRL+b 向后移动一个全屏
5 CTRL+e 将屏幕向上移动一行
6 CTRL+y 将屏幕向下移动一行
7 CTRL+u 将屏幕向上移动1/2页
8 CTRL+d 将屏幕向下移动1/2页
9 CTRL+b 将屏幕向上移动一页
10 CTRL+f 将屏幕向下移动一页
11 CTRL+I 屏幕重绘
六、编辑文件要编辑文件需要处于插入模式,从命令模式进入插入模式有很多方法:
编号 命令 & 描述
1 i 在当前光标位置之前插入文本
2 I 将文本插入到当前行的开头
3 a 在当前光标位置后插入文本
4 A 在当前行的末尾插入文本
5 o 为光标位置下方的文本条目创建新行
6 O 为光标位置上方的文本条目创建新行
七、删除字符下面是一些重要的命令,可以用来删除打开文件中的字符和行
编号 命令 & 描述
1 x 删除光标位置下的字符
2 X 删除光标位置之前的字符
3 dw 从当前光标位置删除到下一个单词
4 d^ 从当前光标位置删除到行首
5 d$ 从当前光标位置删除到行尾
6 D 从光标位置删除到当前行的末尾
7 dd 删除光标所在的行
如前所述vi中的大多数命令都可以以希望操作发生的次数作为前缀。例如2x删除光标位置下的两个字符,2dd删除光标所在的两行。
八、修改命令还可以在vi中更改字符、单词或行,而不需要删除它们。
编号 命令 & 描述
1 cc 删除行中的内容使处于插入模式。
2 cw 将光标所在的单词从光标更改为单词的小写w结尾。
3 r 替换光标下的字符,vi在输入替换后返回命令模式。
4 R 以当前光标下的字符开头覆盖多个字符。必须使用Esc来停止覆盖。
5 s 用你键入的字符替换当前字符,之后将处于插入模式。
6 S 删除光标所在的行,并用新文本替换它,输入新文本后vi仍然处于插入模式。
九、复制和粘贴命令
编号 命令 & 描述
1 yy 复制当前行。
2 yw 从小写w光标所在的字符中复制当前单词,直到该单词结束。
3 p 将复制的文本放在光标之后。
4 P 将拖动后的文本放在光标之前。
十、高级命令
编号 命令 & 描述
1 J 将当前行与下一行连接起来 j命令的数量连接许多行。
2 < <   将当前行向左移动一个移动宽度。
3 > >   将当前行向右移动一个移动宽度。
4 ~ 切换光标下字符的大小写。
5 ^G 同时按Ctrl和G键显示当前文件名和状态。
6 U 将当前行恢复到光标输入该行之前的状态。
7 u 这有助于撤消文件中所做的最后更改。再次输入“u”将重新执行更改。
8 J 将当前行与下一行连接起来。count将这些行连接起来。
9 :f 以%的形式显示文件的当前位置和文件名,即文件的总数。
10 :f filename 将当前文件重命名为filename。
11 :w filename 写入文件filename。
12 :e filename 打开另一个filename文件。
13 :cd dirname 将当前工作目录更改为dirname。
14 :e # 在两个打开的文件之间切换。
15 :n 如果你使用vi打开多个文件,请使用:n转到本系列中的下一个文件。
16 :p 如果使用vi打开多个文件,请使用:p转到本系列的前一个文件。
17 :N 如果你使用vi打开多个文件,请使用:N转到本系列的前一个文件。
18 :r file 读取文件并将其插入到当前行之后。
19 :nr file 读取文件并将其插入到行n之后。
十一、查找字符串和字符vi编辑器有两种搜索:字符串和字符。对于字符串搜索可以使用/和?命令。当启动这些命令时,刚刚键入的命令将显示在屏幕的最后一行,你在其中键入要查找的特定字符串。
这两个命令只在搜索的方向上有所不同
  • 命令向前(向下)搜索文件。
  • ?命令在文件中向后(向上)搜索。
n和n命令分别以相同或相反的方向重复前面的搜索命令。有些字有特殊的意义,这些字符前必须有一个反斜杠(\),以作为搜索表达式的一部分。
编号 字符 & 描述
1 ^ 在行的开头进行搜索(在搜索表达式的开头使用)。
2 . 匹配单个字符。
3 * 匹配前一个字符的零个或多个字符。
4 $ 行尾(在搜索表达式的末尾使用)。
5 [ 启动一组匹配或非匹配表达式。
6 <   这是用反斜杠转义的表达式来查找单词的结尾或开头。
7 >   这有助于查看上面的“< ”字符描述。
字符搜索在一行中搜索在命令后输入的字符,f和F命令只搜索当前行的字符。f向前搜索,F向后搜索,光标移动到找到的字符的位置。
t和T命令只搜索当前行的字符,但是对于t光标移动到字符之前的位置,而T向后搜索到字符之后的位置。
十二、设置命令可以使用以下命令来更改vi屏幕的外观和感觉,进入命令模式后键入:set,后面跟着下列任何命令。
编号 命令 & 描述
1 :set ic 搜索时忽略大小写
2 :set ai 设置自动缩进
3 :set noai 取消自动缩进
4 :set nu 在左侧显示带有行号的行
5 :set sw 设置软件选项卡的宽度。例如可以使用以下命令将移位宽度设置为4:set sw = 4
6 :set ws 如果设置了wrapscan,并且在文件的底部没有找到该单词,它将尝试在开始时搜索它
7 :set wm 如果该选项的值大于0,编辑器将自动“换行”。例如要将换行边距设置为两个字符,可以输入以下内容::set wm = 2
8 :set ro 将文件类型更改为“只读”
9 :set term 输出终端类型
10 :set bf 从输入中取消控制字符
十三、运行命令vi能够在编辑器中运行命令要运行一个命令,你只需要进入命令模式并输入:!命令。例如如果你想在尝试用该文件名保存文件之前检查文件是否存在,你可以输入:!你会在屏幕上看到ls的输出,你可以按任意键(或命令的转义序列)返回vi会话。
十四、替换文本替换命令(:s/)使你能够快速替换文件中的单词或单词组。替换文本的语法为 :s /search/replace/g,g代表全局,该命令的结果是游标行上出现的所有内容都被更改。
十五、注意事项以下几点将有助于你的vi -的成功
  • 必须在命令模式下才能使用命令。(请在任何时候按Esc两次,以确保你处于命令模式。)
  • 你必须小心使用这些命令。这些都是区分大小写的。
  • 必须处于插入模式才能输入文本。

    推荐阅读