Appearance
Vim编辑器
在服务器上临时修改配置文件时,Vim 是最常用的编辑器。它和普通文本编辑器的最大区别是分模式操作——不是打开就能直接输入文字。
一、模式
Vim 有三个常用模式。不同模式下按键的含义完全不同。
| 模式 | 进入方式 | 用途 |
|---|---|---|
| 普通模式 | 按 Esc | 移动光标、复制粘贴、删除、执行命令 |
| 插入模式 | i、a、o 等 | 输入和修改文本 |
| 命令模式 | 在普通模式下按 : | 保存、退出、搜索替换、设置 |
打开文件后默认处于普通模式。如果不知道当前是什么模式,按一下 Esc 回到普通模式——这是一个安全的基准状态。
bash
vim /etc/hosts最基本的退出操作:
vim
:w " 写入(保存)
:q " 退出
:wq " 保存并退出
:q! " 强制退出,不保存修改记一条准则:不论误触了什么键导致界面变化,按 Esc 回到普通模式,输入 :q! 就能安全退出。这条对刚接触 Vim 时最有实际价值。
二、光标移动
普通模式下移动光标:
| 键 | 移动方向 |
|---|---|
h j k l | 左 下 上 右 |
gg | 文件开头 |
G | 文件末尾 |
0 | 当前行行首 |
$ | 当前行行尾 |
w | 下一个单词开头 |
b | 上一个单词开头 |
h j k l 四键成排,熟练后手不需要离开主键区。但现代终端里方向键一般也能用。
跳到指定行号:
vim
:120 " 跳到第 120 行排错时错误信息通常会提示行号,用 :行号 直接跳过去比翻页快。
三、编辑操作
从普通模式进入插入模式:
| 键 | 效果 |
|---|---|
i | 在光标前插入 |
a | 在光标后插入 |
o | 在下一行新建一行 |
O | 在上一行新建一行 |
普通模式下的删除和复制:
| 命令 | 效果 |
|---|---|
x | 删除光标处字符 |
dd | 删除整行 |
yy | 复制整行 |
p | 在光标后粘贴 |
u | 撤销上一步操作 |
Ctrl+r | 重做 |
数字前缀可以批量执行:
vim
5dd " 删除 5 行
3yy " 复制 3 行
10x " 删除 10 个字符四、搜索和替换
普通模式下按 / 进入搜索:
vim
/listen " 搜索 "listen"按 n 跳到下一个匹配项,N 跳到上一个。
替换操作用 :s 命令:
vim
:s/old/new/ " 替换当前行第一个匹配
:s/old/new/g " 替换当前行所有匹配
:%s/old/new/g " 替换文件中所有匹配
:%s/old/new/gc " 替换前逐个确认(c = confirm)改线上的配置文件时,替换 IP、域名、路径这类内容,带 c 确认更安全。一个不小心全文替换错了,比手工一行行改的代价大得多。
五、可视模式
可视模式用来选中文本块,再进行批量操作。
| 键 | 模式 |
|---|---|
v | 按字符选择 |
V | 按行选择 |
Ctrl+v | 按列块选择 |
块选择常用于批量注释多行:
vim
Ctrl+v " 进入块选择模式
选择多行(用 j/k 移动)
I " 在选中块的行首插入
# " 输入注释符
Esc " 应用到所有选中行这个操作适用于临时注释掉一段配置。正式变更还是要保留备份文件,撤销记录不适合当回滚方案。
六、多文件与分屏
同时打开多个文件:
bash
vim nginx.conf default.conf文件间切换:
vim
:n " 下一个文件
:prev " 上一个文件
:ls " 列出所有打开的 buffer
:b 2 " 切换到编号为 2 的 buffer分屏显示:
vim
:sp file " 上下分屏(horizontal split)
:vsp file " 左右分屏(vertical split)分屏间移动光标:Ctrl+w 之后再按方向键(h j k l),或者用 Ctrl+w w 在窗口间循环切换。
七、基础配置
Vim 的个人配置放在 ~/.vimrc 中。服务器上保持越简单越好,接近默认配置换机器时不难受。
vim
set number " 显示行号
set tabstop=4 " Tab 显示为 4 个空格宽度
set shiftwidth=4 " 自动缩进宽度
set expandtab " 输入 Tab 时自动转成空格
set ignorecase " 搜索忽略大小写
set smartcase " 搜索内容有大写时自动区分大小写
set hlsearch " 高亮搜索结果
syntax on " 语法高亮expandtab 在 Python 和 YAML 配置文件中很重要——缩进混用 Tab 和空格会导致语法错误或配置解析异常。