Vim命令快速参考,按服务器管理工作分类整理。收藏本页。
| 模式 |
进入方式 |
用途 |
返回普通模式 |
| 普通 |
Esc |
导航,执行命令 |
已在此模式 |
| 插入 |
i、a、o、I、A、O |
输入文本 |
Esc |
| 可视 |
v(字符)、V(行)、Ctrl+v(块) |
选择文本 |
Esc |
| 命令行 |
: |
执行ex命令 |
Enter或Esc |
| 命令 |
操作 |
:w |
保存 |
:q |
退出(有未保存更改时失败) |
:wq或ZZ |
保存并退出 |
:q! |
不保存退出 |
:w !sudo tee % |
保存只读文件(忘记用sudoedit时) |
:e /文件/路径 |
打开文件 |
:saveas /路径 |
另存为新文件 |
| 按键 |
操作 |
h j k l |
左、下、上、右 |
0 |
行首 |
$ |
行尾 |
^ |
第一个非空字符 |
| 按键 |
操作 |
w / W |
下一个单词 / WORD |
b / B |
上一个单词 / WORD |
e |
单词末尾 |
| 按键 |
操作 |
gg |
第一行 |
G |
最后一行 |
42G或:42 |
第42行 |
Ctrl+d / Ctrl+u |
半页下 / 上 |
Ctrl+f / Ctrl+b |
整页下 / 上 |
% |
匹配的括号 |
| 按键 |
操作 |
/模式 |
向前搜索 |
?模式 |
向后搜索 |
n / N |
下一个 / 上一个匹配 |
* |
搜索光标下的单词(向前) |
# |
搜索光标下的单词(向后) |
| 按键 |
操作 |
i |
在光标前 |
a |
在光标后 |
I |
行首 |
A |
行尾 |
o |
下方新建行 |
O |
上方新建行 |
s |
删除字符并插入 |
S或cc |
删除行并插入 |
| 命令 |
操作 |
x |
删除字符 |
dd |
删除行 |
dw |
删除单词 |
d$或D |
删除到行尾 |
d0 |
删除到行首 |
cc |
更改行 |
cw |
更改单词 |
ci" |
更改引号内的内容 |
ci( |
更改括号内的内容 |
yy |
复制行 |
yw |
复制单词 |
p / P |
在后 / 前粘贴 |
u |
撤销 |
Ctrl+r |
重做 |
. |
重复上一次更改 |
>> / << |
缩进 / 反缩进行 |
J |
将当前行与下一行合并 |
Vim命令接受数字前缀。将操作符与动作组合进行精确编辑。
| 示例 |
操作 |
3dd |
删除3行 |
5j |
向下移动5行 |
d2w |
删除接下来2个单词 |
4>> |
缩进4行 |
y3w |
复制3个单词 |
ct; |
更改文本直到; |
df" |
删除到下一个"(含) |
| 命令 |
操作 |
v |
开始字符选择 |
V |
开始行选择 |
Ctrl+v |
开始块选择 |
d |
删除选中内容 |
y |
复制选中内容 |
> / < |
缩进 / 反缩进选中内容 |
:s/^/#/ |
注释选中行(可视行模式下) |
U / u |
选中内容转大写 / 小写 |
| 命令 |
操作 |
:s/旧/新/ |
替换当前行第一个 |
:s/旧/新/g |
替换当前行所有 |
:%s/旧/新/g |
替换文件中所有 |
:%s/旧/新/gc |
替换所有并逐个确认 |
:5,10s/旧/新/g |
替换第5到10行所有 |
| 模式 |
匹配 |
^ / $ |
行首 / 行尾 |
. |
任意字符 |
\d |
数字 |
\s |
空白字符 |
.* |
任意字符(贪婪) |
\v |
"very magic"模式(减少转义) |
:%s/listen 80;/listen 443 ssl;/g
:%s/nginx:1.24/nginx:1.27/g
:%s/192\.168\.1\.1/10.0.0.1/g
| 命令 |
操作 |
:e 文件 |
在缓冲区中打开 |
:bn / :bp |
下一个 / 上一个缓冲区 |
:ls |
列出缓冲区 |
:b2 |
切换到第2个缓冲区 |
:bd |
关闭缓冲区 |
| 命令 |
操作 |
:sp 文件 |
水平分屏 |
:vs 文件 |
垂直分屏 |
Ctrl+w h/j/k/l |
在分屏间移动 |
Ctrl+w = |
分屏大小相等 |
Ctrl+w q |
关闭分屏 |
Ctrl+w _ |
最大化当前分屏高度 |
Ctrl+w | |
最大化当前分屏宽度 |
| 命令 |
操作 |
:tabnew 文件 |
在新标签页中打开 |
gt / gT |
下一个 / 上一个标签页 |
:tabclose |
关闭标签页 |
面向服务器的最小配置:
set nocompatible
set encoding=utf-8
set number relativenumber
syntax on
set expandtab tabstop=2 shiftwidth=2 softtabstop=2
set incsearch hlsearch ignorecase smartcase
set showmatch laststatus=2 showmode
set mouse=a
set pastetoggle=<F2>
set noswapfile
set cursorline
set list listchars=tab:>>·,trail:·
filetype plugin indent on
| 任务 |
命令 |
| 安全编辑root文件 |
sudoedit /etc/nginx/nginx.conf |
| 粘贴时避免阶梯缩进 |
F2,i,粘贴,F2 |
| 跳到错误行 |
vim +42 file.yml |
| 将制表符转为空格(YAML修复) |
:%s/\t/ /g |
| 注释多行 |
V,选择,:s/^/#/ |
| 取消注释多行 |
V,选择,:s/^#// |
| 编辑后验证Nginx配置 |
:!sudo nginx -t |
| 不退出Vim重新加载 |
:!sudo systemctl reload nginx |
| 问题 |
解决方法 |
| 打开Vim后无法输入 |
按i(你在普通模式) |
终端冻结(Ctrl+s) |
按Ctrl+q |
| 粘贴时阶梯形缩进 |
切换粘贴模式:F2或:set paste |
| 文件只读 |
退出,用sudoedit重新打开 |
| 交换文件警告 |
如果没有其他会话在编辑,选择(D)elete |
版权所有 2026 Virtua.Cloud。保留所有权利。
本内容为 Virtua.Cloud 团队原创作品。
未经书面许可,禁止复制、转载或再分发。