vi/vim 编辑器
大多数 Linux 发行版自带 vi,vim(Vi Improved)是其增强版本。
三种工作模式
| 模式 | 说明 |
|---|---|
| 命令模式(Command) | 默认进入的模式。所有按键被解释为命令,不能编辑文本。按 Esc 从其他模式返回。 |
| 输入模式(Insert) | 可自由编辑文本。从命令模式按特定键进入(见下表)。 |
| 底线命令模式(Last-line) | 从命令模式按 : 进入,光标跳至底部。用于保存、退出、搜索替换等操作。 |
三者关系:命令模式是枢纽,输入模式和底线命令模式均从命令模式进入,按 Esc 回到命令模式。
进入输入模式的方式
| 按键 | 说明 |
|---|---|
i | 在光标所在字符前开始插入 |
a | 在光标所在字符后开始插入 |
o | 在当前行下方另起一行插入 |
I | 跳至当前行行首开始插入 |
A | 跳至当前行行尾开始插入 |
O | 在当前行上方另起一行插入 |
命令模式操作
光标移动
| 按键 | 说明 |
|---|---|
h / j / k / l | 左 / 下 / 上 / 右(方向键也通用) |
w / b | 跳到下一个单词开头 / 上一个单词开头 |
e / ge | 跳到当前单词结尾 / 上一个单词结尾 |
0 / ^ / $ | 跳到行首 / 行首第一个非空字符 / 行尾 |
gg / G | 跳到文件首行 / 末行 |
:n | 跳到第 n 行(底线命令模式) |
Ctrl + f / Ctrl + b | 向下翻页(forward)/ 向上翻页(backward) |
Ctrl + d / Ctrl + u | 向下翻半页 / 向上翻半页 |
删除
| 按键 | 说明 |
|---|---|
x | 删除光标处的单个字符 |
dw | 删除从光标位置到单词结尾 |
d$ | 删除从光标位置到行尾 |
d0 | 删除从行首到光标位置 |
dd | 删除整行 |
dG | 删除从当前行到文件末尾 |
ggdG | 删除全文 |
复制与粘贴
| 按键 | 说明 |
|---|---|
yw | 复制光标处单词 |
yy | 复制整行 |
y$ | 复制从光标到行尾 |
yG | 复制从当前行到文件末尾 |
p / P | 在光标后粘贴 / 在光标前粘贴(整行粘贴时 p 在下一行,P 在上一行) |
撤销与重做
| 按键 | 说明 |
|---|---|
u | 撤销上一步操作 |
Ctrl + r | 重做(撤销的逆操作) |
U | 恢复当前行到初始状态(仅限当前行) |
重复命令
| 按键 | 说明 |
|---|---|
. | 重复上一次命令(如 dd 后按 . 重复执行删除整行) |
其他常用命令
| 按键 | 说明 |
|---|---|
>> / << | 当前行右缩进 / 左缩进 |
== | 自动缩进当前行(常用于格式化) |
~ | 切换光标处字符的大小写 |
底线命令模式操作
按 : 进入,输入以下命令后按回车执行:
| 命令 | 说明 |
|---|---|
:w | 保存文件 |
:q | 退出(若有未保存修改则提示) |
:wq 或 :x | 保存并退出 |
:q! | 强制退出,不保存修改 |
:e! | 放弃所有修改,重新加载文件 |
:set nu / :set nonu | 显示行号 / 隐藏行号 |
:n | 跳转到第 n 行 |
:/关键词 | 向下搜索关键词(按 n 继续,N 反向) |
:?关键词 | 向上搜索关键词 |
:s/旧/新/g | 当前行全部替换旧为新 |
:%s/旧/新/g | 全文全部替换旧为新 |
:r 文件名 | 将另一个文件的内容插入到光标下方 |
:!命令 | 执行 Shell 命令(如 :!ls) |
启动与退出
- 启动:
vim 文件路径(文件不存在则自动创建)。 - 退出:按
Esc确保处于命令模式,然后执行:wq保存退出,或:q!强制退出。
Neovim 与 LazyVim
- Neovim(nvim):vim 的现代分支,操作与 vim 完全一致,额外内置 LSP、异步插件架构、终端集成等特性。
- LazyVim:Neovim 的开箱即用配置方案,基于 Lua 的懒加载框架,预置 IDE 级功能。安装后无需手动配置即可使用。
- 一般建议直接上Neovim