在AIX操作系统中,编辑命令是系统管理和日常运维中不可或缺的工具,其中最常用的是vi编辑器,它功能强大且灵活,适用于文本编辑、脚本编写和配置文件修改等多种场景。vi编辑器基于模式的设计理念,分为命令模式、插入模式和末行模式,用户需要根据不同场景切换模式以完成编辑操作,以下是关于AIX中vi编辑命令的详细说明,包括基本操作、高级功能及实用技巧。

vi编辑器的启动与退出
启动vi编辑器非常简单,只需在终端输入vi 文件名,若文件不存在则会自动创建,编辑test.txt文件,可执行命令vi test.txt,进入vi后,默认处于命令模式,此时无法直接输入文本,需要切换到插入模式进行编辑,退出vi时,需先返回命令模式,按wq保存并退出,或q!强制退出不保存,若只想保存不退出,可使用w命令。
基本编辑操作
-
模式切换
- 命令模式 → 插入模式:按
i(在光标前插入)、a(在光标后插入)、o(在新行插入)或I(行首插入)、A(行尾插入)、O(上行插入)。 - 插入模式 → 命令模式:按
Esc键。 - 命令模式 → 末行模式:按,此时可执行保存、退出或搜索等命令。
- 命令模式 → 插入模式:按
-
光标移动
在命令模式下,可通过以下键快速移动光标:h(左移)、j(下移)、k(上移)、l(右移)w(移动到下一个单词首)、b(移动到上一个单词首)、e(移动到当前单词尾)0(移动到行首)、(移动到行尾)、G(移动到文件末尾)、nG(移动到第n行,如5G跳转到第5行)
-
文本编辑
(图片来源网络,侵删)- 删除操作:
x(删除当前字符)、nx(删除n个字符,如3x删除3个字符)、dd(删除当前行)、ndd(删除n行,如2dd删除2行) - 复制与粘贴:
yy(复制当前行)、nyy(复制n行)、p(在光标后粘贴)、P(在光标前粘贴) - 剪切与替换:
dd剪切后可使用p粘贴;r(替换当前字符)、R(进入替换模式,连续替换多个字符) - 撤销与重做:
u(撤销上一步操作)、Ctrl + r(重做被撤销的操作)
- 删除操作:
-
搜索与替换
- 搜索:在命令模式下输入
/关键字,按Enter后可向下搜索,按n跳转到下一个匹配项,N跳转到上一个匹配项;输入?关键字可向上搜索。 - 替换:在末行模式下使用
s/旧字符串/新字符串/g(替换当前行所有匹配项)、n,ms/旧字符串/新字符串/g(替换第n到m行的所有匹配项)、1,$s/旧字符串/新字符串/g(替换全文所有匹配项)。
- 搜索:在命令模式下输入
高级功能与技巧
-
多文件编辑
vi支持同时打开多个文件,使用e 文件名可打开新文件,bnext或bprev切换文件,ls查看已打开文件列表,bn切换到下一个文件,bp切换到上一个文件。 -
分屏操作
- 水平平分:
split或sp,当前窗口显示在上方,新文件在下方 - 垂直平分:
vsplit或vs,当前窗口显示在左侧,新文件在右侧 - 切换窗口:
Ctrl + w加方向键(或h、j、k、l) - 关闭当前窗口:
q或close,关闭所有窗口退出qa
- 水平平分:
-
自动缩进与代码补全
(图片来源网络,侵删)- 开启自动缩进:
set autoindent,输入新行时会自动缩进 - 显示行号:
set nu,隐藏行号set nonu - 语法高亮:
syntax on,关闭syntax off - 代码补全:在插入模式下按
Ctrl + p或Ctrl + x+Ctrl + o(需支持OmniComplete)
- 开启自动缩进:
-
宏录制与执行
- 录制宏:在命令模式下按
q加寄存器名(如q a),执行一系列操作后按q停止录制 - 执行宏:在命令模式下按加寄存器名(如
@a),可重复执行宏操作
- 录制宏:在命令模式下按
vi编辑命令实用技巧总结
| 功能类别 | 常用命令 | 说明 |
|---|---|---|
| 模式切换 | i/a/o,Esc |
进入/退出插入模式 |
| 光标移动 | hjkl,w/b,0/,G |
基础移动与快速跳转 |
| 文本删除 | x,dd,ndd |
字符级与行级删除 |
| 复制粘贴 | yy,nyy,p/P |
行复制与粘贴 |
| 搜索替换 | /关键字,s/旧/新/g |
文本搜索与全局替换 |
| 多文件操作 | e 文件名,bnext |
多文件切换与管理 |
| 分屏功能 | split,vsplit,Ctrl + w |
窗口分割与切换 |
| 设置选项 | set nu,set autoindent |
行号显示与自动缩进 |
相关问答FAQs
问题1:在vi编辑器中如何快速跳转到文件的指定行?
解答:在命令模式下,直接输入行号加G即可跳转,跳转到第20行,输入20G后按Enter,若要跳转到文件首行,可输入1G或gg;跳转到文件末行,输入G即可。
问题2:vi编辑器中如何批量替换文本中的特定内容?
解答:在末行模式下使用替换命令,若替换当前行的所有匹配项,输入s/旧字符串/新字符串/g;若替换全文所有匹配项,输入1,$s/旧字符串/新字符串/g;若替换指定行范围(如第5到10行),输入5,10s/旧字符串/新字符串/g,注意:g表示全局替换,否则仅替换每行第一个匹配项。
