⚡ 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61161.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HackMyVM-Find

信息搜集 主机发现 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:39:60:4c, IPv4: 192.168.43.126 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.43.1 c6:45:66:05:91:88 …

Windows商店中的免费扫雷游戏应用

《扫雷》是一款经典的单人益智小游戏&#xff0c;1992年微软发布的Windows 3.1中加入该游戏&#xff0c;从此风靡全世界。游戏目标是通过逻辑推理&#xff0c;在最短的时间内根据点击格子出现的数字找出所有非雷格子&#xff0c;同时避免踩雷。 此Windows应用实现了经典扫雷的…

【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解

【HarmonyOS 5】Laya游戏如何鸿蒙构建发布详解 一、前言 LayaAir引擎是国内最强大的全平台引擎之一&#xff0c;当年H5小游戏火的时候&#xff0c;腾讯入股了腊鸭。我还在游戏公司的时候&#xff0c;17年曾经开发使用腊鸭的H5小游戏&#xff0c;很怀念当年和腊鸭同事一起解决…

Unity3D仿星露谷物语开发55之保存地面属性到文件

1、目标 将游戏保存到文件&#xff0c;并从文件中加载游戏。 Player在游戏中种植的Crop&#xff0c;我们希望保存到文件中&#xff0c;当游戏重新加载时Crop的GridProperty数据仍然存在。这次主要实现保存地面属性&#xff08;GridProperties&#xff09;信息。 我们要做的是…

CSS基础巩固-基础-选择

目录 CSS是如何工作的&#xff1f; 当浏览器遇到无法解析的CSS代码时 如何导入CSS样式&#xff1f; 改变元素的默认样式 选择 前缀符号&#xff08;后面会具体介绍&#xff09; 优先级 同时应用样式到多个类上 属性选择器 伪类 伪元素 关系选择器 后代选择器 子代…

MySQL学习笔记Day8(多表查询中的子查询)

子查询&#xff08;嵌套查询&#xff09; 定义很简单&#xff0c;在SQL语句中使用了select嵌套语句就称为子查询。 1.标量子查询 标量子查询的查询结果为一个单一值。 举个例子&#xff0c;查询销售部所有员工的信息。 我们可以把这个要求分成两步&#xff0c;第一步先查询…

CRM 系统核心优势解析:数字化客户管理如何驱动企业增长

企业在客户管理中常面临数据分散、互动低效、决策滞后等挑战&#xff0c;传统管理方式难以满足数字化时代的客户运营需求。CRM&#xff08;客户关系管理&#xff09;系统作为整合客户数据、优化互动流程的核心工具&#xff0c;通过数字化手段重构企业与客户的连接模式。本文系统…

JavaScript- 3.2 JavaScript实现不同显示器尺寸的响应式主题和页面

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 HTML和CSS系列文章 已经收录在前端专栏&#xff0c;有需要的宝宝们可以点击前端专栏查看&#xff…

力扣刷题Day 66:分割回文串(131)

1.题目描述 2.思路 用了回溯的方法。首先写一个验证字符串是否是回文串的函数&#xff0c;然后遍历s&#xff0c;依次判断从当前字符到下一字符是否是回文串&#xff0c;是的话继续往后走&#xff0c;不是的话往回退。 3.代码&#xff08;Python3&#xff09; class Solutio…

嵌入式软件--stm32 DAY 8.5 基础复习总结

1.时钟树 在数据手册里面&#xff0c;有一张密密麻麻的图&#xff0c;正是时钟系统里的时钟树。 对于时钟&#xff0c;我们注意有两点。一个是系统时钟SYSCLK,一个是依赖外部晶振生成的RTC. RTC以外部低速晶振作为时钟源或者外部高速晶振128分频后作为时钟源&#xff0c;又或者…

python h5py 读取mat文件的<HDF5 object reference> 问题

我用python加载matlab的mat文件 mat文件&#xff1a; 加载方式&#xff1a; mat_file h5py.File(base_dir str(N) _nodes_dataset_snr- str(snr) _M_ str(M) .mat, r) Signals mat_file["Signals"][()] Tp mat_file["Tp"][()] Tp_list mat_fil…

Java 并发编程通关秘籍:多线程基础 + 锁机制 + 工具类 + 性能优化

第一章&#xff1a;多线程基础详解 多线程编程是 Java 开发中的核心技能之一&#xff0c;它允许程序在同一时间执行多个任务&#xff0c;从而充分利用多核 CPU 的计算资源&#xff0c;提高程序的响应速度和吞吐量。本章将从基础概念入手&#xff0c;详细讲解 Java 多线程的核心…

《Google I/O 2025:AI浪潮下的科技革新风暴》

Google I/O 2025 盛大开幕 在科技飞速发展的时代&#xff0c;Google I/O 开发者大会一直是全球科技爱好者和开发者瞩目的焦点&#xff0c;堪称科技领域的年度盛宴。2025 年 5 月 20 日至 21 日&#xff0c;Google I/O 2025 在美国加州山景城的 Shoreline Amphitheatre 盛大举行…

linux 1.0.3

挂载 这个虚拟机啥时候都能挂起 会有一个这个东东 选择连接虚拟机&#xff0c;然后就连到linux了 这有两个键&#xff0c;一个是和主机连接一个是和虚拟机连接 先把U盘拔掉 原本是没有这个盘的&#xff0c;但是插上去之后&#xff0c;电脑创建了一个虚拟的盘 也就是图中的F…

Linux 驱动之设备树

Linux 驱动之设备树 参考视频地址 【北京迅为】嵌入式学习之Linux驱动&#xff08;第七期_设备树_全新升级&#xff09;_基于RK3568_哔哩哔哩_bilibili 本章总领 1.设备树基本知识 什么是设备树&#xff1f; ​ Linux之父Linus Torvalds在2011年3月17日的ARM Linux邮件列表…

79. 单词搜索-极致优化,可行性剪枝和顺序剪枝

给你一个目标字符串&#xff0c;和一个二维字符数组&#xff0c;判断在数组中是否能找到目标字符串。 例如&#xff0c;board [["A","B","C","E"],["S","F","C","S"],["A","…

论文解读 - 统一的多模态理解和生成模型综述(下)

五、统一模型的数据集 大规模、高质量且多样化的训练数据是构建强大的统一多模态理解和生成模型的基础。这些模型通常需要在大量图像-文本对上进行预训练&#xff0c;以学习跨模态的相关性和表示。需要注意的是&#xff0c;在大规模多模态数据上进行训练之前&#xff0c;这些模…

c++学习之---模版

目录 一、函数模板&#xff1a; 1、基本定义格式&#xff1a; 2、模版函数的优先匹配原则&#xff1a; 二、类模板&#xff1a; 1、基本定义格式&#xff1a; 2、类模版的优先匹配原则&#xff08;有坑哦&#xff09;&#xff1a; 3、缺省值的设置&#xff1a; 4、ty…

STM32软件spi和硬件spi

核心观点 本文主要介绍了SPI通信的两种实现方式&#xff1a;软件SPI和硬件SPI。详细阐述了SPI通信协议的基本概念、硬件电路连接方式、移位示意图、时序基本单元以及四种工作模式。同时&#xff0c;对W25Q64模块进行了详细介绍&#xff0c;包括其硬件电路、框图以及操作注意事…

浏览器之禁止打开控制台【F12】

前言 在有时我们的日常开发工作中&#xff0c;有些项目要求我们增加禁用控制台的要求&#xff0c;这种虽然很鸡肋&#xff0c;但是它确实存在&#xff0c;并且会让哈哈心里觉得很有成就感。 所以今天他来了。 文章目录 前言无限debugger实现思路&#xff1a;效果如下&#xff1…