说明

基本上vi共分为三种模式,分别是一般模式编辑模式指令列命令模式。这三种模式的作用分别是:

  • 一般模式:

    vi找开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用上下左右按键来移动光标,你可以使用删除字符删除整行来处理档案内容,也可以使用复制粘贴来处理你的文件数据。

  • 编辑模式:

    在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下i,I,o,O,a,A,r,R等任何一个字母之后才会进行编辑模式。通常在Linux中,按下这些按键时,在画面的左下方会出insertreplace的字样,此时才可以进行编辑。而如查要回到一般时,则必须要按下ESC才可以退出编辑模式

  • 指令列命令模式:

    在一般模式当中,输入: / ?三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你搜寻资料的动作,而读取存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!

一般模式

进入vi的命令

vi filename:打开或新建文件,并将光标置于第一行首。

vi +n filename: 打开文件,并将光标置于第n行首。

vi + filename: 打开文件,并将光标置于最后一行首。

vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处。

vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename。

vi filename....filename: 打开多个文件,依次进行编辑。

编辑模式

新增 (append)

a:从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。

A:从光标所在列最後面的地方开始新增资料。

插入 (insert)

i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。

I:从光标所在列的第一个非空白字元前面开始插入资料。

开始 (open)

o:在光标所在列下新增一列并进入输入模式。

O: 在光标所在列上方新增一列并进入输入模式。

r:修改光标所在字元,r 後接著要修正的字符。

R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。

s:删除光标所在字元,并进入输入模式。

S:删除光标所在的列,并进入输入模式。

删除(delete)

ndwndW: 删除光标处开始及其后的n-1个字

do:删至行首

d$:删至行尾

dd:删除光标所在的列。

ndd:删除当前行及其后n-1行

xX:删除一个字符,x删除光标后的,而X删除光标前的

Ctrl+u:删除输入方式下所输入的文本

ncwnCW:修改指定数目的字

nCC:修改指定数目的行

移动光标(move)

h:光标左移一个字符

l:光标右移一个字符

space:光标右移一个字符

Backspace:光标左移一个字符

kCtrl+p:光标上移一行

jCtrl+n:光标下移一行

Enter:光标下移一行

wW:光标右移一个字至字首

bB:光标左移一个字至字首

eE:光标右移一个字至字尾

):光标移至句尾

(:光标移至句首

}:光标移至段落开头

{:光标移至段落结尾

nG:光标移至第n行首

n+:光标下移n行

n-:光标上移n行

n$:光标移至第n行尾

H:光标移至屏幕顶行

M:光标移至屏幕中间行

L:光标移至屏幕最后行

0:光标移至当前行首

$:光标移至当前行尾

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏

Ctrl+d:向文件尾翻半屏

Ctrl+f:向文件尾翻一屏

Ctrl+b:向文件首翻一屏

nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

退出vi

在指令模式下键入:q,:q!,:wq:x(注意:号),就会退出vi。

  • :q:直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效。
  • :q!:不保存文件而直接退出。
  • :wq:x:存盘退出。

指令列命令模式

搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern

?pattern:从光标开始处向文件首搜索pattern

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

:s/p1/p2/g:将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:将文件中所有p1均用p2替换

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下

:n1,n2 d:将n1行到n2行之间的内容删除

u:撤销上一步的操作

ctrl+r:恢复上一步被撤销的操作

选项设置

以下命令前面都要加set

all:列出所有选项设置情况

term:设置终端类型

ignorance:在搜索中忽略大小写

list:显示制表位(ctrl+i)和行尾标志($)

number:显示行号,可简写为nu

report:显示由面向行的命令修改过的数目

terse:显示简短的警告信息

warn:在转到别的文件时若没保存当前文件则显示no write信息

nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符

nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始

mesg:允许vi显示其他用户用write写到自己终端上的信息