> Vim编辑器快速入门:服务器上编辑文件不再头疼

为什么要学Vim

几乎每台Linux服务器都预装了Vim。当你SSH到服务器需要改配置文件的时候,没有VSCode可用,nano太弱,Vim是最实用的选择。

我不是Vim原教旨主义者,不会让你日常开发都用Vim。但服务器上改改配置文件的基本操作,你必须会。10分钟就能学会够用的部分。

Vim的三种模式

这是Vim最容易让新手困惑的地方——它有不同的模式:

模式作用进入方式退出方式
普通模式移动光标、复制粘贴Esc-
插入模式编辑文本i/a/oEsc
命令模式保存、退出、搜索:EnterEsc
1
2
3
4
5
普通模式 ──按i──→ 插入模式
    ↑                │
    └──按Esc────────┘
    ├──按:──→ 命令模式

最基本的操作流程

打开文件

1
$ vim /etc/nginx/nginx.conf

编辑文件

1
2
3
4
5
1. 打开后默认在普通模式
2. 按 i 进入插入模式(左下角显示 -- INSERT --)
3. 像正常打字一样编辑
4. 编辑完按 Esc 回到普通模式
5. 输入 :wq 保存并退出

保存与退出

1
2
3
4
5
6
:w          保存
:q          退出(未修改时)
:wq         保存并退出
:q!         强制退出(不保存)
:wq!        强制保存并退出
ZZ          保存并退出(快捷方式)

新手最常见的问题:“怎么退出Vim???"——按Esc再输入:q!就能强制退出。这个Stack Overflow上被问了几百万次。

移动光标

在普通模式下:

1
2
3
4
5
6
h ← 左移
j ↓ 下移
k ↑ 上移
l → 右移

# 你也可以用方向键,但hjkl效率更高

快速移动

按键作用
gg跳到文件开头
G跳到文件末尾
数字G跳到指定行(如50G跳到第50行)
0跳到行首
$跳到行尾
w跳到下一个单词
b跳到上一个单词
Ctrl+f向下翻页
Ctrl+b向上翻页
1
2
3
# 直接打开文件并跳到指定行
$ vim +50 /etc/nginx/nginx.conf
# 打开后光标在第50行

编辑操作

进入插入模式的几种方式

按键作用
i在光标前插入
a在光标后插入
I在行首插入
A在行尾插入
o在下方新建一行
O在上方新建一行

复制、粘贴、删除

在普通模式下:

按键作用
yy复制整行
3yy复制3行
dd删除(剪切)整行
3dd删除3行
p粘贴到光标下方
P粘贴到光标上方
u撤销
Ctrl+r重做
x删除光标处的字符
dw删除一个单词

实战示例

1
2
3
4
5
6
7
# 场景:删除Nginx配置中的一个server块

1. 移动光标到 server { 那一行
2. 按 V 进入行选择模式
3. 按 j 往下选择到 } 那一行
4. 按 d 删除选中内容
5. 按 :wq 保存退出

搜索与替换

搜索

1
2
3
4
5
6
7
8
/关键词      向下搜索
?关键词      向上搜索
n           跳到下一个匹配
N           跳到上一个匹配

# 实例:搜索"server_name"
/server_name
# 按n跳到下一个匹配位置

替换

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 替换当前行第一个匹配
:s/old/new/

# 替换当前行所有匹配
:s/old/new/g

# 替换全文所有匹配
:%s/old/new/g

# 替换全文(带确认)
:%s/old/new/gc
# 每次会问你 y/n/a/q

# 实例:把所有80端口改成8080
:%s/listen 80/listen 8080/g

实用技巧

显示行号

1
2
3
:set number      显示行号
:set nonumber    隐藏行号
:set nu          显示行号(简写)

语法高亮

1
2
:syntax on       开启语法高亮
:syntax off      关闭

多文件编辑

1
2
3
4
5
6
7
# 打开多个文件
$ vim file1.conf file2.conf

# 在Vim中切换
:n               下一个文件
:prev            上一个文件
:ls              列出所有打开的文件

分屏

1
2
3
4
:split file2     水平分屏
:vsplit file2    垂直分屏
Ctrl+w w         在分屏间切换
Ctrl+w q         关闭当前分屏

配置Vim(可选)

创建~/.vimrc让Vim更好用:

1
$ vim ~/.vimrc
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
" 基础设置
set number          " 显示行号
set relativenumber  " 相对行号
syntax on           " 语法高亮
set encoding=utf-8  " UTF-8编码

" 缩进设置
set tabstop=4       " Tab宽度4
set shiftwidth=4    " 自动缩进宽度
set expandtab       " Tab转空格
set autoindent      " 自动缩进

" 搜索设置
set hlsearch        " 高亮搜索结果
set incsearch       " 实时搜索
set ignorecase      " 忽略大小写
set smartcase       " 智能大小写

" 其他
set cursorline      " 高亮当前行
set showmatch       " 括号匹配
set wildmenu        " 命令补全菜单
set mouse=a         " 启用鼠标(可选)

Vim vs Nano 对比

特性VimNano
学习难度较高极低
功能非常强大基础
效率熟练后极高一般
预装率几乎100%大部分
适合场景频繁编辑偶尔改个配置

如果你只是偶尔改个配置文件,nano完全够用:

1
2
$ nano /etc/nginx/nginx.conf
# Ctrl+O 保存, Ctrl+X 退出,底部有提示

新手最低要求

不需要记住所有命令。以下是我认为的最低要求,记住这些就能在服务器上存活:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
vim filename     打开文件
i                进入编辑模式
Esc              退出编辑模式
:wq              保存退出
:q!              不保存退出
/keyword         搜索
dd               删除一行
u                撤销
yy               复制一行
p                粘贴

10个操作,覆盖90%的使用场景。

总结

Vim不需要精通,但必须会基本操作。在服务器上改配置文件是常事,掌握了打开、编辑、保存、搜索这几个基本操作就够日常使用了。

更多Linux基础命令,可以参考Linux最常用的50个命令。服务器上编辑配置文件后,记得检查语法再重载服务,比如Nginx配置中的nginx -t

Vim 编辑器 Linux工具
cd ..