⚡ 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
修改者 [email protected]
编译者 [email protected]
巨型版本 无图形界面。 可使用(+)与不可使用(-)的功能:
+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 都会包含上述提到的基本功能和插件依赖功能,如果没有可以先尝试简单修复

打开终端依次执行以下命令:

shell 复制代码
sudo apt update
sudo apt install vim-nox

这两行命令可以解决大多数功能缺失的问题。

但如果命令执行完成,再次通过 vim --version 确认 Vim 的功能还是没有,那就需要自行编译 Vim 来添加功能了

📦 Vim 编译

一般只有在碰到以下情形时,需要自行编译 Vim:

  • Linux 包管理工具缺失或故障导致无法更新或安装 Vim (Windows的WSL1系统)
  • 需要自定义添加或裁剪 Vim 功能
  • 需要 Vim 在特殊的运行环境上工作(交叉编译)

Vim 的编译相对比较复杂,首先要安装依赖工具和库:

shell 复制代码
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 下载源码:

shell 复制代码
git clone https://github.com/vim/im.git
cd vim

进入 Vim 目录以后创建一个 bash 脚本 configure_vim.sh 用于配置构建参数:

bash 复制代码
#!/bin/bash

PREFIX="/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 的参数也可以根据自己实际需要添加或删减。如果时交叉编译的话这里要添加交叉编译器

保存退出后给脚本赋予可执行权限,然后执行脚本:

shell 复制代码
chmod +x configure_vim.sh
./configure_vim.sh

完成配置构建参数以后执行 make 命令编译并安装 Vim :

shell 复制代码
make -j4
sudo make install

编译完成后的 Vim 在 /usr/local/bin 目录下,而系统默认调用的 Vim 一般位于 /usr/bin 目录下,所以只要覆盖掉 /usr/bin 目录下的软连接即可:

shell 复制代码
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 的主配置文件,在启动时自动加载。用于设置编辑器行为,比如缩进规则、颜色方案、快捷键等。如果系统默认没有可以手动创建。

这里就先简单配置一下

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

bash 复制代码
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
     https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

💡 有时候网络波动下载不了可以直接登录网址复制粘贴全部内容到 ~/.vim/autoload/plug.vim

✒️ 安装 Vim 插件

编辑 ~/.vimrc 添加插件配置,这里添加了三款经典的作为示例:

vim 复制代码
call plug#begin('~/.vim/plugged')

Plug 'preservim/nerdtree'               
Plug 'vim-airline/vim-airline'          
Plug 'luochen1990/rainbow'              

call plug#end()

保存退出后重新打开 Vim ,在 Vim 中执行以下命令完成插件安装

vim 复制代码
:PlugInstall

⚠️ 插件安装需要有 git 支持,Linux 系统如何安装和配置 git 详见Linux 系统安装与配置 Git


⚠️ 5. 注意事项

  • 🧩 插件太多可能影响启动速度,建议按需添加。
  • 💼 如果是编译了 Vim 并替换掉了旧版本的 Vim ,插件管理器可能识别不到旧的目录,需要重新执行 :PlugInstall 安装插件

📚 参考资料

相关推荐
444A4E33 分钟前
深入解析 Linux 进程状态:从 task_struct 双链表到 R/S/D/Z 状态的内核奥秘
linux·操作系统
黑风风1 小时前
Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)
linux·ubuntu·postgresql
行星0082 小时前
Ubuntu 中安装 PostgreSQL 及常规操作指南
linux·ubuntu·postgresql
奋斗者1号2 小时前
提升WSL中Ubuntu编译速度的完整指南
linux·运维·ubuntu
玄德公笔记2 小时前
ubuntu 22.04安装k8s高可用集群
linux·ubuntu·kubernetes·k8s·containerd·高可用集群·ubuntu 22.04
ZHOU_WUYI2 小时前
在 Ubuntu 上安装 NVM (Node Version Manager) 的步骤
linux·运维·ubuntu
简诚2 小时前
ubuntu 安装上传的 ffmpeg_7.1.1.orig.tar.xz并使用
linux·ubuntu·ffmpeg
阿幸软件杂货间4 小时前
ChemDraw 2023|Win英文|化学结构编辑器|安装教程
编辑器·chemdraw
?!7144 小时前
网络编程之网络编程预备知识
linux·网络·c++
向宇it4 小时前
【unity游戏开发——编辑器扩展】EditorApplication公共类处理编辑器生命周期事件、播放模式控制以及各种编辑器状态查询
开发语言·ui·unity·编辑器·游戏引擎