13 10 月 2026

在服务器上改配置,你几乎总会遇到 vim。它功能强大但学习曲线陡峭——很多人第一次用是"打开后不知道怎么输入,最后关不掉"。

这篇讲 vim 的核心用法:够你在服务器上高效改文件,不用再害怕。

需要一台服务器练手?财富云计算 提供云服务器;内网服务、测试环境可选 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上)。

一、为什么必须会一点 vim

  1. 服务器上默认就有(nano 不一定装了)
  2. 远程编辑配置文件的标准工具
  3. 不需要图形界面,SSH 下完美工作
  4. 熟练后编辑效率极高

最低要求:会打开、会输入、会保存、会退出。这篇保证你达到这个水平以上。


二、vim 的模式(核心概念)

这是 vim 和其他编辑器最大的区别——它有模式:

模式作用怎么进入
普通模式(Normal)移动光标、执行命令启动默认;其他模式按 Esc
插入模式(Insert)输入文字按 i a o 等
可视模式(Visual)选中文本按 v V Ctrl+v
命令模式(Command)保存、退出、搜索替换按 :

新手最大的困惑:打开后敲键盘没反应/乱跳 —— 因为你在普通模式,按键被当成命令了。

记住:想输入文字先按 i,改完按 Esc 回到普通模式再保存。


三、打开与退出(先学会跑路)

vim file.txt              # 打开文件
vim file.txt +100         # 打开并跳到第 100 行
vim +/关键词 file.txt      # 打开并跳到第一个匹配
vim file1 file2           # 打开多个文件

退出(最重要)

命令含义
:q退出(没修改时)
:q!强制退出,不保存(改错了用这个)
:w保存
:w file2另存为
:wq 或 :x 或 ZZ保存并退出
:wq!强制保存退出(只读文件时)

卡住了怎么办:按 Esc 几次,然后输入 :q! 回车。一定能出来。


四、插入文本

命令作用
i在光标前插入
a在光标后插入
I在行首插入
A在行尾插入
o在下方新开一行
O在上方新开一行
s删除当前字符并插入
S / cc删除整行并插入

进入插入模式后左下角会显示 -- INSERT --。


五、移动光标(普通模式)

基本移动

    k  ↑
h ←     → l
    j  ↓

或者直接用方向键(新手友好)。

高效移动

命令移动
w / b下一个 / 上一个单词
0 / ^行首 / 行首第一个非空格
$行尾
gg文件开头
G文件结尾
100G 或 :100跳到第 100 行
Ctrl+f / Ctrl+b下一页 / 上一页
Ctrl+d / Ctrl+u下半页 / 上半页
%跳到匹配的括号
{ / }上一段 / 下一段

六、编辑操作

删除

命令作用
x删除当前字符
dd删除当前行
5dd删除 5 行
dw删除一个单词
d$ / D删到行尾
d0删到行首
dG删到文件尾
dgg删到文件头

复制粘贴

命令作用
yy复制当前行
5yy复制 5 行
yw复制一个单词
p在光标后粘贴
P在光标前粘贴

其他

命令作用
u撤销
Ctrl+r重做
.重复上一次操作(非常好用)
>> / <<右移 / 左移(缩进)
J合并下一行到当前行
~切换大小写

组合用法:d + 移动命令 = 删除到某处。比如 d$ 删到行尾,dw 删一个词。


七、搜索与替换

搜索

/关键词         向下搜索
?关键词         向上搜索
n              下一个匹配
N              上一个匹配
*              搜索光标下的单词(向下)
#              搜索光标下的单词(向上)
:set hlsearch  高亮所有匹配
:set nohlsearch 关闭高亮
:nohlsearch    临时关闭高亮

替换

:s/old/new/              替换当前行第一个
:s/old/new/g             替换当前行所有
:%s/old/new/g            替换全文所有
:%s/old/new/gc           替换全文,每次确认
:10,20s/old/new/g        替换第 10-20 行
:%s/old/new/gi           忽略大小写

最常用::%s/旧/新/g —— 全文替换。

搜索时忽略大小写

:set ignorecase      " 忽略大小写
:set smartcase       " 有大写字母时区分大小写

八、可视模式(选中文本)

v           字符选择(按字符移动)
V           行选择(按行)
Ctrl+v      块选择(矩形区域)

选中后可以:

d    删除
y    复制
>    缩进
<    反缩进
:    进入命令(会对选中范围操作)

块选择的妙用(批量注释):

  1. Ctrl+v 进入块选择
  2. 移动光标选中多行行首
  3. Shift+i 进入插入
  4. 输入 #
  5. Esc 两次 —— 所有选中行都加上了 #

九、多文件与分屏

:e file2              打开另一个文件
:bn / :bp             下一个 / 上一个文件
:ls                   列出所有打开的文件
:split file 或 :sp    水平分屏
:vsplit file 或 :vs   垂直分屏
Ctrl+w w              切换窗口
Ctrl+w h/j/k/l        切换到左/下/上/右
Ctrl+w q              关闭当前窗口
:qall                 关闭所有
:wqall                保存并关闭所有

十、实用配置(~/.vimrc)

新建 ~/.vimrc 让它更好用:

" 显示行号
set number

" 语法高亮
syntax on

" 自动缩进
set autoindent
set smartindent

" Tab 设置(重要,改配置文件时)
set tabstop=4
set shiftwidth=4
set expandtab          " Tab 转空格

" 搜索
set hlsearch           " 高亮搜索结果
set incsearch          " 边输边搜
set ignorecase
set smartcase

" 显示
set cursorline         " 高亮当前行
set showcmd            " 显示命令
set ruler              " 显示行列位置
set laststatus=2       " 显示状态栏

" 编辑
set backspace=indent,eol,start   " 退格键可用
set encoding=utf-8
set fileencodings=utf-8,gbk,gb2312

" 鼠标支持
set mouse=a

" 显示不可见字符
set list
set listchars=tab:>-,trail:~
vim ~/.vimrc
# 粘贴上面的内容,:wq 保存

注意:set expandtab 会把 Tab 变成空格。编辑 Python/YAML 时很有用(这些语言对缩进敏感),但如果你想保留 Tab 就去掉它。


十一、编辑系统配置文件的注意事项

1)权限

sudo vim /etc/nginx/nginx.conf     # 用 sudo 打开
# 或打开后强制保存
:w !sudo tee % > /dev/null

2)改前先备份

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
vim /etc/nginx/nginx.conf

3)改完验证语法

nginx -t
sshd -t
php -l file.php

4)只读文件强制保存

:wq!

十二、常见场景速查

场景:改 Nginx 配置

sudo vim /etc/nginx/sites-available/mysite
# i 进入插入模式
# 改完 Esc
# :wq 保存退出
sudo nginx -t && sudo systemctl reload nginx

场景:清空一个文件

gg          " 到开头
dG          " 删到结尾
:wq

或者命令模式下::%d 然后 :wq

场景:全文替换域名

:%s/old-domain.com/new-domain.com/g
:wq

场景:批量注释多行

Ctrl+v      " 块选择
j j j       " 选中几行
Shift+i     " 插入
#           " 输入注释符
Esc         " 等一下,所有行都会加

场景:复制几行到别处

V           " 行选择
j j         " 选 3 行
y           " 复制
移动光标到目标位置
p           " 粘贴

十三、vim vs nano

对比vimnano
学习成本高极低
功能极强基础
默认安装几乎所有系统部分系统没有
快捷键提示无底部有提示
适合长期使用、重度编辑临时改个文件

建议:

  • 临时改一行 → nano(nano file)
  • 要长期在服务器上工作 → 花半小时学 vim,值得
  • 大段编辑 → 本地编辑器写好再上传(WinSCP、VS Code Remote)

设置默认编辑器:

export EDITOR=vim
echo 'export EDITOR=vim' >> ~/.bashrc

十四、如果实在受不了 vim

替代品:

# nano(最简单)
apt install nano -y
nano file

# 本地编辑后上传(推荐做法)
# WinSCP / FileZilla / VS Code Remote SSH
# 本地用熟悉的编辑器,保存自动同步到服务器

VS Code Remote SSH 是现代最舒服的方案:本地 VS Code 直接编辑服务器文件,有语法高亮、自动补全、Git 集成,完全不用 vim。


十五、速查卡

打开:      vim file
插入:      i (前) / a (后) / o (下新行) / O (上新行)
回普通:    Esc

保存:      :w
退出:      :q
保存退出:  :wq 或 ZZ
强制退出:  :q!

删除行:    dd  (5dd 删 5 行)
复制行:    yy  (5yy 复制 5 行)
粘贴:      p (后) / P (前)
撤销:      u   重做: Ctrl+r

行首:      0   行尾: $
文件头:    gg  文件尾: G
第 N 行:   :N

搜索:      /关键词   下一个 n   上一个 N
替换:      :%s/old/new/g      全文替换(加 c 逐个确认)

显示行号:  :set number

会 vim 是服务器运维的基本功。财富云计算 的云服务器提供完整的 SSH 访问,可自由安装 vim/nano 等工具;内网服务、测试环境可选 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上)。

相关阅读:

  • 《Linux 常用命令速查表》
  • 《SSH 密钥登录与账号安全配置》
  • 《Linux 文件权限与用户组详解》
延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:Shell 脚本编写入门:把重复操作变成一条命令
  2. 下一篇:Git 版本控制与服务器部署:代码管理 + 一键上线
发表评论 1