Vim 生存指南:服务器上改文件不用抓瞎
Vim 的完整功能够写一本书,但在服务器上改个 Nginx 配置,你只需要会二十条命令。这篇只讲这部分。
一、先记住:怎么退出
这是新手最常卡住的地方,放在最前面:
| 命令 | 作用 |
|---|---|
:q | 退出(没改动时) |
:q! | 强制退出,丢弃所有改动 |
:wq 或 :x 或 ZZ | 保存并退出 |
:w | 只保存不退出 |
:w! | 强制保存(只读文件时配 sudo) |
改乱了想重来:按
Esc然后:q!,一切回到打开前的状态。
二、两种模式
Vim 的核心就是模式切换,理解这一点就理解了一半:
| 模式 | 进入方式 | 能做什么 |
|---|---|---|
| 普通模式 | 启动默认,或按 Esc | 移动光标、删除、复制、执行命令 |
| 插入模式 | 按 i / a / o | 输入文字 |
| 命令模式 | 普通模式下按 : | 保存、退出、搜索、替换 |
| 可视模式 | 按 v | 选中文本 |
卡住时先按 Esc,回到普通模式再说。这个习惯能解决 80% 的困惑。
三、进入编辑
| 键 | 作用 |
|---|---|
i | 在光标前插入 |
a | 在光标后插入 |
I | 跳到行首插入 |
A | 跳到行尾插入 |
o | 在下方新开一行 |
O | 在上方新开一行 |
改配置文件最常用 i(就地改)和 A(行尾加内容)。
四、移动光标
| 键 | 作用 |
|---|---|
h j k l | 左 下 上 右 |
0 / ^ | 行首 / 行首第一个非空字符 |
$ | 行尾 |
gg | 文件开头 |
G | 文件末尾 |
:N | 跳到第 N 行(如 :50) |
Ctrl+f / Ctrl+b | 向下/向上翻页 |
w / b | 下一个/上一个单词 |
记住
gg(开头)、G(结尾)、:N(跳行)就够日常用了。
五、删除、复制、粘贴
| 命令 | 作用 |
|---|---|
x | 删除当前字符 |
dd | 删除当前行 |
Ndd | 删除 N 行(如 5dd) |
dw | 删除一个单词 |
d$ 或 D | 删到行尾 |
yy | 复制当前行 |
Nyy | 复制 N 行 |
p | 粘贴到下一行 |
P | 粘贴到上一行 |
u | 撤销(救命键) |
Ctrl+r | 重做 |
组合规律:操作 + 范围。d 是删,y 是复制,后面跟范围(d 一行、w 单词、$ 行尾)。
六、搜索与替换
# 搜索(普通模式)
/关键词 回车,向下搜索
?关键词 向上搜索
n 下一个匹配
N 上一个匹配
# 替换(命令模式)
:%s/old/new/g 全文替换
:%s/old/new/gc 全文替换,每次询问
:s/old/new/g 只替换当前行
:10,20s/old/new/g 替换 10~20 行改配置时批量换域名特别好用:
:%s/old-domain.com/new-domain.com/g搜索时
.是正则通配符,要匹配字面量的点得写.。
七、改只读文件忘了 sudo
经典场景:vim /etc/nginx/nginx.conf 改了半天,:wq 提示只读。
# 不用退出重来,在 vim 里直接:
:w !sudo tee % > /dev/null
# 然后 :q! 退出(会提示文件已变,选 OK)原理:% 代表当前文件名,把内容通过管道交给带 sudo 的 tee 写回。
八、一份够用的配置
~/.vimrc:
set number " 显示行号"
set relativenumber " 相对行号(配合 Ndd / Nyy 很好用)"
syntax on " 语法高亮"
set tabstop=4 " Tab 宽度"
set shiftwidth=4 " 自动缩进宽度"
set expandtab " Tab 转空格"
set autoindent " 自动缩进"
set hlsearch " 高亮搜索结果"
set incsearch " 输入时即时搜索"
set ignorecase " 搜索忽略大小写"
set smartcase " 但输入大写时区分大小写"
set cursorline " 高亮当前行"
set mouse=a " 启用鼠标(可选)"最实用的是 set number —— 报错信息说「第 43 行有问题」,你直接 :43 就能跳过去。
九、服务器场景的几个技巧
直接跳到某行打开文件
vim +43 /etc/nginx/nginx.conf
vim +/listen /etc/nginx/nginx.conf # 跳到第一个匹配 listen 的位置只读模式打开(怕误改时)
vim -R /etc/important.conf
# 或
view /etc/important.conf崩溃后恢复
vim 异常退出会留 .swp 文件。重新打开时它问你要不要恢复:
# 选 R 恢复,或选 D 删除交换文件
# 想直接跳过提示:
vim -n file.conf
# 清理所有残留的 swp
find . -name ".*.swp" -delete查看不可见字符(排查配置问题)
:set list
# 会显示 Tab(^I)和行尾($)
# 混了 Tab 和空格的 YAML 特别需要看这个十、什么时候该用 nano
说句实话:如果你只是改一行配置,nano 更合适。
nano /etc/nginx/nginx.conf
# 底部直接写着快捷键:^O 保存,^X 退出nano 没有模式概念,打开就能打字,所见即所得。没有学习成本。
我自己的分工:
- 改一两行 →
nano; - 要跳行、批量替换、看大文件 →
vim。
不用为了「显得专业」硬用 vim。工具的目的是把事办了。
记住 Esc 保底、:q! 逃跑、:wq 保存、i 进入编辑、u 撤销 —— 这五条就够在服务器上活下来了。
