如果你平时在 Ubuntu 下写代码或者维护服务器,大概率绕不开 Vim。系统自带的 Vim 算不上难用,但离顺手总差那么一口气——编辑 Python 文件不带缩进,看代码没有行号,目录和文件切换基本靠手敲路径,复制粘贴更是经常和系统剪贴板“失联”。Vimplus 是社区里流传度很高的一套增强方案,它不是独立软件,而是把 Vim 的插件、主题、键位和编辑行为打包成一整套配置,解决“拿到 Vim 就能顺手写代码”的问题。这篇文章我完整记录一下 Ubuntu 上从零安装 Vim、部署 Vimplus 的过程,包括每个步骤为什么这么做、有哪些坑、怎么按自己的习惯改。刚接触 Vim 的新手可以照步骤走,已经用了一段时间的老手也能在配置思路上找到可借鉴的地方。
1. 为什么在 Ubuntu 里,Vim 需要做增强
1.1 原生 Vim 够用,但真的不够好用
默认 Ubuntu 装好后的 Vim,其实就是一个毛坯房。能开文件、能编辑、能保存退出,但真正想拿它写代码,很多东西都要自己配:行号、缩进、语法高亮、自动补全、文件树、Git 集成,默认一件都不会主动给你。特别是从别的编辑器转过来的人,第一次用 Vim 时连光标移动都别扭,很容易劝退。
我见过不少同学打开 vim 第一件事是问“怎么退出”,听起来像段子,但确实是大多数人的第一印象。等越过这一关,又会遇到第二个问题:能用,但很难受。比如写 Python 时,Tab 缩进和空格混在一起,等运行才发现 IndentationError;想上下翻看代码,还得先记一堆 Ctrl 组合键;连粘贴文本都会因为自动缩进变样。这些问题不是因为 Vim 本身不行,而是默认配置实在太素,很多能力被藏在开关后面,不开就永远用不上。
1.2 Vimplus 解决的核心问题
Vimplus 的核心思路很简单:把散落在各处的优秀插件、配置和键位,整合成一套“开箱即用”的方案。你不需要自己去找插件、想键位、调主题,它已经在配置里替你做好了取舍。只要把安装脚本跑完,一个带文件树、状态栏、模糊搜索、代码补全、代码大纲的 Vim 就出现在终端里。
这套方案适合两类人:一类是刚入门、不想在配置上花太多时间,想直接进入编辑状态的新手;另一类是已经用 Vim 一段时间,但每次换机器都要从头搭环境的老手。Vimplus 能帮你把“基础配置”这件事标准化,剩下的个人习惯再放到自定义文件里慢慢加。
不过也要说清楚:它不是万能的。如果你对每一个键位都有极强的个人偏好,喜欢完全掌控自己的配置,那从零写 .vimrc 可能更适合你。另外,Vimplus 在安装时会覆盖你现有的~/.vimrc和~/.vim目录,所以动手之前备份是必须做的。
2. 安装前准备:系统依赖与基础 Vim
2.1 确认系统环境和软件源
开始之前,先确认你的 Ubuntu 版本和架构。不同版本虽然安装方式大同小异,但软件源里的包版本会有差别,提前看一眼能避免很多低级错误。打开终端,执行:
lsb_release -a uname -m第一条看系统版本,第二条看 CPU 架构。绝大多数人是 x86_64,也就是 amd64。如果看到 aarch64,后边安装某些编译型插件时,时间会明显变长,但流程不受影响。
接着做一次软件源更新。这一步很多人会偷懒跳过,但 Ubuntu 刚装完或者长时间没更新时,软件源索引可能滞后,直接装包很容易遇到 404 或者版本不匹配。执行:
sudo apt update执行完再顺手把系统基础组件升级一下,避免依赖冲突。生产环境如果担心升级影响服务,可以只做 update,不强制 upgrade。
2.2 安装依赖包的实际命令
Vimplus 不像普通配置文件那样拷贝一下就能用,它里面有一些插件需要编译原生代码,比如代码补全插件。所以要先把编译工具链和 Python 开发头文件装好。我实际用的命令是:
sudo apt install -y vim git curl wget build-essential cmake python3-dev python3-pip拆开看这些包分别干什么:
vim:Vim 本体,基础中的基础。git:用来拉取 Vimplus 仓库和后续更新插件。curl、wget:安装脚本下载插件和资源时会用到。build-essential:提供编译器,补全插件编译 C/C++ 部分时离不开。cmake:用来构建一些重量级插件。python3-dev:让 Vim 能正确编译 Python 接口,很多补全插件都依赖它。python3-pip:部分插件运行时需要 Python 包支持。
如果你平时主要写前端,后面大概率还会用到nodejs和npm,因为一些补全插件把核心跑在 Node 上。可以先装上,避免插件运行时报“缺少 node”的错。这个包比较大,建议等真的遇到报错再单独补。
2.3 验证 Vim 是否装好
装完先确认 Vim 版本和编译特性:
vim --version | grep -E 'clipboard|python3'重点看两个地方:一个是+clipboard,表示 Vim 能直接访问系统剪贴板;一个是+python3,表示内置 Python3 支持。这两项对后续体验影响很大,尤其是复制粘贴。
如果看到的是-clipboard,说明你装的是精简版 Vim,建议补装一个完整版:
sudo apt install -y vim-gtk3装完再跑一次vim --version,这时候应该是+clipboard了。很多人装完 Vimplus 后发现在系统里复制文本,切回 Vim 里粘贴不出来,十有八九就是这一步没做。
3. Vimplus 安装流程逐段拆解
3.1 获取安装脚本并运行
依赖准备好之后,就可以开始装 Vimplus 了。先把仓库 clone 到本地,再执行安装脚本。这里给一个通用示例,仓库地址以你拿到的最新官方地址为准:
git clone --depth=1 <vimplus仓库地址> ~/vimplus cd ~/vimplus ./install.sh--depth=1是浅克隆,只拉取最新一次提交,能省不少下载时间。如果之前已经装过一半,想重新跑,建议先看下脚本有没有做幂等处理。更稳妥的做法是先备份旧配置,再从头执行:
cp ~/.vimrc ~/.vimrc.bak 2>/dev/null cp -r ~/.vim ~/.vim.bak 2>/dev/null还有很重要的一点:不要用 root 用户执行安装脚本。用普通用户配合 sudo 就行。不然装出来的配置目录全是 root 所有,以后你自己写.vimrc都没法保存,会很痛苦。
3.2 安装脚本会执行哪些动作
运行./install.sh之后,不要以为它只是复制文件。Vimplus 的脚本会做一串事情:
- 检测当前系统类型,根据发行版选择不同的依赖安装命令。
- 安装 Vimplus 运行所需的依赖包。
- 备份系统中已有的 Vim 配置。
- 拉取插件管理器 vim-plug,它是后续所有插件安装的核心。
- 复制内置的
.vimrc和插件列表,覆盖到当前用户目录。 - 根据插件列表逐一下载插件。
- 对需要编译的插件执行编译,最常见的就是补全类插件,会花掉大部分时间。
整个流程跑完,我这边一般需要十几分钟到半小时,取决于网速和机器性能。如果你看到中间在编译 C/C++ 代码,不用慌,这是正常现象。真正需要注意的是脚本是否在某一个插件上反复重试,如果超过一段时间没有任何进度,大概率是网络问题,看下一步排查。
3.3 安装完成后的第一印象
脚本执行完后,不要急着到处点,先在终端里输入vim打开一个新文件。正常情况下,你会看到一个完全不一样的界面:底部有状态栏,能显示当前模式、文件名、行列号;侧边有行号;语法高亮已经生效;打开代码文件后,自动补全的引擎也已经就位。
这时候可以先执行两个命令验证插件体系是否完整:
:PlugStatus看到所有插件都是 OK 状态,说明安装成功。再执行:
:PlugUpdate这个命令可以手动升级插件。以后插件有更新,不需要去重新跑安装脚本,直接在 Vim 里升级就行。这也是 Vimplus 带来的最大便利之一:配置是别人封装好的,但插件维护仍然是标准化的。
4. 配置文件与插件体系解析
4.1 .vimrc 里的关键设置
Vimplus 安装后,你的~/.vimrc会被替换成一份很长的配置。很多新手会忍不住直接去改它,结果一更新就被覆盖,又得重新折腾。更推荐的做法是看明白里面有哪些核心设置,然后把自己的个性化配置放到单独的自定义文件里。
Vimplus 的.vimrc里通常已经写好了这些关键项:
set number set relativenumber set expandtab set tabstop=4 set shiftwidth=4 set hlsearch set incsearch set mouse=a set clipboard=unnamedplusnumber和relativenumber组合,既能显示当前绝对行号,又能显示每行相对当前行的距离,移动跳转非常方便。expandtab表示按 Tab 键输入空格,配合tabstop=4和shiftwidth=4,让缩进统一成 4 列,写 Python 再也不用担心 Tab 和空格混用。hlsearch和incsearch是搜索体验的关键,搜索时一边输入一边高亮,回车后才真正定位。mouse=a允许鼠标点击定位和选择,终端里操作省心很多。clipboard=unnamedplus让 Vim 的复制粘贴直接对接系统剪贴板。
这些配置如果不符合你的口味,不要在主文件里改。Vimplus 一般会在配置末尾加载一个自定义文件,通常叫~/.vimrc.custom。你只需要在这个文件里写覆盖项,比如:
set tabstop=2 set shiftwidth=2保存后再执行:source $MYVIMRC,就能立刻生效。
4.2 内置插件清单和各自作用
Vimplus 真正强大的是插件组合。以我安装的版本为例,下面几个插件几乎是必备的,它们分别解决不同维度的问题。
| 插件 | 作用 |
|---|---|
| 文件树插件 | 在侧边展示目录结构,快速切换文件和浏览项目组织 |
| 状态栏插件 | 在底部展示当前模式、文件名、分支、行列号等信息 |
| 模糊搜索插件 | 按文件名或内容快速定位文件,不用手动敲完整路径 |
| 代码大纲插件 | 按函数、类、变量生成结构化列表,方便跳转定位 |
| 自动补全插件 | 提供语法、语义补全,支持多语言 |
| 注释插件 | 一键注释/取消注释代码块 |
| Git 集成插件 | 在编辑界面直接看改动、diff 和提交信息 |
| 图标字体支持 | 让文件树和状态栏显示彩色图标,界面更清晰 |
这些插件组合起来,基本把 Vim 从“文本编辑器”抬高到了“写代码的 IDE”。但要注意,装得多不等于好用,插件之间如果配置冲突,启动速度也会受影响。Vimplus 的优势在于提前帮你做了一轮筛选,你不需要面对几千个插件不知道怎么选。
4.3 主题与状态栏定制
Vimplus 默认会配一个暗色主题,刚打开时很多人会不习惯。想换主题很简单,在~/.vimrc.custom里加一行:
colorscheme gruvbox也可以用:colorscheme加一个空格,然后按 Tab 键在 Vim 内置主题里循环选择,看到哪个顺眼就定哪个。主题的显示效果依赖终端配色,如果你用的是普通终端,建议先确认终端支持真彩色,否则颜色会发灰。
状态栏如果显示一堆乱码或者方块,问题通常出在字体上。状态栏插件会用到特殊字符,需要安装一套 Nerd Font 字体,并在终端设置里把字体切换成字体集。这个项目专门为终端图标做了字形优化,装好以后文件树里的文件夹图标、状态栏里的 Git 分支图标才会正常显示。
5. 上手使用:快捷键与自定义映射
5.1 高频操作速查
配置装完了,接下来就是习惯问题。Vim 最大的门槛是模式切换,这一点绕不开。我整理了一份自己常用的高频操作,新手可以先背这部分,其余功能遇到再查。
| 操作 | 快捷键 | 说明 |
|---|---|---|
| 进入插入模式 | i | 在光标前插入 |
| 进入插入模式 | a | 在光标后插入 |
| 退出插入模式 | Esc | 返回普通模式 |
| 进入可视模式 | v/V | 按字符选择 / 按行选择 |
| 光标移动 | hjkl | 左 下 上 右 |
| 跳到行首/行尾 | 0/$ | 分别对应行首和行尾 |
| 保存文件 | :w | 写入当前缓冲区 |
| 退出 Vim | :q | 退出;强制退出是:q! |
| 撤销 | u | 回到上一步 |
| 重做 | Ctrl+r | 恢复撤销的操作 |
| 搜索 | /关键词 | 向下搜索,回车后定位 |
| 取消搜索高亮 | :noh | 清除上次搜索留下的高亮 |
配合 Vimplus,文件树和代码大纲也有对应命令:
:NERDTreeToggle :TagbarToggle记不住快捷键就先用完整命令,用多了自然会去找更快的映射。
5.2 自定义键位和函数
Vimplus 默认的键位已经足够,但它也留下了自定义入口。我自己的习惯是把空格键设为 leader 键,然后围绕它定义高频操作。在~/.vimrc.custom里加:
let mapleader = " " nnoremap <Leader>w :w<CR> nnoremap <Leader>q :q<CR> nnoremap <Leader>n :NERDTreeToggle<CR> nnoremap <Leader>t :TagbarToggle<CR> nnoremap <Leader>h :noh<CR>这样在普通模式下连续按空格 + w就能保存,空格 + n就能开关文件树,比每次都输入冒号命令快很多。注意不要覆盖 Vimplus 已经用掉的键位,一般安装说明里会列出来。
除了键位,还可以自定义函数。比如我想一键切换绝对行号和相对行号,就写过这么一段:
function! ToggleNumber() if &relativenumber set norelativenumber else set relativenumber endif endfunction nnoremap <Leader>nu :call ToggleNumber()<CR>这种函数的逻辑不复杂,但它展示了一个思路:Vimplus 给你的只是地基,真正让编辑器顺手的是你自己写的这些小工具。
6. 典型故障与排查实录
6.1 安装中断或插件下载失败
这是被问得最多的一类问题。现象通常很统一:安装脚本跑到某个插件位置就卡住,或者进度条长时间不动,最后直接报错退出。大部分原因集中在网络下载超时,以及某些插件对应的托管源不稳定。
处理思路按顺序来:
- 确认网络能访问插件来源,试试手动执行 curl 能不能正常下载。
- 如果下载困难,可以把 clone 方式改成浅克隆,减少拉取量。
- 实在不行,换一个网络环境重新运行安装脚本,很多配置问题在换网络后自然消失。
- 检查是否缺少编译依赖,报错信息里出现
python3-dev或cmake字样时,就把第 2 节里的依赖包完整装一遍。 - 不要反复在一个坏掉的目录上重试,删掉
~/vimplus重新 clone,往往比原地补救更快。
还有一个小经验:安装日志里报错位置如果总是同一个插件,可以先把该插件从插件列表里注释掉,等主体环境装好后再单独安装它。这样不会因为一个插件卡住整个流程。
6.2 启动卡顿与加载优化
Vimplus 装好后功能确实多,但如果你感觉到启动明显变慢,比如每次打开文件都要等一两秒,那就需要做减法。先用 Vim 自带的分析工具看看时间花在哪:
vim --startuptime startup.log打开文件后退出,startup.log里会有每一行操作的耗时。你会发现主要耗时集中在插件加载阶段。几个优化方向:
- 在插件配置里,把不常用的插件改成按需加载。比如文件树其实不用每次启动都加载,只有打开文件树命令时才加载。
- 把用不到的插件从插件列表里注释掉,再执行
:PlugClean清理,这是最直接的提速方式。 - 在
.vimrc.custom里关闭用不上的一些增强选项,比如不需要的代码检查器可以全局关闭。
启动速度这件事,属于“功能越少越快”。Vim 本体很快,快不起来基本都是插件背了锅。定期审视自己到底用了哪些插件,比盲目追求全家桶体验好得多。
6.3 剪贴板不互通问题
在 Ubuntu 上最常遇到的交互问题就是复制粘贴。你在系统里复制了一段文本,在 Vim 里用p粘贴,结果出来的还是 Vim 自己上次复制的内容,和系统剪贴板完全没关系。
先检查这一步:
vim --version | grep clipboard如果显示-clipboard,回到第 2.3 节,安装vim-gtk3,这个版本编译了剪贴板支持。安装后重新打开终端,再执行vim --version,确认变成+clipboard。
然后在.vimrc.custom里设一行:
set clipboard=unnamedplus设置后,Vim 的普通复制、剪切、粘贴都会自动走系统剪贴板。也就是说,Vim 里摁yy复制的内容,可以直接在浏览器或其他编辑器里Ctrl+V粘贴;反过来,系统里复制的内容也能在 Vim 里p粘贴。
如果你在终端里用鼠标选中文本,Vim 里的mouse=a可能会拦截鼠标事件,导致系统剪贴板选择失效。这时可以按住 Shift 再拖动鼠标,让终端直接接管选择,绕开 Vim 的鼠标处理。
7. 最后再分享一点我的使用习惯
折腾过不少编辑器之后,我最终还是回到 Vim 工作流里。不是因为它先进,而是因为 Vim 的编辑方式一旦真正熟练,速度优势会越用越明显。Vimplus 这类增强方案帮我解决了最花时间的初始配置阶段,但真正的熟练还是靠日常用,没有捷径。
我个人的做法是:第一周先不改任何键位,强迫自己用默认配置写代码;遇到不会的操作就去查,查完记下来;第二周开始一点点往~/.vimrc.custom里加自己常用的映射。等配置稳定下来,每换一台机器,只需要装好 Vimplus,再把自定义文件拷贝过去就够了,环境恢复成本几乎为零。
开头的惊喜感会慢慢消退,剩下的才是真实体会:Vim 学习曲线陡,但它是那种“前期苦、后期快”的工具。如果你正好也在 Ubuntu 上被默认 Vim 折磨过,不妨按这篇文章的流程试一遍,至少能让编辑器先配得上你的技术。