在 Linux 服务器上编辑文件,逃不开的编辑器就是 Vim。无论是改 Nginx 配置、写脚本还是编辑 crontab,打开的都是 Vim。但很多新手第一次打开 Vim 就卡住了:不知道怎么输入文字、不知道怎么退出,甚至有人把 Vim 戏称为"退出最难"的软件。这篇文章把 Vim 的核心用法一次讲清,让你从"不会退出"到"熟练编辑"。
一、Vim 是什么
Vim 是 Linux 上最经典的文本编辑器,是 vi 的增强版。它和 Windows 上的记事本完全不同:Vim 是模式化编辑器,同一个键盘在不同模式下代表不同功能,这就是新手困惑的根源。
Vim 有三种核心模式:
- 普通模式(Normal):打开文件默认进入,此时按键是命令(如删除、复制、移动光标)
- 插入模式(Insert):按
i进入,此时才能输入文字 - 命令行模式(Command):按
:进入,用于保存、退出、搜索等操作
新手最需要记住的退出命令:
:q # 退出(未修改时)
:q! # 强制退出,不保存
:wq # 保存并退出
:wq! # 强制保存并退出
按 Esc 可以随时回到普通模式。
二、安装与打开文件
安装 Vim(多数系统自带 vi,建议装完整版 vim):
# Ubuntu / Debian
apt install -y vim
# CentOS / Rocky
yum install -y vim
打开文件:
vim /etc/nginx/nginx.conf # 打开指定文件
vim +10 文件 # 打开并跳转到第 10 行
vim 文件1 文件2 # 同时打开多个文件
三、移动光标(普通模式)
打开文件后,用 hjkl 移动光标(比方向键高效):
| 按键 | 作用 |
|---|---|
h j k l |
左 / 下 / 上 / 右 |
w / b |
跳到下一个 / 上一个单词开头 |
0 / $ |
跳到行首 / 行尾 |
gg / G |
跳到文件开头 / 结尾 |
:数字 |
跳到指定行,如 :50 跳到第 50 行 |
Ctrl+f / Ctrl+b |
向下 / 向上翻页 |
四、进入插入模式(编辑)
在普通模式下按以下按键进入插入模式:
| 按键 | 作用 |
|---|---|
i |
在光标前插入 |
a |
在光标后插入 |
o |
在下一行新建并插入 |
O |
在上一行新建并插入 |
I |
在行首插入 |
A |
在行尾插入 |
编辑完成后按 Esc 回到普通模式。
五、删除、复制与粘贴
| 按键 | 作用 |
|---|---|
x |
删除光标处字符 |
dd |
删除整行 |
3dd |
删除 3 行 |
dw |
删除一个单词 |
d$ |
删除到行尾 |
yy |
复制整行 |
3yy |
复制 3 行 |
p |
粘贴到光标下方 |
P |
粘贴到光标上方 |
u |
撤销 |
Ctrl+r |
重做 |
撤销/重做是最常用的两个命令,改错了按 u 就回来。
六、搜索与替换
搜索:
/关键词 # 向下搜索,按 n 跳下一个,N 跳上一个
?关键词 # 向上搜索
替换:
:%s/旧词/新词/g # 全文替换
:%s/旧词/新词/gc # 全文替换,逐个确认
:5,20s/旧词/新词/g # 只替换 5 到 20 行
七、常用配置 .vimrc
在用户主目录创建 ~/.vimrc,写一些常用配置,编辑体验提升一个档次:
set number " 显示行号
set relativenumber " 相对行号
syntax on " 语法高亮
set autoindent " 自动缩进
set tabstop=4 " Tab 占 4 个空格
set shiftwidth=4 " 缩进宽度 4
set expandtab " Tab 转空格
set hlsearch " 搜索高亮
set incsearch " 边输入边搜索
set showcmd " 显示输入的命令
set nowrap " 不自动换行
filetype on " 按文件类型加载配置
改完 :wq 保存退出,重新打开 Vim 即生效。
八、多文件与分屏
:sp 文件名 # 水平分屏打开
:vsp 文件名 # 垂直分屏打开
Ctrl+w w # 在分屏间切换
:q # 关闭当前分屏
九、常见问题
Q1:Vim 卡住了,怎么退出?
先按 Esc 确保回到普通模式,再按 :q! 强制退出(不保存改动)。
Q2:按方向键出现 ABCD 乱码?
说明 Vim 没装完整版。用 apt install vim 安装完整版,或改用 hjkl 移动光标。
Q3:中文显示乱码?
在 ~/.vimrc 中加:
set encoding=utf-8
set fileencodings=utf-8,gbk
Q4:怎么把文件内容复制到系统剪贴板?
# 先复制选中内容,再用系统命令处理
:%y+ # 把全部内容复制到剪贴板
总结
Vim 的学习曲线陡峭,但核心就三件事:记住模式、记住移动、记住保存退出。把 i(插入)、Esc(返回)、:wq(保存退出)、dd(删行)、yy(复制)、p(粘贴)、u(撤销)这几个命令练熟,日常服务器编辑就完全够用了。剩下的命令用一次学一次,慢慢就熟练了。
