在Linux和Unix-like系统中,vi(Visual Editor)是一款经典的文本编辑器,其高效的操作方式深受系统管理员和开发者的喜爱,掌握vi的常用命令是提升工作效率的关键,以下将详细列出vi的常用命令并以表格形式呈现,同时补充操作场景和注意事项,帮助用户快速上手。

vi编辑器有三种主要模式:命令模式(Command Mode)、插入模式(Insert Mode)和末行模式(Last Line Mode),初次进入vi时,默认处于命令模式,此时无法直接输入文本,需要通过命令切换到插入模式进行编辑;编辑完成后,需切换回命令模式保存或退出文件;末行模式则用于执行保存、退出、搜索等高级操作。
vi常用命令详解
文件打开与退出命令
在终端输入vi 文件名即可打开文件,若文件不存在则创建新文件,退出vi的命令需根据需求选择,q用于退出未修改的文件,wq保存并退出,q!强制退出不保存修改,这些命令均在末行模式下执行,因此在输入命令前需先按Esc键确保处于命令模式,再按进入末行模式。
光标移动命令
光标移动是编辑操作的基础,命令模式下,h(左)、j(下)、k(上)、l(右)可实现字符级移动;w(移动到下一个单词首)、b(移动到上一个单词首)、e(移动到当前单词末)则用于单词级跳转;0(行首)、(行尾)、gg(文件首行)、G(文件末行)可快速定位行位置。数字+G(如5G)可直接跳转至指定行号。
文本编辑命令
插入模式下可直接输入文本,而命令模式下的编辑命令更高效:i(光标前插入)、a(光标后插入)、o(当前行下方插入新行)、O(当前行上方插入新行)可进入插入模式;x(删除光标处字符)、dd(删除当前行)、dw(删除当前单词)、d$(删除光标至行尾)用于删除操作;p(粘贴到光标后)、P(粘贴到光标前)需配合yy(复制当前行)、yw(复制当前单词)使用;u(撤销上一步操作)、Ctrl+r(重做)可修正编辑错误。

查找与替换命令
末行模式下,(向下搜索)、(向上搜索)可定位文本,搜索后按n(下一个结果)、N(上一个结果)跳转;替换命令%s/旧文本/新文本/g可全局替换,%s/旧文本/新文本/gc则会在替换前提示确认,避免误操作。
文件保存与另存命令
保存文件使用w,若需另存为新文件,则通过w 新文件名实现;结合可强制操作,如w!覆盖只读文件,q!放弃修改退出。
vi常用命令表格
| 功能分类 | 命令 | 模式 | 说明 |
|---|---|---|---|
| 打开文件 | vi 文件名 | 终端模式 | 打开或创建文件,默认进入命令模式 |
| 退出文件 | q | 末行模式 | 未修改时退出 |
| 保存并退出 | wq | 末行模式 | 修改后保存并退出 |
| 强制退出不保存 | q! | 末行模式 | 放弃所有修改并退出 |
| 光标左移 | h | 命令模式 | 左移一个字符 |
| 光标下移 | j | 命令模式 | 下移一行 |
| 光标上移 | k | 命令模式 | 上移一行 |
| 光标右移 | l | 命令模式 | 右移一个字符 |
| 移至行首 | 0 | 命令模式 | 数字0,非字母O |
| 移至行尾 | 命令模式 | 光标移至当前行末尾 | |
| 移至文件首 | gg | 命令模式 | 快速跳转至第一行 |
| 移至文件末 | G | 命令模式 | 快速跳转至最后一行 |
| 跳转至指定行 | 数字+G | 命令模式 | 如10G跳转至第10行 |
| 光标前插入 | i | 命令模式 | 进入插入模式,光标前输入文本 |
| 光标后插入 | a | 命令模式 | 进入插入模式,光标后输入文本 |
| 下方插入新行 | o | 命令模式 | 当前行下方新增一行并进入插入模式 |
| 上方插入新行 | O | 命令模式 | 当前行上方新增一行并进入插入模式 |
| 删除光标处字符 | x | 命令模式 | 删除单个字符 |
| 删除当前行 | dd | 命令模式 | 剪切当前行,可配合p粘贴 |
| 删除当前单词 | dw | 命令模式 | 从光标处删除至单词末尾 |
| 删除至行尾 | d$ | 命令模式 | 删除光标右侧所有字符 |
| 复制当前行 | yy | 命令模式 | 复制整行,可配合p粘贴 |
| 复制当前单词 | yw | 命令模式 | 复制光标所在单词 |
| 粘贴至光标后 | p | 命令模式 | 粘贴复制或剪切的内容 |
| 粘贴至光标前 | P | 命令模式 | 与p相对,粘贴在光标左侧 |
| 撤销操作 | u | 命令模式 | 撤销上一步编辑 |
| 重做操作 | Ctrl+r | 命令模式 | 恢复撤销的操作 |
| 向下搜索 | 末行模式 | 搜索后按n跳转至下一个结果 |
|
| 向上搜索 | 末行模式 | 搜索后按N跳转至上一个结果 |
|
| 全局替换 | %s/旧/新/g | 末行模式 | 替换文件中所有匹配项 |
| 替换并确认 | %s/旧/新/gc | 末行模式 | 每次替换前提示确认 |
| 保存文件 | w | 末行模式 | 保存当前修改 |
| 另存为新文件 | w 新文件名 | 末行模式 | 保存至指定文件名 |
| 强制保存 | w! | 末行模式 | 覆盖只读文件或保存至无权限文件 |
操作注意事项
- 模式切换:vi的核心在于模式区分,若无法输入文本,需确认是否处于命令模式,按
Esc可确保回到命令模式。 - 命令大小写:vi命令区分大小写,如
dd删除行,而DD无效;w保存,W移动到下一个空格分隔的单词。 - 数字前缀:多数命令支持数字前缀,如
3dd删除连续3行,5j下移5行,提升批量操作效率。 - 文件权限:保存文件时需确保对文件所在目录有写权限,否则
w会报错,需使用w!强制保存(若允许)。
相关问答FAQs
问题1:vi编辑器中如何快速跳转到文件的最后一行?
解答:在命令模式下,按大写字母G即可快速跳转到文件的最后一行,若需跳转到第一行,可按gg;跳转到指定行(如第20行),则输入20G后回车。
问题2:在vi编辑时,如果不小心误删了大段内容,如何恢复?
解答:在命令模式下,按u可撤销上一步操作,连续按u可逐步撤销多步操作,若需恢复被撤销的内容,可按Ctrl+r进行重做,若误删后未进行其他操作,也可通过p粘贴之前删除的内容(如dd删除后,p可粘贴删除的行)。

