马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、前言:Vim 是什么,为什么还要学它
在 Ubuntu 上做运维和开发,编辑配置文件躲不开 Vim——/etc/nginx/nginx.conf、/etc/hosts、systemd unit 文件,都没法用图形编辑器改。
Vim 是从 VI 发展出来的一个文本编辑器,具有代码补全、错误跳转等功能,在程序员中被广泛使用。它最核心的设计理念是"命令的组合":通过各种文本间移动、跳转命令与其他普通的编辑命令灵活组合,可以更高效地完成文本编辑。
换句话说,Vim 不靠"鼠标点菜单",靠的是手指不离开主键区敲一串短命令。上手头两天会很不顺,一旦形成肌肉记忆,编辑速度是普通编辑器比不了的。
二、四种模式:先把它理清楚
Vim 常见的模式有普通模式、插入模式、命令模式和可视模式。
| 模式 | 怎么进入 | 干什么 |
| 普通模式(Normal) | Vim 启动时默认进入 | 移动光标、删除、复制、粘贴;按 Esc 总能回到这里 |
| 插入模式(Insert) | 普通模式下按 i / I / o / O / a / A / r / R | 真正的文本输入编辑 |
| 命令模式(Command) | 普通模式下按 : | 查找、存盘、替换字符等操作 |
| 可视模式(Visual) | 普通模式下按 v | 高亮选取文本后的普通模式 |
一句话记住进出规则:Vim 启动就在普通模式;在其他任何模式下按 Esc 都能回到普通模式。这个"普通模式是中枢"的设计,是 Vim 所有快捷键的前提。
可视模式还有两个子模式
- 可视行模式:以行为单位选取,按
V(大写)进入。
- 可视块模式:以块(竖列)为单位选取,按
Ctrl+v 进入。批量改缩进、批量加注释前缀,靠的就是它。
三、安装
在 Ubuntu 系统中可以用以下命令安装 Vim:
- 打开终端;
- 输入
sudo apt install vim 命令并按下回车键;
- 等待安装完成。
sudo apt update
sudo apt install vim
安装完成后,在终端中输入 vim 就能打开 Vim 编辑器。装完第一件事建议确认版本:vim --version | head -1。
一个小提示
Ubuntu 默认预装的是 vi.tiny(精简版,不支持语法高亮)。如果你在 sudo apt install vim 之前敲 vi 打开,会觉得界面很朴素——装完 vim 后直接敲 vim 即可,别用 vi。
四、配置:一份够用的 ~/.vimrc
Vim 的个人配置放在用户主目录的 ~/.vimrc,没有的话直接新建一个:
vim ~/.vimrc
下面这份配置是初学者的高频项,照抄即可:
" 设置显示行号
set nu
" 设置缩进为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab
" 开启语法高亮
syntax on
" 显示状态栏
set laststatus=2
" 开启自动缩进
set autoindent
" 增强搜索匹配显示
set hlsearch
" 不备份文件
set nobackup
逐项说明:
set nu(number):显示行号。看日志 、改配置时定位行号极其重要。
set tabstop=4 + set shiftwidth=4 + set expandtab:一个 Tab 显示 4 格宽、缩进宽度 4、输入 Tab 时展开成空格而不是真 Tab。这一组是写代码的标配,能避免不同机器打开缩进错乱。
syntax on:语法高亮,写代码时清晰很多。
set laststatus=2:总是显示状态栏(显示当前文件、模式、行列位置)。
set autoindent:自动缩进,换行后延续上一行缩进。
set hlsearch:搜索结果高亮,找关键词时一眼能看到全部匹配。
set nobackup:不生成 filename~ 备份文件,省得目录里堆一堆垃圾。如果这个开关关掉,编辑器异常退出时恢复原文的希望也很小,改配置文件前习惯性 cp 一份更稳。
配置写完后要么重开 Vim,要么在命令模式敲 :source ~/.vimrc 立即生效。
五、基本使用:四种模式的实际操作
Vim 有多种工作模式,下面是必须掌握的操作。
普通模式(打开后默认)
- 移动光标:方向键,或者主键区的
h(左)、j(下)、k(上)、l(右)。
x:删除光标所在的字符。
dd:删除整行(前面加数字可删多行,如 3dd)。
插入模式
普通模式下按 i(当前光标位置前插入)、a(光标位置后插入)、o(当前行下一行插入新行并进入插入模式)等键进入;在插入模式下做文本输入、修改等操作;编辑完成后按 Esc 回到普通模式。
这三条的区别值得单独记:i 插在光标前、a 插在光标后(所以多一个字符)、o 直接另起一行。
命令模式(按 : 进入)
:w:保存文件。
:q:退出 Vim。
:wq:保存并退出。
:q!:有未保存的更改且不想保存,直接退出(! 是"强制")。
:set nu / :set nonu:临时开/关行号。
- 权限不够时
:w! 强制保存(需要对应文件系统权限)。
顺带说查找:命令模式下输入 /关键词 执行查找,按 n 下一个、N 上一个;替换是 :%s/旧/新/g(% 表示全文,末尾 g 表示每行所有处)。
可视化模式
普通模式下按 v 进入可视化模式,可选择文本进行复制、粘贴、删除等操作。配合前面的 V(按行选)和 Ctrl+v(按块选),就能实现批量操作。
替换模式
普通模式下按 R 进入替换模式,可直接替换光标处起的文本(和插入模式的区别是不产生"插入后退格"的行为)。
实用组合:Ctrl+v 进入块选 → 按 I 或 A → 输入内容 → Esc。这会给选中块的每一行都加上同一段前缀——给整段配置批量加 # 注释,两秒搞定。
六、用 Vim 编辑文本文件:完整流程
- 打开终端,输入
vim 文件名 打开指定的文本文件。如果文件不存在,Vim 会创建一个新的空文件——这一点常被误当成"文件已存在",保存时才发现有拼写错误。
- 进入 Vim 后默认处于普通模式。
- 按
i 进入插入模式(或 a / o),编辑文本。
- 编辑完成后按
Esc 回到普通模式。
- 在普通模式下做删除、复制、粘贴,例如
dd 删除当前行、yy 复制当前行(nyy 复制 n 行)。
- 粘贴用
p(当前行下一行粘贴)/ P(上一行)。
- 保存输入
:w;退出 :q;保存并退出 :wq;不保存退出 :q!。
另一个高频场景是改完才发现没权限:普通用户直接 vim /etc/xxx 进得去、:w 报 E212: Can't write file。两个解法::w !sudo tee %(临时提权写回),或者干脆退出后用 sudo vim 重开。后者更省事,但同理要小心 :q! 会丢掉改动。
七、代码编辑的常用操作
缩进和格式化
普通模式下使用 = 命令对选中的代码块进行自动缩进:在可视模式选中一段后按 =。想保持统一风格,回到配置里的 shiftwidth 那三项就好。
代码折叠
Vim 支持代码折叠,方便查看和管理大型代码块:za 切换折叠(开/关),zM 全部关闭、zR 全部打开。看几百行的一个配置文件时特别有用。
语法高亮
不同编程语言会有相应的语法高亮表现,使代码布局更清晰。若装的是精简版 Vim 或文件后缀不被识别,高亮会失效,此时用 :set syntax=php 手动指定语言即可。
快速移动
Ctrl+f 向前翻页、Ctrl+b 向后翻页。
gg 跳到文件首行、G 跳到文件末行。
0 行首、$ 行尾。
:行号 直接跳到指定行(配 :set nu 看行号用)。
查找和替换
命令模式下输入 /要查找的代码片段 执行查找;替换命令 :%s/old/new/gc(c 表示逐个确认)。
八、多窗口编辑
在 Vim 中可以使用以下命令进行多窗口编辑:
:sp 或 :split 水平分割窗口,在当前窗口下方打开一个新窗口,显示相同的缓冲区内容
:vs 或 :vsplit 垂直分割窗口,在当前窗口右侧打开一个新窗口,显示相同的缓冲区内容
:new 打开一个新的窗口,显示一个空的缓冲区
要同时编辑两个文件:
vim file1 file2 # 启动时同时打开两个文件,每个文件占用一个窗口
:sp file2 # 当前窗口中打开文件 file2,并水平分割窗口
:vs file2 # 当前窗口中打开文件 file2,并垂直分割窗口
在多个窗口之间切换:
Ctrl+w + 方向键 按方向键切换到前/下/上/后一个窗口
Ctrl+w h/j/k/l 切换到左/下/上/右边的窗口
Ctrl+w w 依次向后切换到下一个窗口
要调整窗口大小:
Ctrl+w + 增加当前窗口的高度
Ctrl+w - 减少当前窗口的高度
Ctrl+w > 增加当前窗口的宽度
Ctrl+w < 减少当前窗口的宽度
多标签页:另一种组织方式
窗口分割适合"并排对照",标签页适合"按任务分组"::tabnew file 新建标签、gt 切到下一个标签、gT 切上一个、:tabclose 关闭。拉开三个以上窗口对比时,改用标签页清爽得多。
缓冲区:分割窗口的隐藏前提
要重点理解窗口(window)和缓冲区(buffer)是两回事::sp 分出来的是"同一个缓冲区的两个视图",改一处另一处跟着变;而打开多个文件后它们各自是独立的 buffer,用 :ls 查看、:bnext / :b 2 切换。关窗口不等于关文件。
九、初学者最容易卡住的三件事
- 进去了出不来:不清楚自己处在哪种模式。对策:先狂按
Esc 回到普通模式,再敲 :q!。记住 Esc 永远有效。
- 改完没保存就退出,白忙一场:习惯性用
:wq 或 :x,别用裸 :q。改系统配置前先 cp 原文件 原文件.bak。
- 方向键没反应、被吞掉:你正在插入模式,方向键在输入文字。按
Esc 退回普通模式再导航。
小结
Vim 的学习曲线陡,但拐点很明确:
- 四种模式:普通(中枢,
Esc 回得去)、插入(i/a/o)、命令(:)、可视(v / V / Ctrl+v)。
- 一条主干操作链:
vim 文件 → i 编辑 → Esc → dd/yy 删复制 → :w/:wq/:q!。
- 一份配置:
~/.vimrc 里 set nu、tabstop/shiftwidth=4+expandtab、syntax on、set hlsearch、set nobackup。
- 多窗口:
:sp / :vs 分割,Ctrl+w 系列切换与调大小;对照用分窗,分组用标签页。
把"移动 → 选择 → 执行"这个三步法练熟,Vim 就从"最难用的编辑器"变成"最快的手工具"。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于 Vim 8.x,适用于 Ubuntu 20.04 / 22.04 / 24.04 等使用 apt 的发行版。) |