Vi 编辑器

Vi的用法

1.简介

Vi,是一个文本编辑器,可以执行输出、删除、查找、替换、块操作等众多文本操作,vi不是一个排版程序。不像word或WPS那样可以对字体、格式、段落等属性进行编排,他只是一个文本编辑器。

2.进入vi文本编辑器的方式

方式

说明

vi

进入vi默认模式

vi filename

打开新建文件filename,并将光标置于第一行

vi +n filename

打开文件filename,并将光标置于n行首

vi + filename

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

vi +/pattern filename

打开文件filename ,并将光标置于第一个与pattern匹配的行。

3.Vi的三种模式

4.命令模式下的操作 a o i

1) 命令模式下进入输入模式

命令

说明

i

光标所在位置前开始插入文本

I

将光标移至当前行的行首,然后在其插入文本

a

当前光标所在位置之后追加文本。

A

将光标挪到当前行的行尾,从那里开始插入新文本

o

将光标所在行的下面新开一行,并将光标置于该行的行首,输入文本

O

在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本

2) 命令模式下的光标定位

命令

说明

G

将光标移至最后一行行首 尾部

gg

将光标移至第一行(首行) 首部

nG

光标移至第n行的行首 直接定位

n+

光标下移n行

n-

光标向上移动n行

n$

光标移至第n行行尾 相对于当前行

移动至所在行的行首 绝对行首

$

移到光标所在行的行尾

^

移到光标所在行的第一个字符(非空格) 非空白符

h,j,k,l

左,下,上,右

3) 命令模式下的替换和删除

命令

说明

rc

用字符c替换光标所指向的当前字符

nrc

用字符c替换光标所指向的n个字符

x

删除光标处的字符

nx

删除从光标位置开始向右的n个字符

dw

删除一个单词

ndw

删除n个指定的单词

db

删除光标所在位置之前的单词

ndb

删除所在位置之前的n个单词

dd

删除光标所在整行

ndd

删除n行

dG

删除光标位置到最后一行的所有内容

d1G

删除光标位置到第一行的所有内容

d$

删除光标位置到当前行的末尾的内容

d0

删除光标位置到当前行开始的内容

4) 命令模式下的复制和粘贴

命令

说明

yy

当前行内容复制到缓冲区

nyy

将当前行开始n行内容复制到缓冲区

yG

将当前光标位置到最后一行的所有内容复制到缓冲区

y1G

将当前光标位置到第一行的所有内容复制到缓冲区

y$

将当前光标到当前行尾内容复制到缓冲区

y0

将当前光标位置到当前行开始的内容复制缓冲区

p

将缓冲区的内容写出到光标所在位置

5) 命令模式下的搜索

命令

说明

/str

向下查找

?str

向上查找

n

相同方向移动

N

向反方向移动

6) 命令模式下撤销、重做

命令

说明

u

撤销

Ctrl+r

重做撤销的动作

7) 命令模式下退出vi

命令

说明

ZZ

存盘退出

ZQ

不保存退出

8) 翻屏

命令

说明

Ctrl+f

向下翻

Ctrl+b

向上翻

5.末行模式下的操作

1) 末行模式下退出vi

命令

说明

:q

退出 没有动过文件

:wq

保存并退出

:q!

不保存并退出

:w

保存

:x

保存退出等价于:wq

2) 末行模式下的跳行

命令

说明

:n

直接输入移动的行号

3) 在命令模式下搜索和替换字符串

命令

说明

:/str

向后搜索 n 同方向切换 N 反方向切换

:?str

向前搜索 n 同方向切换 N 反方向切换

:/str/w file

将包含有str行的写到file中 搜索 io读写 写磁盘

:/str1/,/str2/w file

从str1开始到str2结束的内容写入到file文件中

:s/str1/str2/

找到的第一个str1替换为str2 在同一行内替换第一个

:s/str1/str2/g

找到的所有的str1替换为str2 在同一行内替换所有

:n1,n2s/str1/str2/g

从n1行到n2行找到所有的str1替换为str2

:1,.s/str1/str2/g

从第一行到当前位置所有的str1替换为str2

:.,$s/str1/str2/g

从当前位置到结尾所有的str1替换为str2

4) 在命令模式下复制、移动和删除文件行

命令

说明

:n1,n2 co n3

将从n1开始到n2开始为止所有内容复制到n3后面 copy

:n1,n2 m n3

将从n1开始到n2为止的所有内容移动到n3后面

:d

删除当前行

:nd

根据指定的行号删除指定的行

:n1,n2 d

删除从n1开始到n2所有内容

:.,$d

删除从当前行到结尾的所有内容

:0,.d

删除当前行到首行

:/str1/,/str2/d

删除从str1开始到str2为止所有内容

5) 在命令模式下的文件相关命令

命令

说明

:w file

将当前编辑的内容写到file文件中 另存为

:n1,n2 w file

将从n1开始到n2结束的行写入到file中

:nw file

将第n行写入到文件中

:1,.w file

从第一行起到光标当前位置写入到file文件中

:.,$ w file

从当前位子到文件结尾内容写入到file中

:r file

打开另一个文件

:e file

新建file文件

:f file

把当前文件改名为file文件

6) 在命令模式下执行Shell命令

命令

说明

:!cmd

运行Shell命令

:r!cmd

将命令运行的结果写入当前位置

7) 设置vi的环境

命令

说明

:set nu

设置行号

:set nonu

取消行号

:set readonly

设为只读