Linux系统中的vi编辑器是一款功能强大的文本编辑工具,广泛应用于服务器管理和日常运维工作中,掌握vi的基本操作和常用命令,能够高效地完成文件编辑任务,以下将详细介绍vi编辑器的使用方法,包括启动模式、基本操作、常用命令及高级技巧。

vi编辑器主要分为三种模式:命令模式(Command Mode)、插入模式(Insert Mode)和末行模式(Last Line Mode),刚打开文件时,vi默认处于命令模式,此时无法直接输入文本,需要通过命令切换到插入模式才能进行编辑,命令模式下,用户可以执行删除、复制、粘贴等操作;插入模式下,用户可以输入文本内容;末行模式下,可以进行保存、退出、搜索等全局操作。
启动vi编辑器的基本命令是vi 文件名
,如果文件不存在,则会创建新文件。vi test.txt
将打开或创建名为test.txt的文件,进入vi后,首先需要切换到插入模式才能编辑文本,常用的进入插入模式的命令包括:
i
:在光标当前位置插入文本a
:在光标后一个位置插入文本o
:在当前行下方插入新行O
:在当前行上方插入新行I
:在行首插入文本A
:在行尾插入文本
完成编辑后,需要按Esc
键返回命令模式,然后通过末行模式保存或退出文件,进入末行模式的方法是在命令模式下输入冒号,然后执行相应命令,如:
w
:保存文件q
:退出viwq
:保存并退出q!
:不保存强制退出wq!
:强制保存并退出(需要文件写入权限)
在命令模式下,光标移动是最基本的操作,常用的光标移动命令包括:

h
:向左移动一个字符j
:向下移动一行k
:向上移动一行l
:向右移动一个字符w
:移动到下一个单词的开头b
:移动到上一个单词的开头e
:移动到当前单词的结尾0
(数字零):移动到行首- 移动到行尾
gg
:移动到文件开头G
:移动到文件结尾nG
:移动到第n行(例如10G
移动到第10行)
文本编辑操作是vi的核心功能,以下是一些常用的编辑命令:
x
:删除光标所在处的字符nx
:删除从光标开始的n个字符(例如3x
删除3个字符)dd
:删除当前行ndd
:删除当前行及以下n行(例如5dd
删除5行)d$
:删除从光标到行尾的内容d^
:删除从光标到行首的内容dw
:删除一个单词u
:撤销上一次操作Ctrl + r
:重做被撤销的操作r
:替换光标所在处的字符(例如rx
将光标字符替换为x)R
:进入替换模式,连续替换多个字符cc
:删除当前行并进入插入模式yy
:复制当前行nyy
:复制当前行及以下n行(例如3yy
复制3行)p
:在光标后粘贴复制的内容P
:在光标前粘贴复制的内容yw
:复制一个单词y$
:复制从光标到行尾的内容
搜索和替换功能可以快速定位和修改文本,在命令模式下输入/关键字
可以向下搜索,输入?关键字
可以向上搜索,搜索后按n
跳转到下一个匹配项,按N
跳转到上一个匹配项,替换操作需要在末行模式下执行,常用格式为:
s/旧字符串/新字符串/g
:替换当前行中所有匹配项%s/旧字符串/新字符串/g
:替换整个文件中所有匹配项n,s/旧字符串/新字符串/g
:替换第n行到第s行的所有匹配项
多文件编辑和窗口分割是vi的高级功能,使用new 文件名
可以打开新文件并分屏显示,使用split 文件名
可以在水平方向分屏,使用vsplit 文件名
可以在垂直方向分屏,分屏后,使用Ctrl + w
加上方向键可以在不同窗口间切换,关闭当前窗口可以使用close
,关闭所有窗口可以使用qall
。
vi编辑器的配置文件通常位于用户主目录下的.vimrc
文件中,可以通过修改该文件自定义vi的行为,例如设置缩进、语法高亮、行号显示等,在.vimrc
文件中添加以下内容可以实现常用配置:

set number
:显示行号set autoindent
:自动缩进set syntax on
:开启语法高亮set tabstop=4
:设置制表符宽度为4个空格set expandtab
:将制表符转换为空格
以下是一个常用vi命令速查表,方便快速查阅:
功能分类 | 命令 | 说明 |
---|---|---|
启动/退出 | vi 文件名 | 打开或创建文件 |
w | 保存文件 | |
q | 退出vi | |
wq | 保存并退出 | |
q! | 不保存强制退出 | |
模式切换 | i | 在光标处插入 |
a | 在光标后插入 | |
o | 在下方插入新行 | |
Esc | 返回命令模式 | |
光标移动 | h/j/k/l | 左/下/上/右移动 |
w/b/e | 单词移动 | |
0/$ | 行首/行尾 | |
gg/G | 文件开头/结尾 | |
编辑操作 | x/dd | 删除字符/行 |
u/Ctrl+r | 撤销/重做 | |
yy/p | 复制/粘贴 | |
搜索替换 | /关键字 | 向下搜索 |
s/旧/新/g | 行内替换 | |
%s/旧/新/g | 全局替换 |
在实际使用中,掌握一些快捷键和技巧可以显著提高编辑效率,使用Ctrl + g
可以显示当前文件名和行号信息,使用Shift + zz
可以快速保存并退出(相当于:wq),使用可以重复上一次的编辑操作,对于大文件,可以使用set nowrap
禁用自动换行,或者使用g/关键字/p
打印所有包含关键字的行。
vi编辑器还支持宏录制功能,可以通过q
加上寄存器名称开始录制(例如qa
),然后执行一系列操作,最后按q
停止录制,之后可以通过@a
播放录制的宏,其中a
是寄存器名称,这对于需要重复执行的复杂操作特别有用。
在编辑配置文件或脚本时,vi的语法高亮功能可以帮助快速识别错误,通过syntax on
开启语法高亮后,不同语法元素会以不同颜色显示,例如关键字、字符串、注释等,如果语法高亮不生效,可以检查文件扩展名是否正确,或者手动设置文件类型,例如set filetype=sh
将文件识别为shell脚本。
FAQs:
-
问:在vi编辑器中如何同时编辑多个文件? 答:可以使用
e 文件名
打开新文件,或者使用new 文件名
进行分屏编辑,分屏后,通过Ctrl + w
加上方向键在不同窗口间切换,使用buffers
可以查看已打开的文件列表,b 文件编号
可以切换到指定文件。 -
问:vi编辑器中如何批量替换文本中的特定内容? 答:在末行模式下使用替换命令,替换当前行中的所有"old"为"new",输入
s/old/new/g
;替换整个文件中的所有匹配项,输入%s/old/new/g
;替换第5行到第10行的内容,输入5,10s/old/new/g
,替换前可以添加c
参数确认每次替换,例如s/old/new/gc
。