1、vi和vim
现在还提供了一个改进版的vi
编辑器,称为VIM。vim
也就是vi
的升级版本,它不仅兼容vi
的所有指令,而且还有一些新的特性在里面。具体如下:
1)多级撤销
我们知道在vi里,按 u
只能撤消上次命令,而在vim里可以无限制的撤消。
2)易用性
vi只能运行于Linux中,而vim不仅可以运行于Linux,Windows ,Mac等多操作平台。
3)语法加亮
vim可以用不同的颜色来加亮你的代码。
4)可视化操作
就是说vim不仅可以在终端运行,也可以运行于X Window、 Mac OS、 Windows。
5)对vi的完全兼容
vi通常被认为是Linux标准编辑器,有以下几点原因:
- 它通常在所有Linux系统上都可用。
- 它的实现在各个方面都非常相似。
- 它只需要很少的资源。
- 它比其他编辑,如ed或ex更容易使用。
可以使用vi编辑器编辑现有文件,也可以从头创建新文件。也可以使用这个编辑器来读取文本文件。
2、启动vi编辑器
使用vi编辑器的基本命令,如下表,
命令 | 说明 |
vi filename | 如果新文件不存在,则创建新文件,否则打开现有文件。 |
vi -R filename | 以只读模式打开现有文件。 |
view filename | 以只读模式打开现有文件。 |
可以使用下面命令创建文件,
例如,
$ vi filename
注意:filename
这个文件要不存在,否则就是编辑文件了。
上面的命令将生成以下输出:
|
~
~
~
~
~
~
~
~
~
~
~
~
"filename" [New File]
注意:光标后面的每行上都有一个波浪线(~
)。波浪线表示未使用的线。如果一行不是以波浪线开始,并且看起来是空的,则存在空格、制表符、换行符或其他一些不可见字符。
3、操作模式
在使用vi
编辑器时,通常会遇到以下两种模式:
1)命令模式
可以执行保存文件、执行命令、移动光标、剪切(拽)、粘贴行或字、查找和替换等管理任务。在此模式下,无论键入什么,都会被解释为命令。
2)插入模式
将文本插入到文件中。在这种模式下输入的所有内容都被解释为输入并放在文件中。
Vi总是在命令模式下启动。要输入文本,必须处于插入模式,只需键入i
即可。要退出插入模式,按Esc
键,将返回到命令模式。
注意:如果不确定在哪个模式,按两次Esc
键;这将进入命令模式。使用vi编辑器打开文件。首先输入一些字符,然后进入命令模式来理解差异。
4、退出vi编辑器
退出vi的命令为:q
。一旦进入命令模式,需要按:
和q
键,然后退出。如果文件以任何方式被修改,编辑器将警告这一点,并不让退出。如果要忽略此消息,则不保存退出vi的命令为:q
!,这允许在不保存任何更改的情况下退出vi。
保存编辑器内容的命令为:w
。可以将上述命令与quit命令结合使用,或者使用:wq
并返回。
保存更改并退出vi的最简单方法是使用ZZ
命令。在命令模式下,输入ZZ
,其工作原理与:wq
相同。
如果想要指定另存为其它名称文件,可以在:w
后面指定。例如,如果想将正在处理的文件,保存为另一个名为filename2
的文件名,可以键入:w filename2
并返回。
5、在文件中移动光标
要在不影响文本的情况下在文件中移动,必须处于命令模式(按两次Esc
)。一些可以用来一次移动一个字符的命令,如下表,
命令 | 描述 |
| 将光标上移一行 |
| 将光标向下移动一行 |
| 将光标向左移动一个字符位置 |
| 将光标向右移动一个字符位置 |
注意:要在文件中移动,需要考虑以下几点 :
1)vi是区分大小写的。 使用命令时,请注意大小写。
2)vi中的大多数命令都可以想要操作发生的次数作为开头。 例如,2j
将光标向下移动两行。
3)在vi中有许多其他的方法在文件中移动。记住必须在命令模式下(按两次Esc
)。
下表列出了一些用于快速移动光标的命令:
命令 | 说明 |
| 将光标定位于行首 |
| 将光标定位于行尾 |
| 将光标定位到下一个单词 |
| 将光标定位到前一个单词 |
| 将光标定位到当前句子的开头 |
| 将光标定位到下一个句子的开头 |
| 移到单词的结尾 |
| 移到单词的结尾(忽略标点符号) |
| 移到下一个句子的开头 |
| 到下一段的开头 |
| 移到当前这一节的开头 |
| 移到下一节的开头 |
| 移动到当前行的n列 |
| 移动到文件的第一行 |
| 移动到文件的最后一行 |
| 移动到文件的第n行 |
| 移动到文件的第n行 |
| 转到c |
| 回到c |
| 移动到屏幕的顶部 |
| 移动到屏幕上方的第n行 |
| 移动到屏幕的中间 |
| 移动到屏幕的底部 |
| 移动到屏幕底部的第n行 |
| 冒号后面跟着一个数字可以将光标定位到由x表示的行号上 |
5、控制命令
下面的命令可以与Ctrl
键盘一起使用,具体实现的功能,如下表,
按键 | 说明 |
CTRL+d | 向前移动1/2个屏幕 |
CTRL+f | 向前移动一个全屏 |
CTRL+u | 向后移动1/2屏幕 |
CTRL+b | 向后移动一个全屏 |
CTRL+e | 将屏幕上移一行 |
CTRL+y | 将屏幕向下移动一行 |
CTRL+u | 将屏幕上移1/2页 |
CTRL+d | 将屏幕向下移动1/2页 |
CTRL+b | 将屏幕上移一页 |
CTRL+f | 将屏幕向下移动一页 |
CTRL+I | 屏幕重绘 |
6、编辑文件
要编辑文件,需要处于插入模式。有许多方法可以从命令模式进入插入模式,如下表,
按键命令 | 说明 |
| 在当前光标位置之前插入文本 |
| 在当前行的开头插入文本 |
| 在当前光标位置之后插入文本 |
| 在当前行的末尾插入文本 |
| 为光标位置下方的文本条目创建一个新行 |
| 在光标位置上方为文本输入创建一个新行 |
7、删除字符
下面是一些重要的命令,可以用来删除打开文件中的字符和行,如下表,
按键命令 | 说明 |
| 删除光标位置下的字符 |
| 删除光标位置之前的字符 |
| 从当前光标位置删除到下一个单词 |
| 从当前光标位置删除到行首 |
| 从当前光标位置删除到行尾 |
| 从光标位置删除到当前行末尾 |
| 删除光标所在的行 |
如上所述,vi中的大多数命令都可以执行操作的次数作为开头。例如,2x
删除光标位置下的两个字符,2dd
删除光标所在的两行。
建议在进一步操作之前先练习一下这些命令。
8、修改命令
还可以在vi中更改字符、单词或行,而不删除它们。以下是相关的命令,如下表,
按键命令 | 说明 |
| 删除该行的内容,使处于插入模式。 |
| c替换从光标所在位置后到一个单词结尾的字符(相当于删除), 并进入插入模式。 |
| 替换光标下的字符。输入更换命令后,Vi返回命令模式。 |
| 替换以当前光标下的字符开始的多个字符。必须使用Esc停止替换。 |
| 将当前字符替换为键入的字符。之后,将处于插入模式。 |
| 删除光标所在的行,并将其替换为新文本。输入新文本后,vi仍然处于插入模式。 |
9、复制粘贴命令
可以从一个地方复制行或单词,然后可以使用命令将它们粘贴到另一个地方,按键命令如下表,
按键命令 | 说明 |
| 复制当前行。 |
| 复制光标所在的字符的单词,直到该单词的末尾。 |
| 将复制的文本放在光标后。 |
| 将复制出的文本放在光标之前。 |
10、高级命令
有一些高级命令可以简化日常编辑,并允许更有效地使用vi,如下表,
按键命令 | 说明 |
| 将当前行与下一行连接。要连接n行需要使用nJ。 |
| 将当前行向左移动一个shift宽度。 |
| 将当前行向右移动一个shift宽度。 |
| 切换光标下字符的大小写。 |
| 同时按Ctrl键和G键显示当前文件名和状态。 |
| 将当前行恢复到光标进入该行之前的状态。 |
| 撤消文件中所做的最后更改。再次键入“u”将上上次的更改。 |
| 显示当前在文件中的位置(%)和文件名(文件的总数)。 |
| 将当前文件重命名为filename。 |
| 写入文件文件名。 |
| 打开另一个文件名文件。 |
| 将当前工作目录更改为dirname。 |
| 在两个打开的文件之间切换。 |
| 如果使用vi打开多个文件,则使用:n进入本系列的下一个文件。 |
| 如果使用vi打开多个文件,请使用:p转到本系列中的前一个文件。 |
| 如果使用vi打开多个文件,请使用:N进入本系列中的前一个文件。 |
| 读取文件并将其插入到当前行之后。 |
| 读取文件并将其插入到行n之后。 |
11、字词搜索
vi编辑器有两种搜索:字符串和字符。对于字符串搜索,/
和?
使用命令。当开始执行这些命令时,刚刚输入的命令将显示在屏幕的最后一行,即键入要查找的特定字符串的地方。
这两个命令只是在搜索发生的方向上不同:
/
命令在文件中向前(向下)搜索。
?
命令在文件中向后(向上)搜索。
n
和N
命令分别在相同或相反的方向重复前面的搜索命令。有些字有特殊的含义。这些字符前必须有一个反斜杠(\
)作为搜索表达式的一部分进行转义。
特殊字符如下表,
按键命令 | 说明 |
| 在行开头搜索(在搜索表达式的开头使用)。 |
| 匹配单个字符。 |
| 匹配零个或多个前一个字符。 |
| 行尾(在搜索表达式的末尾使用)。 |
| 开始一组匹配或不匹配的表达式。 |
| 这被放在一个用反斜杠转义的表达式中,以查找单词的结尾或开头。 |
| 这有助于看到上面的'<'字符描述。 |
字符搜索在一行内查找命令后输入的字符。f
和F
命令只搜索当前行的字符。f
向前搜索,F
向后搜索,光标移动到找到的字符位置。
t
和T
命令只搜索当前行的字符,但对于t
,光标会移动到字符之前的位置,T
会反向搜索到字符之后的位置。
12、set命令
可以使用命令更改vi屏幕的外观和感觉:set
命令。进入命令模式后,输入:set
,然后输入以下命令中的任何一个。命令如下表,
按键命令 | 说明 |
| 搜索时忽略大小写 |
| 设置autoindent |
| 取消设置autoindent |
| 在左边显示带有行号的行 |
| 设置软件制表符的宽度。例如,:set sw = 4可以用这个命令设置shift宽度为4 |
| 如果设置了wrapscan,并且在文件底部没有找到单词,它将尝试在开始时搜索它 |
| 如果这个选项的值大于零,编辑器将自动“换行”。例如,要将换行距设置为两个字符,可以输入:set wm = 2 |
| 将文件类型更改为“只读” |
| 输出终端类型 |
| 从输入中丢弃控制字符 |
13、运行命令
vi能够从编辑器中运行命令。执行命令时,只需进入命令模式,输入:!
命令。
例如,如果想在尝试使用该文件名保存文件之前检查该文件是否存在,可以输入:!
会在屏幕上看到ls
的输出。
可以按任意键返回vi会话。
14、替换文本
替换命令(:s/
)允许快速替换文件中的单词或单词组。下面是替换文本的语法:
:s/search/replace/g
g
代表全局。此命令的结果是,光标所在行的所有出现的内容都将被更改。
15、注意事项
以下几点将有助于成功使用vi:
1)必须在命令模式下才能使用这些命令。(任何时候按两次Esc
,以确保处于命令模式。)
2)必须小心使用这些命令。这些都是区分大小写的。
3)必须处于插入模式才能输入文本。