vi(或vim)文本编辑器基本操作

  在使用Linux操作系统的过程中,对于文本的编辑是不可避免的,vi文本编辑器作为Linux默认的编辑器,掌握其基本操作尤为重要。


1 三种工作模式

  vi编辑器有3种工作模式,即命令行模式、编辑模式和底行模式。

1.1 命令行模式

  通过vi命令打开文件时,默认进入命令行模式。在该模式下,用户可以输入各种合法命令,此时输入的各种字符,都会当作命令来解析。

1.2 编辑模式

  在命令行模式下,可以通过指定命令(如aio等)切换到编辑模式。在该模式下,用户输入的各种字符,都会显示到文本内容上。

1.3 底行模式

  底行模式又称转义模式,在命令行模式下,可以通过指定命令(如:/?等)切换到底行模式。在此模式下,用户可以输入一些文件管理命令,命令执行完后自动进入命令行模式。

1.4 三种工作模式的切换

  命令行模式下输入aioO命令进入编辑模式。
  命令行模式下输入:/?命令进入底行模式。
  编辑模式或底行模式下,按ESC可回到命令行模式。
  编辑模式和底行模式之间无法直接进行切换。
工作模式切换


2 基本操作

2.1 进入vi

  在系统提示符后输入vi及文件名称后,就可以进入vi全屏编辑画面。

# 命令语法
vi [选项] 文件名
选项值说明
-r恢复上次打开时崩溃的文件
-R用只读方式打开文件
+打开文件并把光标置于最后一行首部
+n打开文件并把光标置于第 n 行首部
+/pattern打开文件并把光标置于第一个与 pattern 匹配的行首部
-c command打开文件后执行 command 命令(vi编辑器中的命令)

2.2 编辑文本

  前文提到命令行模式下输入aioO命令可进入编辑模式,其具体说明如下:

输入字符说明
i在光标前输入文本
a在光标后输入文本
o在当前行下面新开一行
O在当前行上面新开一行

2.3 保存退出

  如果文本已经编辑完成,这时就需要保存或退出,在命令行模式下键入下列命令,即可完成保存或退出操作。

输入字符说明
:wq存盘并退出,即使文件没有修改也强制写入,并更新修改时间
:wq!强制存盘并退出,功能与:wq类似,对于只读文件,使用该命令忽略只读强制写入
:x保存并退出,仅当文件修改时才写入,并更新修改时间
:x!强制保存并退出,功能与:x类似,对于只读文件,使用该命令忽略只读强制写入
:q退出,如有修改,会进行确认
:q!强制不保存退出

2.4 翻屏查看

  当文本内容超过一个屏幕时,我们不可避免的需要翻屏查看屏幕外的内容,vi编辑器提供了以下操作在命令行模式下进行翻屏操作:

输入字符说明
Ctrl+u相对于当前屏幕,向文件首翻半屏
Ctrl+d相对于当前屏幕,向文件尾翻半屏
Ctrl+b相对于当前屏幕,向文件首翻一屏
Ctrl+f相对于当前屏幕,向文件尾翻一屏
nz+Enter将第 n 行滚至屏幕顶部,如不指定 n 值,则为当前行

2.5 移动光标

  vi编辑器可以使用方向键移动光标,但是正规的vi编辑器是在命令行模式下使用小写英文字母控制光标移动的,命令行模式下常用光标移动操作如下:

输入字符说明
h光标左移一个字符
j光标下移一个字符
k光标上移一个字符
l光标右移一个字符
nh光标左移 n 个字符
nj光标下移 n 个字符
nk光标上移 n 个字符
nl光标右移 n 个字符
wW光标右移到下个字字首
bB光标左移到上个字字首
eE光标右移到下个字字尾
nG光标移动到第 n 行首部
n+光标下移 n
n-光标上移 n
n$以当前行作为第1行,光标移动到对应第 n 行行尾
H光标移至当前屏幕顶行
M光标移至当前屏幕中行
L光标移至当前屏幕底行
0光标移至当前行行首
$光标移至当前行行尾
:$光标移至文件最后一行行首

2.6 删除文本

  传统的文本删除是在编辑模式下使用BackspaceDelete键,vi编辑器也提供了许多在命令行模式下的删除命令,常用命令如下:

输入字符说明
x删除光标所在位置的字符
X删除光标所在位置前面的字符
dd删除光标所在行
Dd$删除从光标所在位置到当前行尾的内容(包括光标位置字符)
d0删除从光标所在位置到当前行首的内容(包括光标位置字符)
ndd删除从当前行开始的 n

2.7 选中复制粘贴

  复制是提高编辑效率的一大利器,在vi编辑器中,提供了命令行模式下的诸多复制命令,具体如下:

输入字符说明
v进入可视模式,从光标位置移动选中内容,按y完成复制(按d为删除)
V进入可视行模式,从光标所在行移动选中完整行,按y完成复制(按d为删除)
Ctrl+v进入可视块模式,从光标所在位置垂直选中块内容,按y完成复制(按d为删除)
yy复制光标所在行
Yy$复制从光标所在位置到当前行尾的内容(包括光标位置字符)
y0复制从光标所在位置到当前行首的内容(包括光标位置字符)
nyy复制从当前行开始的 n
p粘贴当前复制的内容

2.8 搜索替换

  搜索与替换功能在生产中使用非常普遍,vi编辑器也提供了许多搜索与替换相关的命令:

输入字符说明
/pattern向文尾方向查找与 pattern 匹配的内容,按n查找下一个,按N查找上一个
?pattern向文首方向查找与 pattern 匹配的内容,按n查找下一个,按N查找上一个
*向文尾方向查找当前光标所在位置单词,按n查找下一个,按N查找上一个
#向文首方向查找当前光标所在位置单词,按n查找下一个,按N查找上一个
:s/s1/s2/g将光标所在行中的 s1 替换为 s2 (全部替换)
:n1,n2s/s1/s2/gn1n2 行(包含 n1n2 )中的 s1 替换为 s2 (全部替换)
:%s/s1/s2/g将所有行中的 s1 替换为 s2 (全部替换)
:set nu显示行号
:set nonu隐藏行号
:noh在vim编辑器中,查找到指定内容会高亮显示,使用此命令可以取消高亮

2.9 重复撤销

  在使用vi编辑文本时,可能存在误操作等想要将文件恢复到修改前,或者需要重复上一步操作,vi编辑器提供了命令行模式下的如下重复与撤销命令:

输入字符说明
.重复执行上次操作
u撤销上次命令
Ctrl+r恢复撤销的命令
>>向右增加缩进
<<向左减少缩进
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值