Vi 编辑器

Posted Jony.K.Chen Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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行行尾  相对于当前行

0

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

$

移到光标所在行的行尾

^

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

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

设为只读

 

以上是关于Vi 编辑器的主要内容,如果未能解决你的问题,请参考以下文章

linux--vi编辑器

vi编辑器

Linux vi 编辑器问题

Linux系统 vi/vim文本编辑器

vi编辑器经典技巧 -备

Linux基础-06-vi编辑器