⚡ Linux 系统安装与配置 Vim 编辑器(包括 Vim 插件管理器)
⚡ Linux 系统安装与配置 Vim 编辑器(包括 Vim 插件管理器)
📌 1. Vim 简介
Vim(Vi IMproved)是一款高度可定制的文本编辑器,基于早期的 vi 编辑器扩展而来。
它支持语法高亮、插件扩展、多种编程语言,是程序员常用的轻量级开发工具。
虽然配置和操作相对复杂,学习周期相对较长,但是熟练使用的效率可以碾压大多数非AI编辑器。
⚙️ 2. Vim 功能检查
🖥️ 确认 Vim 的版本和功能
一般 Linux 系统都会预装 Vim ,按下 Alt + Ctrl + T
打开终端输入 vim --version
确认版本和功能:
VIM - Vi IMproved 9.0 (2022 Jun 28, 编译于 Feb 16 2025 05:12:41)
包含补丁:1-1378, 1499, 1532, 1848, 1858, 1873, 1969, 2142
修改者 team+vim@tracker.debian.org
编译者 team+vim@tracker.debian.org
巨型版本 无图形界面。 可使用(+)与不可使用(-)的功能:
+acl +file_in_path +mouse_urxvt -tag_any_white
+arabic +find_in_path +mouse_xterm -tcl
+autocmd +float +multi_byte +termguicolors
+autochdir +folding +multi_lang +terminal
-autoservername -footer -mzscheme +terminfo
-balloon_eval +fork() +netbeans_intg +termresponse
+balloon_eval_term -gettext +num64 +textobjects
-browse -hangul_input +packages +textprop
++builtin_terms +iconv +path_extra +timers
+byte_offset +insert_expand -perl +title
+channel +ipv6 +persistent_undo -toolbar
+cindent +job +popupwin +user_commands
-clientserver +jumplist +postscript +vartabs
-clipboard +keymap +printer +vertsplit
+cmdline_compl +lambda +profile +vim9script
+cmdline_hist +langmap -python +viminfo
+cmdline_info +libcall -python3 +virtualedit
+comments +linebreak +quickfix +visual
+conceal +lispindent +reltime +visualextra
+cryptv +listcmds +rightleft +vreplace
+cscope +localmap -ruby +wildignore
+cursorbind -lua +scrollbind +wildmenu
+cursorshape +menu +signs +windows
+dialog_con +mksession +smartindent +writebackup
+diff +modify_fname -sodium -X11
+digraphs +mouse -sound +xattr
-dnd -mouseshape +spell -xfontset
-ebcdic +mouse_dec +startuptime -xim
+emacs_tags -mouse_gpm +statusline -xpm
+eval -mouse_jsbterm -sun_workshop -xsmp
+ex_extra +mouse_netterm +syntax -xterm_clipboard
+extra_search +mouse_sgr +tag_binary -xterm_save
-farsi -mouse_sysmouse -tag_old_static
这些信息里面需要注意的基本功能有:
+syntax: 支持语法高亮的功能。
+persistent_undo: 支持持久撤销的功能。
+virtualedit: 支持虚拟编辑的功能,Vim 的块可视模式需要此功能的协助
+tag_binary: 支持 ctags
标签跳转的功能
+cscope: 支持 cscope
代码导航的功能
+python3: 支持 python3
的功能
除此之外还需要注意的插件依赖功能有:
+signs: 支持标记列功能,vim-airline
插件依赖此功能。
+statusline: 支持状态栏的功能,vim-airline
插件依赖此功能。
+job: 支持异步任务的功能,vim-airline
插件依赖此功能。
+timers: 支持异步任务的功能,vim-airline
插件依赖此功能。
+autocmd: 支持自动命令的功能,NERDTree
插件依赖此功能。
+windows: 支持多窗口操作的功能,NERDTree
插件依赖此功能。
💡 这里提一下
+clipboard
和+X11
,这两个是支持 Vim 的原生剪切板操作的功能,同时开启可以通过"+y
和"+p
来实现和系统剪切板的交互,Vim 中默认不带,需要编译添加
如果不是系统资源非常紧张的情况下,一般都会无视这两个功能,通过配置 xclip 快捷键映射来实现 Vim 和系统剪切板的交互功能。
🛠️ 功能缺失简单修复
一般来说正常的 Vim 都会包含上述提到的基本功能和插件依赖功能,如果没有可以先尝试简单修复
打开终端依次执行以下命令:
sudo apt update
sudo apt install vim-nox
这两行命令可以解决大多数功能缺失的问题。
但如果命令执行完成,再次通过 vim --version
确认 Vim 的功能还是没有,那就需要自行编译 Vim 来添加功能了
📦 Vim 编译
一般只有在碰到以下情形时,需要自行编译 Vim:
- Linux 包管理工具缺失或故障导致无法更新或安装 Vim (Windows的WSL1系统)
- 需要自定义添加或裁剪 Vim 功能
- 需要 Vim 在特殊的运行环境上工作(交叉编译)
Vim 的编译相对比较复杂,首先要安装依赖工具和库:
sudo apt update
sudo apt install -y git build-essential ncurses-dev python3-dev lua5.3 liblua5.3-dev \
libperl-dev libncurses5-dev libgtk2.0-dev libatk1.0-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev
💡 这里的
sudo apt install
可以根据自己实际需要用到的功能,删减不需要使用的软件包(比如不用 lua 就可以把 lua5.3 和 liblua5.3-dev 去掉)
然后需要用 git 下载源码:
git clone https://github.com/vim/im.git
cd vim
进入 Vim 目录以后创建一个 bash 脚本 configure_vim.sh 用于配置构建参数:
#!/bin/bashPREFIX="/usr/local"PYTHON3=$(which python3)./configure \--prefix=$PREFIX \--with-features=huge \--enable-multibyte \--enable-python3interp=yes \--with-python3-command=$PYTHON3 \--enable-perlinterp=yes \--enable-luainterp=yes \--enable-rubyinterp=yes \--enable-cscope \--enable-terminal \--without-x \--disable-gui \--disable-nls \--with-tlib=ncurses
说明:
--prefix=$PREFIX
: 指定 Vim 的安装路径。
--with-features=huge
: 开启所有可用特性,包括语法高亮、折叠、插件等。
--enable-multibyte
: 支持多字节字符集(如中文、日文、韩文)。
--enable-python3interp=yes
: 启用 Python3 插件接口支持。
--with-python3-command=$PYTHON3
: 指定 Python3 可执行文件路径。
--enable-perlinterp=yes
: 启用 Perl 插件接口。
--enable-luainterp=yes
: 启用 Lua 插件接口。
--enable-rubyinterp=yes
: 启用 Ruby 插件接口。
--enable-cscope
: 启用 Cscope 支持。
--enable-terminal
: 启用内置终端功能(:terminal 命令)。
--without-x
: 不使用 X11 图形库,防止误编译出 GUI 版本。
--disable-gui
: 显式关闭 gVim 图形界面,仅编译纯终端 Vim。
--disable-nls
: 禁用 Native Language Support,不使用本地化语言翻译,节省体积。
--with-tlib=ncurses
: 指定终端库为 ncurses,它控制终端行为(颜色、键盘输入等)。
💡 这里 .configure 的参数也可以根据自己实际需要添加或删减。如果时交叉编译的话这里要添加交叉编译器
保存退出后给脚本赋予可执行权限,然后执行脚本:
chmod +x configure_vim.sh
./configure_vim.sh
完成配置构建参数以后执行 make 命令编译并安装 Vim :
make -j4
sudo make install
编译完成后的 Vim 在 /usr/local/bin
目录下,而系统默认调用的 Vim 一般位于 /usr/bin
目录下,所以只要覆盖掉 /usr/bin
目录下的软连接即可:
sudo mv /usr/bin/vim /usr/bin/vim.bac
sudo ln -s /usr/local/bin/vim /usr/bin/vim
💡 这里如果是交叉编译的话直接拷贝到目标运行环境的相应位置即可
最后执行再次确认 Vim 的版本和功能:
vim --version
🧾 3. Vim 配置文件
📕 .vimrc 配置文件
.vimrc 是 Vim 的主配置文件,在启动时自动加载。用于设置编辑器行为,比如缩进规则、颜色方案、快捷键等。如果系统默认没有可以手动创建。
这里就先简单配置一下
set encoding=utf-8
syntax on
set number
set relativenumber
vnoremap <C-c> y:call system('xclip -selection clipboard', @")<CR>
nnoremap <C-c> :call setline(line('.'), getline('.') . system('xclip -o -selection clipboard'))<CR><CR>
说明:
- set encoding=utf-8:设置 Vim 使用 UTF-8 编码,支持多语言文本文件的读取与编辑。
- syntax on:启用语法高亮,根据不同文件类型进行高亮显示。
- set number:在编辑器左侧显示实际的行号,便于定位代码位置。
- set relativenumber:显示相对行号。当前行显示为 0,其他行为相对于当前行的偏移。这有助于使用
j
,k
,d
,y
等命令快速操作多行。 - vnoremap y:call system(‘xclip -selection clipboard’, @"): xclip 复制的快捷键映射,在 Vim 可视模式下按下
Ctrl + C
即可将所选内容复制到系统剪切板 - nnoremap :call setline(line(‘.’), getline(‘.’) . system(‘xclip -o -selection clipboard’)): xclip 粘贴的快捷键映射,在 Vim 普通模式下按下
Ctrl + V
即可在光标后面粘贴系统剪切板中的内容
💡 这里的配置已经能够满足基本的编辑器需求了,如果希望有更多功能的进阶配置,详见 Vim 配置文件 vimrc 详解
📘 .viminfo 配置文件
.viminfo 是 Vim 自动生成的状态记录文件。用于保存命令历史、寄存器内容、光标位置等信息。可帮助 Vim 在下次启动时恢复上一次的使用状态。一般不用去管。
📗 .vim目录
.vim 目录是 Vim 的用户配置目录。用于存放插件、主题、语法规则等扩展文件。相当于 Vim 的“工作文件夹”,结构灵活且常与插件管理器配合使用。一般都是插件自动管理。
💡 有时候网络波动插件无法安装,也可以直接把已经装了插件的.vim目录中相应内容复制到没装插件的.vim目录中,以此来实现“手动 ”安装
🧶 4. Vim 插件配置
🔧 安装 vim-plug 插件管理器
执行以下命令安装vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
💡 有时候网络波动下载不了可以直接登录网址复制粘贴全部内容到
~/.vim/autoload/plug.vim
。
✒️ 安装 Vim 插件
编辑 ~/.vimrc
添加插件配置,这里添加了三款经典的作为示例:
call plug#begin('~/.vim/plugged')Plug 'preservim/nerdtree'
Plug 'vim-airline/vim-airline'
Plug 'luochen1990/rainbow' call plug#end()
保存退出后重新打开 Vim ,在 Vim 中执行以下命令完成插件安装
:PlugInstall
⚠️ 插件安装需要有 git 支持,Linux 系统如何安装和配置 git 详见Linux 系统安装与配置 Git
⚠️ 5. 注意事项
- 🧩 插件太多可能影响启动速度,建议按需添加。
- 💼 如果是编译了 Vim 并替换掉了旧版本的 Vim ,插件管理器可能识别不到旧的目录,需要重新执行
:PlugInstall
安装插件
📚 参考资料:
- vim 官网
- vim-plug