上一章Unix和Linux教程请查看:Unix和Linux常用网络通信工具使用
在本章中我们将了解vi编辑器在Unix中的工作方式。在Unix中有许多方法可以编辑文件,使用面向屏幕的文本编辑器vi编辑文件是最好的方法之一。此编辑器允许你在上下文中用文件中的其他行编辑行。
一个被称为VIM的vi编辑器的改进版本也已经发布,在这里VIM代表Vi的改进。vi通常被认为是Unix编辑器中事实上的标准,因为:
- 它通常可用于所有类型的Unix系统。
- 它的实现是非常相似的。
- 它只需要很少的资源。
- 它比其他编辑如ed或ex更容易使用。
一、启动vi编辑器下表列出了使用vi编辑器的基本命令:
编号 | 命令 & 描述 |
1 | vi filename 如果文件不存在创建一个新的文件,否则打开一个现有的文件。 |
2 | vi -R filename 以只读模式打开现有文件。 |
3 | view filename 以只读模式打开现有文件。 |
二、操作模式在使用vi编辑器时我们通常会遇到以下两种模式:
- 命令模式——这种模式使你能够执行管理任务,如保存文件、执行命令、移动光标、剪切(猛拉)和粘贴行或单词,以及查找和替换。在此模式下,你键入的任何内容都被解释为命令。
- 插入模式——这种模式允许你将文本插入到文件中。在此模式中键入的所有内容都被解释为输入并放在文件中。
提示——如果你不确定你在哪个模式下,按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 将光标移动到右一字符位置 |
- vi是区分大小写的,在使用命令时需要注意大小写。
- vi中的大多数命令都可以以希望操作发生的次数作为前缀,例如2j将光标沿光标位置向下移动两行。
编号 | 命令 & 描述 |
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中更改字符、单词或行,而不需要删除它们。
编号 | 命令 & 描述 |
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之后。 |
这两个命令只在搜索的方向上有所不同
- 命令向前(向下)搜索文件。
- ?命令在文件中向后(向上)搜索。
编号 | 字符 & 描述 |
1 | ^ 在行的开头进行搜索(在搜索表达式的开头使用)。 |
2 | . 匹配单个字符。 |
3 | * 匹配前一个字符的零个或多个字符。 |
4 | $ 行尾(在搜索表达式的末尾使用)。 |
5 | [ 启动一组匹配或非匹配表达式。 |
6 | < 这是用反斜杠转义的表达式来查找单词的结尾或开头。 |
7 | > 这有助于查看上面的“< ”字符描述。 |
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 从输入中取消控制字符 |
十四、替换文本替换命令(:s/)使你能够快速替换文件中的单词或单词组。替换文本的语法为 :s /search/replace/g,g代表全局,该命令的结果是游标行上出现的所有内容都被更改。
十五、注意事项以下几点将有助于你的vi -的成功
- 必须在命令模式下才能使用命令。(请在任何时候按Esc两次,以确保你处于命令模式。)
- 你必须小心使用这些命令。这些都是区分大小写的。
- 必须处于插入模式才能输入文本。
推荐阅读
- Linux开发必备!vim编辑器中文手册和参考文档pdf下载
- Unix和Linux常用网络通信工具使用介绍
- Unix和Linux进程管理操作和使用原理介绍
- Unix和Linux管道(pipe)和过滤器(filter)使用介绍
- Unix和Linux基本工具(打印文件和发送邮件)
- 如何在JavaScript中对字符串排序()
- C++ STL中的accumulate()和partial_sum()(数字标头)
- 检查一个字符串是否是另一个的子字符串
- JavaScript Gallery插件用法介绍