Vi,是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的编辑器有vi、vim(vi的增强版本)。vi和vim是我们在Linux中最常用的编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。

相关文档Linux Vim(vi) 常使用命令快捷键合集

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)。一些可以用来一次移动一个字符的命令,如下表,

命令

描述

k

将光标上移一行

j

将光标向下移动一行

h

将光标向左移动一个字符位置  

l

将光标向右移动一个字符位置  

注意:要在文件中移动,需要考虑以下几点 :

1)vi是区分大小写的。 使用命令时,请注意大小写。

2)vi中的大多数命令都可以想要操作发生的次数作为开头。 例如,2j将光标向下移动两行。

3)在vi中有许多其他的方法在文件中移动。记住必须在命令模式下(按两次Esc)。

下表列出了一些用于快速移动光标的命令:

命令

说明

0|

将光标定位于行首  

$

将光标定位于行尾

w

将光标定位到下一个单词

b

将光标定位到前一个单词

(

将光标定位到当前句子的开头  

)

将光标定位到下一个句子的开头

e

移到单词的结尾

E

移到单词的结尾(忽略标点符号)

{

移到下一个句子的开头

}

到下一段的开头

[[

移到当前这一节的开头

]]

移到下一节的开头

n|

移动到当前行的n列

1G

移动到文件的第一行

G


移动到文件的最后一行

nG

移动到文件的第n行

:n

移动到文件的第n行

fc

转到c

Fc

回到c

H

移动到屏幕的顶部

nH


移动到屏幕上方的第n行

M

移动到屏幕的中间

L

移动到屏幕的底部

nL

移动到屏幕底部的第n行

:x

冒号后面跟着一个数字可以将光标定位到由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、编辑文件

要编辑文件,需要处于插入模式。有许多方法可以从命令模式进入插入模式,如下表,

按键命令

说明

i

在当前光标位置之前插入文本

I

在当前行的开头插入文本

a

在当前光标位置之后插入文本

A

在当前行的末尾插入文本

o

为光标位置下方的文本条目创建一个新行

O

在光标位置上方为文本输入创建一个新行

7、删除字符

下面是一些重要的命令,可以用来删除打开文件中的字符和行,如下表,

按键命令

说明

x

删除光标位置下的字符

X

删除光标位置之前的字符

dw

从当前光标位置删除到下一个单词

d^

从当前光标位置删除到行首

d$

从当前光标位置删除到行尾

D

从光标位置删除到当前行末尾

dd

删除光标所在的行

如上所述,vi中的大多数命令都可以执行操作的次数作为开头。例如,2x删除光标位置下的两个字符,2dd删除光标所在的两行。

建议在进一步操作之前先练习一下这些命令。

8、修改命令

还可以在vi中更改字符、单词或行,而不删除它们。以下是相关的命令,如下表,

按键命令

说明

cc

删除该行的内容,使处于插入模式。

cw

c替换从光标所在位置后到一个单词结尾的字符(相当于删除), 并进入插入模式。

r

替换光标下的字符。输入更换命令后,Vi返回命令模式。

R

替换以当前光标下的字符开始的多个字符。必须使用Esc停止替换。

s

将当前字符替换为键入的字符。之后,将处于插入模式。

S

删除光标所在的行,并将其替换为新文本。输入新文本后,vi仍然处于插入模式。

9、复制粘贴命令

可以从一个地方复制行或单词,然后可以使用命令将它们粘贴到另一个地方,按键命令如下表,

按键命令

说明

yy

复制当前行。

yw

复制光标所在的字符的单词,直到该单词的末尾。

p

将复制的文本放在光标后。

P

将复制出的文本放在光标之前。

10、高级命令

有一些高级命令可以简化日常编辑,并允许更有效地使用vi,如下表,

按键命令

说明

J

将当前行与下一行连接。要连接n行需要使用nJ。

<<

将当前行向左移动一个shift宽度。

>>

将当前行向右移动一个shift宽度。

~

切换光标下字符的大小写。

^G

同时按Ctrl键和G键显示当前文件名和状态。

U

将当前行恢复到光标进入该行之前的状态。

u

撤消文件中所做的最后更改。再次键入“u”将上上次的更改。

:f

显示当前在文件中的位置(%)和文件名(文件的总数)。

:f filename

将当前文件重命名为filename。

:w filename

写入文件文件名。

:e filename

打开另一个文件名文件。

:cd dirname

将当前工作目录更改为dirname。

:e #

在两个打开的文件之间切换。

:n

如果使用vi打开多个文件,则使用:n进入本系列的下一个文件。

:p

如果使用vi打开多个文件,请使用:p转到本系列中的前一个文件。

:N

如果使用vi打开多个文件,请使用:N进入本系列中的前一个文件。

:r file

读取文件并将其插入到当前行之后。

:nr file

读取文件并将其插入到行n之后。

11、字词搜索

vi编辑器有两种搜索:字符串和字符。对于字符串搜索,/?使用命令。当开始执行这些命令时,刚刚输入的命令将显示在屏幕的最后一行,即键入要查找的特定字符串的地方。

这两个命令只是在搜索发生的方向上不同:

/命令在文件中向前(向下)搜索。

?命令在文件中向后(向上)搜索。

nN命令分别在相同或相反的方向重复前面的搜索命令。有些字有特殊的含义。这些字符前必须有一个反斜杠(\)作为搜索表达式的一部分进行转义。

特殊字符如下表,

按键命令

说明

^

在行开头搜索(在搜索表达式的开头使用)。

.

匹配单个字符。

*

匹配零个或多个前一个字符。

$

行尾(在搜索表达式的末尾使用)。

[

开始一组匹配或不匹配的表达式。

<

这被放在一个用反斜杠转义的表达式中,以查找单词的结尾或开头。

>

这有助于看到上面的'<'字符描述。

字符搜索在一行内查找命令后输入的字符。fF命令只搜索当前行的字符。f向前搜索,F向后搜索,光标移动到找到的字符位置。

tT命令只搜索当前行的字符,但对于t,光标会移动到字符之前的位置,T会反向搜索到字符之后的位置。

12、set命令

可以使用命令更改vi屏幕的外观和感觉:set命令。进入命令模式后,输入:set,然后输入以下命令中的任何一个。命令如下表,

按键命令

说明

:set ic

搜索时忽略大小写

:set ai

设置autoindent

:set noai

取消设置autoindent

:set nu

在左边显示带有行号的行

:set sw

设置软件制表符的宽度。例如,:set sw = 4可以用这个命令设置shift宽度为4

:set ws

如果设置了wrapscan,并且在文件底部没有找到单词,它将尝试在开始时搜索它

:set wm

如果这个选项的值大于零,编辑器将自动“换行”。例如,要将换行距设置为两个字符,可以输入:set wm = 2

:set ro

将文件类型更改为“只读”

:set term

输出终端类型

:set bf

从输入中丢弃控制字符

13、运行命令

vi能够从编辑器中运行命令。执行命令时,只需进入命令模式,输入:!命令。

例如,如果想在尝试使用该文件名保存文件之前检查该文件是否存在,可以输入:!会在屏幕上看到ls的输出。

可以按任意键返回vi会话。

14、替换文本

替换命令(:s/)允许快速替换文件中的单词或单词组。下面是替换文本的语法:

:s/search/replace/g

g代表全局。此命令的结果是,光标所在行的所有出现的内容都将被更改。

15、注意事项

以下几点将有助于成功使用vi:

1)必须在命令模式下才能使用这些命令。(任何时候按两次Esc,以确保处于命令模式。)

2)必须小心使用这些命令。这些都是区分大小写的。

3)必须处于插入模式才能输入文本。

相关文档Linux Vim(vi) 常使用命令快捷键合集