编辑器——Vi 使用详解

本文介绍Vi编辑器的基础使用方法,包括其三种模式:命令行模式、文本输入模式和末行模式的特点及转换方式,并列举了各模式下的常用命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编辑器—— Vi  使用详解

作者: zccst

 

对于用惯了 Microsoft office 系列产品的用户,在第一次使用 Linux 下的 vi 编辑器时可能会感觉到一些困难,甚至想放弃,比如一个复制 + 粘贴就让你云里雾里,不知如何下手,我曾经就是。因为有大量的命令需要记忆,给人的感觉是 Linux 下把简单的问题复杂化了,正好跟人类的常规思维背道而驰。

 

但是,使用过一段时间之后,这种排斥感变小了,开始觉得也很好用,原因很简单,因为记住了那些指令,使用变得原越来越熟练。然而,面对如此繁杂的命令,一下子全部记住确实不是一夕之功,所以本文就列出 vi 编辑器常用命令,以便记忆和查询。

 

应该指出,熟练使用编辑器 vi 不是目的,只是手段。与使用 Word 的目的一样,差别仅仅是实现的方式而已(当然 Vi 一般用来编辑配置文件、脚本和程序),所以大可不必太较真。

 

 

Vi 3 种模式,分别是命令行模式、文本输入模式、末行模式。

(1)       命令行模式     (用于输入命令)

用户在使用 VI 编辑文件时,最初进入的模式就是命令行模式,是执行 vi 后的缺省模式,此时键盘输入当作命令,命令有大小写之区分。在该模式中可以通过上下左右移动光标来进行“删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。

(2)       文本输入模式   (用于文本输入)

只有在该模式下,用户才能进行文字编辑输入。用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在命令行模式下输入字母‘ i ’、‘ a ’、‘ o ’、‘ s ’、‘ c ’或‘ r ’,就进入文本输入模式。用户按 [ESC] 键回到命令行模式。

(3)       末行模式       (用于特殊任务)

在该模式下,光标位于屏幕的低行。在命令行模式下输入“:”就进入末行模式。在末行模式下,用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。命令有大小写之分。

 

需要注意的是:一般而言,操作结束后,使文本处在命令行模式。

 

以下是命令具体功能:(仍按 3 中模式分别列出)

 

一、命令行模式下执行的操作

1 ,光标移动与定位命令

命令

功能

h

方向键,向左移动光标一个字符的位置,相当于键

j

方向键,向下移动光标到下一行的位置,相当于键

k

方向键,向上移动光标到上一行的位置,相当于键

l

方向键,向右移动光标一个字符的位置,相当于键

w,W

跳至后一个字的开头 (W 忽略标点 )

b,B

跳至前一个字的开头( B 忽略标点)

0         ( 数字 0 )

$  

光标移至行首

光标移至行尾

e

移动到后一个字的末尾

^

至本行第一个非空字符

H

nH

移动到当前窗口的第一列

将光标移到屏幕的第 n

M

移动到当前窗口的中间列

                                                  

L

nL

移动到视窗的最后一列

将光标移到屏幕的倒数第 n

)

光标所在位置到下个句子的第一个字母

(

光标所在位置到该句子的第一个字母

}

光标所在位置到该段落的最后一个字母

{

光标所在位置到该段落的第一个字母

CTRL-x

CTRL-d 向下半页     CTRL-f 向下一页

CTRL-u 向上半页     CTRL-b 向上一页

n-

减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 n

n+

加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n

 

 

2 ,编辑命令(删除,修改,复制,粘贴,剪切,撤销)

命令

功能

[N]x

( X )

(Expurgate) 删除从光标位置开始的连续 N 个字符(并复制到编辑缓冲区)

X -----从光标位置向前删除

s

S  ( 大写 )

删除光标所在字符,并进入输入模式

删除光标所在的行,并进入输入模式

D

从光标位置开始删除到行尾  

[N]dd

(Delete) 删除从光标位置开始的连续 N 行(并复制到编辑缓冲区)

 

d 与光标移动命令的组合

r

修改光标所在的字符, r 后接着要修改的字符。如, rc 可以用字符“ c ” 替换光标所指向的当前字符

R

进入替换状态,新增内容会覆盖原先内容,直到按 [ESC] 回到命令模式下为止

cc 

修改光标所在行

C

修改从光标位置到该行末尾的内容

 

c 与光标移动命令的组合

yy

复制当前行到内存缓冲区

[N]yy

(Yank) 复制从光标位置开始的连续 N 行到编辑缓冲区

P  ( 小写 )

P  ( 大写 )

(Put) 从编辑缓冲区复制文本到当前光标位置(即粘贴)

将缓冲区的内容粘贴到光标的前面

u

(Undo) 取消上一次操作(即恢复功能)

注:在末行模式下实现移动   :n1,n2 m n3 : n1 n2 行内容搬到第 n3 行后

 

 

3 、搜索字符串

/pattern   移至下一个包含 pattern 的行

?pattern   移至上一个包含 pattern 的行

/      往下重复查找

?      往上重复查找

n      在同一方向重复查找

N      在相反方向重复查找

/pattern/+n  移至下一个 pattern 所在行后的第 n

?pattern?-n 移至上一个 Pattern 所在行前的第 n

 

注: *. $ ^ [ ] { } / / 包含在查找字符串中,要用转义字符 (/ )

 

查找

?从光标向文件头搜索

/ 从光标向文件尾搜索

在找到一个匹配模式后搜索下一个时,使用命令‘ n ’即可;如果向下,用‘ n ’,如果向上,用‘ N

 

 

二、文本输入模式下执行的操作

 

命令

功能

a(A)

(Append) 进入编辑状态,从当前光标后一个位置开始插入键盘输入的字符

A -----在行尾开始插入

(注:适合 Ubuntu 编辑文本最后一行使用)

I(I)

(Insert) 进入编辑状态,从当前光标前一个位置开始插入键盘输入的字符

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

o(O)

(Open) 进入编辑状态,并插入一新行,光标移到该新行的行首,以后键盘输入的字符将插入到光标位置

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

s

先删除光标所在的一个字符,然后在光标处插入

ESC

进入命令状态

 

 

三、末行模式下执行的操作

1 ,文件命令

命令

功能

:q

(Quit) 退出(若文件被修改了而没有保存,则此命令无效)

:q!

强制退出,且不保存修改过的部分   ( :x! 对应 )

:w

(Write) 保存文件,但不退出

:w!

强制保存文件,但不退出

:wq

保存退出

:wq!

强制保存退出

:x

(Exit) 保存文件并退出                  ( :x = :wq = zz)

:x!

强制保存文件并退出                ( :x! = :wq!)

:w  File

另存为 File 给出的文件名,不退出

:w! File

强制另存为 File 给出的文件名,不退出

:r  File

(Read) 读入 File 指定的文件内容插入到光标位置

 

2 ,设置行号

:set number    设置显示行号

:set nonumber  取消显示行号

 

3 ,定位行数

n ( 行数 )      将光标移到第 n

 

4 ,字符串的替换

:s/str1/str2/       用字符串 str2 替换行中首次出现的字符串 str1

  :s/str1/str2/g        用字符串 str2 替换行中所有出现的字符串 str1

  :.,$ s/str1/str2/g    用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

  :1,$ s/str1/str2/g     用字符串 str2 替换正文中所有出现的字符串 str1

  :g/str1/s//str2/g   功能同上

 

5 ,其他

编辑多个文件

vi  file1 file2 …

:n  编辑下一个文件

:e filename 编辑指定文件

 

 

注:经过此番整理,结合最近一段时间的使用,发现 vi 编辑器并不像想象中的那么难。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值