i开始编辑文本。
约 2937 字大约 10 分钟
2026-01-20
在 Windows 系统中,记事本是一个内置的文本编辑工具。虽然它可以满足基本需求,但功能相对有限,显示效果也不够理想,且不支持扩展。因此,许多人会选择安装功能更强大的 Notepad++ 作为替代工具。Notepad++ 提供了清晰的界面、代码高亮以及其他实用功能,为用户带来了更好的编辑体
i开始编辑文本。
Esc大多数命令都要先回到命令模式。
:wq写入文件并关闭 Vim。
:q!放弃本次修改。
/word配合 n / N 跳转匹配项。
dd / yy / p日常编辑最常用组合。
在 Windows 系统中,记事本是一个内置的文本编辑工具。虽然它可以满足基本需求,但功能相对有限,显示效果也不够理想,且不支持扩展。因此,许多人会选择安装功能更强大的 Notepad++ 作为替代工具。Notepad++ 提供了清晰的界面、代码高亮以及其他实用功能,为用户带来了更好的编辑体验。
与 Windows 中的记事本类似,Linux 系统(包括其他类 Unix 系统)也自带了一个基础的文本编辑器——vi。Vim 可以看作是 vi 的增强版,类似于 Windows 系统中的 Notepad++。vim 是一个功能强大的高级编辑器,支持代码高亮、语法检查、搜索替换、编程等功能,极大地提升了文本编辑效率。
Vi 和 vim 的操作方式和命令体系基本一致,因此本文将以 vim 为例进行详细介绍。
需要注意的是,vim 并非所有 Linux 发行版的默认安装软件,通常需要手动安装。许多现代开发者也会选择使用 Neovim,它是 Vim 的一个重构版本,具有更好的扩展性和性能,但基本操作与 Vim 几乎完全一致。
在基于 Debian 的系统中,可以通过以下命令安装 Vim:
sudo apt install vim使用命令打开文本文件:
vim file.txt打开文件后,默认会进入命令模式。此时,按下字母 i,即可切换到输入模式,开始编辑文件内容
编辑完成后,按下 Esc 键退出输入模式,回到命令模式(注意确保键盘处于英文输入状态)
接着输入冒号 : 进入底线命令模式,然后输入 :wq! 保存修改并退出 vim
命令解释:
w 表示写入(write),即保存文件q 表示退出(quit),即关闭 vim! 表示强制执行从上述使用流程可以看出,vim 具有多种操作模式,主要包括命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。这些模式之间可以相互切换,具体如下图所示(原图来自 菜鸟教程,我额外添加了标注):

除了这三种主要模式外,vim 还支持一些其他模式,例如我们后面会谈到用于批量操作的可视模式(Visual mode)包括:
v 进入,按字符选择。V(Shift + v)进入,按行选择。Ctrl + v 进入,按矩形块选择。这些模式在日常使用中非常强大,尤其是在需要批量编辑的时候。
启动 vim 后,默认进入的就是命令模式。在此模式下,键盘输入会被识别为命令而非普通文本。例如,按下 i 不会在文档中插入字符,而是触发进入输入模式的指令。
以下是命令模式中常用的快捷键及其功能:
复制、删除、粘贴相关命令
yy 拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容(若光标在首行,则删除整个文档)
p 粘贴 yy 所复制的内容
x 删除光标所在的字符
u 撤销上一步操作
Ctrl + r 恢复上一步被撤销的操作(Redo)查找
/word 在整篇文档中向下查找字符串 `word`,按下 `n` 跳转到下一个匹配项,`N` 返回上一个
?word 在整篇文档中向上查找字符串 `word`,按下 `n` 跳转到下一个匹配项,`N` 返回上一个
.、*、[、]、^、%、/、?、~ 和 $ 如果在查找这十个字符需转义,比如 \.
:nohl 取消搜索后的高亮显示
* 查找光标所在单词,并跳转到下一个匹配项,`n` 下一个,`N` 上一个
# 查找光标所在单词,并跳转到上一个匹配项,`n` 下一个,`N` 上一个
gd 查找当前光标所在单词在文档中的第一个非注释位置
% 匹配括号的另一半(如 `{}`、`()` 或 `[]`)替换
s/old/new 将本行第一个 `old` 替换为 `new`
s/old/new/g 将本行所有 `old` 替换为 `new`
%s/old/new/g 将文档中所有 `old` 替换为 `new`
%s/old/new/gc 逐个询问是否将文档中的 `old` 替换为 `new`
y 表示替换
n 表示不替换
a 表示替换所有
q 表示放弃替换
l 表示替换第一个并进入插入模式
^E 表示用 Ctrl+e 来滚动屏幕
^Y 表示用 Ctrl+y 来滚动屏幕
5,13s/old/new/g 将第 5 到 13 行的所有 `old` 替换为 `new`移动光标
w(e) 移动光标到下一个单词
b 移动光标到上一个单词
数字0 移动光标到本行开头
$ 移动光标到本行末尾
H 移动光标到屏幕首行
M 移动光标到屏幕居中行
L 移动光标到屏幕底行
gg 移动光标到文档的尾行
G 移动光标到文档尾行
h 向左移动光标
j 向下移动光标
k 向上移动光标
l 向右移动光标
ctrl + f 翻到下一页
ctrl + b 翻到上一页
` 移动光标到上一次修改的位置
Tip:
- `gg` 和 `G` 是非常常用的跳转首尾的命令。
- `0` 和 `$` 可以快速跳转到行首和行尾。数字与命令
3yy 拷贝光标所在行及下方总共 3 行内容
5dd 删除光标所在行及下方总共 5 行内容在命令模式下,按下以下按键即可进入输入模式:
i 在当前光标位置开始编辑
a 在光标后开始编辑
o 在光标下一行开始编辑进入输入模式后,可以直接通过键盘编辑文件内容。完成编辑后,按下 Esc 键退出输入模式,返回命令模式
在命令模式下输入冒号 : 即可进入底线命令模式。以下是常用的命令:
:q 退出未修改文件,如果文件已修改会退出失败
:q! 强制退出,不保存修改
:w 保存修改,但不退出
:wq 保存并退出
:set nu 显示行号
:set nonu 取消显示行号
:[行号] 跳转到指定行
:! command 暂时离开 `vim`,执行外部命令(如 `:!ip a` 查看 IP 信息)
:w filename 文件另存为,先按下 v 进入可视模式可保存部分内容
:w! filename 文件另存为并覆盖已存在的同名文件
:r filename 将另一个文件的内容插入到当前光标后在某些场景下,可能需要对多行内容进行批量操作,例如为相邻的代码行添加注释。如果逐一手动修改,显然效率低下。这时可以借助可视模式来实现批量操作
批量添加注释:
按下 Ctrl + v 进入可视模式
使用方向键(或 H、J、K、L 键)选择需要注释的行
按下 Shift + i(即大写 I)进入行首插入模式
输入注释符号(如 // 或 #)以及必要的空格
连续按两次 Esc,完成注释的批量添加
保存并退出
批量取消注释:
Ctrl + v 进入可视模式d 删除选中的内容Vim 支持同时打开多个文件,便于多任务处理。例如:
vim -o file1 file2 file3 # 打开后垂直分布
vim -O file1 file2 file3 # 打开后水平分布在多文件编辑中,可以使用以下命令在不同文件间切换:
Ctrl + w + w 切换到下一个文件
对于垂直分布的文件:
Ctrl + w + 上/下方向键(或 j/k 键) 切换至上/下文件
对于水平分布的文件:
Ctrl + w + 左/右方向键(或 h/l 键) 切换至左/右文件退出多文件编辑:
qa 全部退出
qa! 全部强制退出(不保存)
wqa 全部保存后退出Vim 的强大之处在于其高度可定制性。通过修改用户目录下的 ~/.vimrc 文件(如果不存在则手动创建),可以永久设置 Vim 的行为。
以下是一个适合新手的通用配置示例:
" 开启语法高亮
syntax on
" 显示行号
set number
" 开启自动缩进
set autoindent
" 突出显示当前行
set cursorline
" 设置 Tab 键为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab
" 开启鼠标支持(可选,方便新手)
set mouse=a配置完成后,下次打开 Vim 即可生效。
以下是一张总结了 vim 常用快捷键的键盘图,出处见图片,供参考:

更多更详细 vim 命令,参见菜鸟教程 Linux vi/vim
Vim 的命令很多,但日常在服务器上临时改配置,先会这几件事就够用:
| 目标 | 命令 | 说明 |
|---|---|---|
| 进入编辑 | i | 在光标前插入文本 |
| 回到命令模式 | Esc | 后续保存、退出、搜索都要先回来 |
| 保存退出 | :wq | 写入并退出 |
| 不保存退出 | :q! | 放弃修改 |
| 搜索 | /word | n 下一个,N 上一个 |
| 撤销 | u | 误操作时先撤销 |
Vim 最大的不同是“模式”。你按下同一个键,在不同模式下含义完全不同:输入模式下 d 是字母,命令模式下 dd 是删除整行。
所以只要乱了,先按 Esc。它相当于回到安全起点,再决定保存、退出、搜索或继续编辑。
服务器上改配置的习惯
修改重要配置前先复制一份备份,例如 cp nginx.conf nginx.conf.bak。Vim 很强,但误删一行配置也很常见。
版权归属:Shuo Liu