UNIX系统VI编辑器使用教程
vi 编辑器核心命令速查(完整指南)
文本编辑器是所有计算机系统中不可或缺的常用工具。在 UNIX 和 Linux 环境下,尽管存在 ex、sed 等众多编辑器,但 vi 无疑是人气最高、流传最久远的一款。vi 的命令体系较为庞杂,初学者往往感到无从下手。本文整理了一份 vi 三种模式下的核心命令速查表,帮助读者快速掌握 vi 的使用技巧,欢迎补充交流。
文本输入模式
在 vi 的文本输入模式下,操作逻辑非常直观:
- a:在光标后插入(追加)文本
- A:在当前行末尾追加文本
- i:在光标前插入文本
- o:在光标下方新建一行并进入插入模式
末行模式
末行模式(通过冒号 : 进入)是 vi 强大的命令控制中心:
- :w:将缓冲区内容写入文件(保存),继续编辑
- :w new_filename:将缓冲区内容另存为新文件 new_filename
- :wq 或 ZZ:保存缓冲区内容后退出 vi
- :q!:放弃所有修改,强制退出 vi
- :wq!:强制保存缓冲区内容后退出(若为文件所有者,将忽略只读属性)
- e!:撤销自上次保存以来所有未保存的修改
- u:撤销最近一次编辑操作
命令模式(光标移动)
命令模式下,光标移动操作是日常使用频率最高的基础技能:
- j(或向下箭头):向下移动一行
- k(或向上箭头):向上移动一行
- h(或向左箭头):向左移动一个字符
- l(或向右箭头):向右移动一个字符
- 空格:向右移动一个字符
- w:向前移动一个单词(含标点)
- b:向后移动一个单词(含标点)
- $:移动到当前行行尾
- 0(零)或 ^:移动到当前行行首
- 回车:移动到下一行行首
编辑与删除操作(命令模式 & 末行模式)
编辑与删除操作是 vi 高效编辑的关键所在:
- x(小写):删除光标位置处的字符
- dw:删除当前单词(从光标处到单词末尾)
- 3dw:删除从光标开始的三个单词
- dd:删除光标所在的整行
- 3dd:删除连续三行
- yy:复制(拉出)当前行到剪贴板
- p(小写):将剪贴板内容粘贴到当前行下方
- P(大写):将剪贴板内容粘贴到当前行上方
- :set nu:显示行号
- :set nonu:隐藏行号
- :set showmode:在屏幕底部显示当前操作模式
- :set noshowmode:关闭模式显示
- :set:显示所有 vi 变量及部分设置
- :set all:显示所有 vi 变量及其当前值
- G:跳转到文件的最后一行
- :21:跳转到第 21 行
- /string:从当前位置向后搜索字符串 string
- ?string:从当前位置向前搜索字符串 string
- n:重复上一次搜索(同方向)
Solaris vi 命令专篇
以下分类更加细化,适用于复杂编辑场景,尤其在 UNIX/Linux 服务器运维中非常实用。
进入 vi 的命令
- vi filename:打开或新建文件,光标置于第一行首。
- vi +n filename:打开文件,光标置于指定第 n 行首。
- vi + filename:打开文件,光标置于最后一行首。
- vi +/pattern filename:打开文件,光标置于第一个匹配 pattern 的字符串处。
- vi -r filename:系统崩溃后恢复指定文件 filename 的编辑状态。
- vi filename ... filename:同时打开多个文件,依次编辑。
光标移动类命令(补充)
- h:左移一个字符
- l:右移一个字符
- space:右移一个字符
- Backspace:左移一个字符
- k 或 Ctrl+p:上移一行
- j 或 Ctrl+n:下移一行
- Enter:下移一行
- w 或 W:右移到下一个单词的起始处
- b 或 B:左移到上一个单词的起始处
- e 或 E:右移到当前单词的结束处
- ):光标移至当前句子的末尾
- (:光标移至当前句子的开头
- }:光标移至当前段落的开头
- {:光标移至当前段落的结尾
- nG:光标移至第 n 行行首
- n+:光标向下移动 n 行
- n-:光标向上移动 n 行
- n$:光标移至第 n 行行尾
- H:光标移至屏幕顶部行
- M:光标移至屏幕中间行
- L:光标移至屏幕底部行
- 0:(数字零)光标移至当前行行首
- $:光标移至当前行行尾
屏幕翻滚类命令
- Ctrl+u:向文件开头方向翻滚半屏
- Ctrl+d:向文件末尾方向翻滚半屏
- Ctrl+f:向文件末尾方向翻滚一屏
- Ctrl+b:向文件开头方向翻滚一屏
- nz:将第 n 行移至屏幕顶部(不指定 n 则默认当前行)
文本插入与替换类命令
- i:在光标前插入文本
- I:在当前行行首插入文本
- a:在光标后插入文本
- A:在当前行行尾插入文本
- o:在当前行下方新建一行并进入插入模式
- O:在当前行上方新建一行并进入插入模式
- r:替换光标处的一个字符(替换后返回命令模式)
- R:连续替换字符,直到按下 ESC 键
- s:从光标位置开始替换指定数目的字符
- S:删除指定行数并用输入内容替换
- ncw 或 nCW:修改指定数目的单词
- nCC:修改指定数目的行
删除命令(二)
- ndw 或 ndW:删除从光标开始向右的 n 个单词
- do:删除从光标到当前行首
- d$:删除从光标到当前行尾
- ndd:删除当前行及其后的 n-1 行
- x 或 X:删除一个字符(x 删除光标后字符,X 删除光标前字符)
- Ctrl+u:在插入模式下删除刚刚输入的文本
搜索与替换命令
- /pattern:从光标位置向文件末尾搜索 pattern
- ?pattern:从光标位置向文件开头搜索 pattern
- n:沿同一方向重复上一次搜索
- N:沿反方向重复上一次搜索
- :s/p1/p2/g:将当前行中所有 p1 替换为 p2
- :n1,n2s/p1/p2/g:将第 n1 至 n2 行内所有 p1 替换为 p2
- :g/p1/s//p2/g:将整个文件中所有 p1 全局替换为 p2
选项设置
- all:列出所有选项的当前设置情况
- term:设置终端类型
- ignorance:搜索时忽略大小写
- list:显示制表符(Ctrl+I)和行尾符号($)
- number:显示行号
- report:显示由行操作命令所影响的文本行数
- terse:显示简短的警告信息
- warn:切换到其他文件时若未保存当前文件则给出提示
- nomagic:允许在搜索模式中使用特殊字符而未加反斜杠转义
- nowrapscan:禁止 vi 在搜索到文件两端时自动从另一端继续
- mesg:允许 vi 显示其他用户通过 write 发送到终端的消息
最后行方式命令
- :n1,n2 co n3:将第 n1 到 n2 行的内容复制到第 n3 行下方
- :n1,n2 m n3:将第 n1 到 n2 行的内容移动到第 n3 行下方
- :n1,n2 d:删除第 n1 到 n2 行之间的内容
- :w:保存当前文件
- :e filename:打开文件 filename 进行编辑
- :x:保存当前文件并退出 vi
- :q:退出 vi
- :q!:强制退出 vi(不保存)
- :!command:执行 shell 命令 command
- :n1,n2 w!command:将第 n1 到 n2 行的内容作为命令 command 的标准输入并执行(不指定范围则使用整个文件)
- :r!command:将 shell 命令 command 的输出结果插入到当前光标行下方
寄存器操作
- "?nyy:将当前行及其下方 n 行复制到寄存器 ? 中(? 为字母,n 为数字)
- "?nyw:将当前行及其下方 n 个单词复制到寄存器 ? 中
- "?nyl:将当前行及其下方 n 个字符复制到寄存器 ? 中
- "?p:将寄存器 ? 中的内容粘贴到光标位置(? 可以是字母或数字)
- ndd:删除当前行及其下方共 n 行,并将删除内容放入 1 号删除寄存器中。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
麒麟系统字体太小看不清如何调整界面字体大小
麒麟系统高分屏字体过小需分层干预:控制中心调整缩放至150%或200%,辅助功能增大文本,命令行设置MateDPI值(2K设200 0,4K设220 0),QT类软件用环境变量QT_DEVICE_PIXEL_RATIO=2,终端取消使用系统等宽字体并改字号,输入法候选字体调至16或18。
Win11记事本默认不换行如何设置为自动换行
Windows11记事本默认不自动换行,手动开启仅对当前窗口有效。若要永久启用,可修改注册表,在HKCU Software Microsoft Notepad路径下新建DWORD值fWrap并设为1,或导入含此设置的 reg文件,此后所有新建记事本文件均自动换行显示,无需重复手动操作,一劳永逸。
银河麒麟系统时间快几分钟的调整方法
银河麒麟系统时钟快几分钟的解决方法:先用date命令校正系统时间,再执行hwclock--systohc写入硬件时钟;启用systemd-timesyncd并配置阿里云NTP服务器;禁用chronyd避免服务冲突;双系统用户需设置硬件时钟为UTC模式。
Win11多屏下设置软件只在特定屏幕打开的方法
双屏办公时,通过快捷方式添加启动参数、利用Windows窗口位置记忆功能或PowerShell脚本,可让软件自动在副屏打开,免去手动拖拽,提升工作效率。
MacBook如何取消菜单栏蓝牙搜索状态
在macOS中,进入系统设置“控制中心”,将蓝牙设为“不显示在菜单栏”即可隐藏图标且功能正常;旧版系统则在蓝牙偏好设置中取消勾选“在菜单栏中显示”。
- 日榜
- 周榜
- 月榜
相关攻略
2026-07-01 07:42
2026-07-01 07:42
2026-07-01 07:41
2026-07-01 07:41
2026-07-01 07:41
2026-07-01 07:41
2026-07-01 07:41
2026-07-01 07:41
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

