1. 首页 > 知识 > Linux

vi基本操作方法

一     vi的操作模式

vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。

在输入模式下,按Esc键切换到指令模式下。

在指令模式下,按输入指令(iao等)进入输入模式。

二     进入vi

$ vi  filename

直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。

如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。

 

$ view filename

以只读方式打开文件filename

 

三     指令模式

以下指令集中重要度为“***”的必须掌握的指令,否则无法正常使用vi,重要度为“*”的为建议掌握的指令,可以更方便地使用vi,其它属于技巧级指令,可以不掌握。

3.1      进入输入模式

重要度

指令集

功能

***

a

在当前游标之后输入


A

在当前行之末输入

***

i

在当前游标之前输入


I

在当前行之首输入

***

o

在当前行之下新增一行,并在新增行输入


O

在当前行之上新增一行,并在新增行输入

输入结束后,按Esc键退出输入模式。

3.2      游标移动

重要度

指令集

功能

***

h

向左移动一个字元

***

l

向右移动一个字元

***

j

向下移动一个字元

***

k

向上移动一个字元

*

b

左移一个单词,至词首

*

w

右移一个单词,至词尾

*

0

移到当前行行首

*

$

移到当前行行尾


+

移至下一行的行首


-

移至上一行的行首


H

移至视窗的第一行


M

移至视窗的中间一行


L

移至视窗的最后一行


G

移至该文件的最后一行


nG

移至该文档的第n


n+

下移n


n-

上移n

 

3.3      视窗移动

重要度

指令集

功能

***

<Ctrl> + f

视窗下卷一页

***

<Ctrl> + b

视窗上卷一页


<Ctrl> + d

视窗下卷半页


<Ctrl> + u

视窗上卷半页

*

<Ctrl> + e

视窗下卷一行

*

<Ctrl> + y

视窗上卷一行

 

3.4      删除操作

重要度

指令集

功能

***

X

删除游标所在字元


X

删除游标前一字元

*

Dw

从游标当前位置开始向后删除一个单词


Db

从游标当前位置开始向前删除一个单词

*

D0

从行首删除至当前游标位置

*

D$

从游标当前位置删除至行尾

***

Dd

删除游标所在行


D

d$

 

3.5      修改操作

重要度

指令集

功能

***

s

修改游标所在字元,修改完成后按Esc键结束


S

修改整行内容,修改完成后按Esc键结束

*

r

替换当前游标所在字元

*

R

进入替换状态,直至按Esc键结束

*

cw

修改一个单词(从游标位置至词尾)


cb

修改一个单词(从词首至游标位置)

*

cc

修改整行内容,完成后按Esc键结束,同S

*

c0

修改行首至游标位置的内容

*

c$

修改游标位置至行尾的内容


~

游标所在字元大小写切换

 

3.6      指令重复

在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:

重要度

指令集

功能

***

nx

删除n个字元

***

ndd

删除n

***

ns

修改n个字元

 

3.7      取消前一动作(Undo

重要度

指令集

功能

***

u

撤消上一指令的结果

 

3.8      查找字符串

重要度

指令集

功能

***

/字符串

从当前游标向后查找该字符串

***

?字符串

从当前游标向前查找该字符串

***

n

从当前游标向后查找下一个字符串

***

N

从当前游标向前查找下一个字符串

 

3.9      查看编辑状况

重要度

指令集

功能

***

<Ctrl> + g

显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改

 

3.10     括号匹配

重要度

指令集

功能

*

%

定位到匹配的“(”、“)”、“{”、“}”

 

四    保存与退出

重要度

指令集

功能

***

:w

保存,但不退出

***

:wq

保存并退出


:x

:wq

***

:q

退出,如果当前文件没有保存,禁止退出

***

:q!

不保存退出


:w file1

将内容保存至文件file1中,注意:此时编辑的仍为原文件


:w! file1

将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行

 

五     环境设置

重要度

指令集

功能


:set

显示已设置的环境状况


:set all

显示所有的环境设置选项

*

:set nu

显示行号

*

:set nonu

不显示行号

*

:set ts=n

设置Tab键的长度为n

注:vi环境设置的缺省值可在$HOME/.exrc文件中设置。

六     执行指令

以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。

重要度

指令集

功能

*

:10,20d

删除第10行至第20行的内容


:10d

删除第10行的内容


:%d

删除全部内容

*

:10,20co30

将第10行至第20行的内容复制到第30行之后

*

:10,20mo30

将第10行至第20行的内容移动到第30行之后


:1,$s/old/new

将第1行至最后一行中的old替换成new


:1,$s/^/new

将第1行至最后一行的内容前面插入new

*

:10

将游标移至第10

 

七     重复指令

重要度

指令集

功能

*

.

重复上一条指令

 

 

八     切换到shell状态

重要度

指令集

功能

***

:sh

切换到shell状态,exit返回

 


本文由傻鸟发布,不代表傻鸟立场,转载联系作者并注明出处:https://www.shaniao.net/linux/155.html

加载中~

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:10:30-15:30,节假日休息