刚接手一台服务器,想改个配置文件,vi 一打开,光标在闪,你敲键盘它没反应,按了半天
Esc还是退不出来,最后只能Ctrl+Z强行挂起……别慌,每个程序员都经历过这一步。Vim 看着反人类,其实只要记住几个键,它就是你在服务器上最趁手的刀。
为什么服务端离不开 Vim
| 场景 | 图形编辑器 | Vim |
|---|---|---|
| 远程服务器改配置 | 没法用 | SSH 进去直接改 |
| 编辑超大日志(几个 G) | 直接卡死 | 秒开,按需加载 |
| 断网/低带宽环境 | 连不上 | 纯字符,丝滑 |
| 批量替换、列编辑 | 手动点到手酸 | 一行命令搞定 |
Vim 是几乎所有 Linux 发行版自带的东西,你不用装任何东西,登录服务器就能用。学会它,等于随身带了一把瑞士军刀。
一、三种模式(核心中的核心)
Vim 的"反人类"全怪它有三个模式,搞懂这个就入门了 80%。
| 模式 | 进入方式 | 作用 | 退出方式 |
|---|---|---|---|
| 普通模式(Normal) | 打开默认 / 按 Esc |
移动光标、删除、复制 | — |
| 插入模式(Insert) | 按 i / a / o |
输入文字 | 按 Esc 回普通模式 |
| 命令模式(Command) | 普通模式按 : |
保存、退出、查找 | 回车执行 |
记住一句话:普通模式是家,干完活就按 Esc 回家。
二、进入插入模式的几种姿势
在普通模式下:
i 在光标前插入
a 在光标后插入
o 在当前行下方新建一行并插入
O 在当前行上方新建一行并插入
I 跳到行首插入
A 跳到行尾插入
新手最常用 i 和 o,记住这两个就能开始写东西了。
三、移动光标(别再用方向键了)
Vim 里方向键也能用,但高手都用 h j k l,手不用离开主键区:
h 左
j 下
k 上
l 右
w 跳到下一个单词开头
b 跳到上一个单词开头
0 跳到行首
$ 跳到行尾
gg 跳到文件第一行
G 跳到文件最后一行
:行号 跳到指定行,如 :50
Ctrl+f 向下翻页
Ctrl+b 向上翻页
四、删除、复制、粘贴
普通模式下(不用进插入模式就能改):
x 删除光标所在字符
dw 删除一个单词
dd 删除整行
3dd 删除 3 行
D 删除从光标到行尾
yy 复制整行
3yy 复制 3 行
p 粘贴到光标下方
P 粘贴到光标上方
u 撤销
Ctrl+r 重做(反撤销)
小技巧:Vim 的删除其实是"剪切",
dd删掉的行用p能粘回来,相当于移动一行。
五、保存与退出(最容易卡住的地方)
在普通模式按 : 进入命令模式:
:w 保存
:w 文件名 另存为
:q 退出(没改才能退)
:q! 强制退出,不保存
:wq 保存并退出
:x 同 :wq
ZZ 普通模式下直接按,保存并退出(不用冒号)
记不住就记 :wq 和 :q! 这两个,一个保存退出,一个不保存强退,够用了。
六、查找与替换
/关键词 向下查找,按 n 跳下一个,N 跳上一个
?关键词 向上查找
:%s/旧/新/g 全文替换所有匹配
:s/旧/新/g 当前行替换所有匹配
:%s/旧/新/gc 全文替换,每个都问你要不要(c = confirm)
替换示例:把全文的 localhost 改成 127.0.0.1:
:%s/localhost/127.0.0.1/g
七、可视化模式(块选择)
v 字符级选择,配合 hjkl 选一片
V 行级选择,整行整行选
Ctrl+v 列块选择,能竖着选一整列(批量加注释超好用)
列块加注释实战:比如要给 5 行代码前面加 # 注释:
Ctrl+v进入列块模式- 用
j选中这 5 行的第一列 - 按
I(大写 i)进入列插入 - 输入
#,按Esc - 稍等一瞬,5 行前面同时出现
#
八、分屏(同时看多个文件)
:sp 文件名 上下分屏打开文件
:vsp 文件名 左右分屏打开文件
Ctrl+w w 在分屏间切换
Ctrl+w q 关闭当前分屏
改 Nginx 配置时,左边看原配置、右边写新配置,效率直接翻倍。
九、实用配置:让 Vim 更好用
默认 Vim 很裸,在 ~/.vimrc 里加点配置体验立刻不同:
" 显示行号
set number
" 语法高亮
syntax on
" 自动缩进
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
" 搜索时忽略大小写,有大写才区分
set ignorecase
set smartcase
" 实时高亮搜索结果
set hlsearch
set incsearch
" 鼠标支持(终端里也能用鼠标点)
set mouse=a
" 编码
set encoding=utf-8
十、新手速查表
| 我想干啥 | 按什么 |
|---|---|
| 开始写 | i |
| 不写了 | Esc |
| 存盘退出 | :wq |
| 不存强退 | :q! |
| 删一行 | dd |
| 粘回来 | p |
| 撤销 | u |
| 找东西 | /关键词 然后 n |
| 跳文件头/尾 | gg / G |
Vim 不用背,天天 ssh 上服务器改两回配置,这些键自然就长在肌肉里了。刚开始慢一点没关系,等你第一次在服务器上用 :%s 一行命令改完 200 处配置,你就再也回不去鼠标点点点了。