最新资讯

  • 基于 Ubuntu 系统的 Vim 全面配置(持续更新)

基于 Ubuntu 系统的 Vim 全面配置(持续更新)

2025-05-02 02:00:28 0 阅读

文章目录

  • 一、重新安装 Vim
  • 二、Vim 基础配置
    • 1. Vim 的配置文件
    • 2. Vim 常用功能
    • 3.自动补全符号
  • 三、插件管理器——vim-plug
    • 1. 下载 vim-plug
    • 2. vim-plug 配置规格
    • 3. vim-plug 命令
  • 四、常用插件
    • 1. NERDTree(目录树)
      • 1-1. 安装并配置 NERDTree
      • 1-2. NERDTree 常用快捷键
    • 2. Tagbar(代码结构)
      • 2-1. 安装 ctags
      • 2-2. 创建标签索引
      • 2-3. 安装并配置 Tagbar
    • 3. vim-airline(状态栏美化)
      • 3-1. 安装 vim-airline
      • 3-2. 扩展主题
      • 3-3. 更换主题
    • 4. NERDCommenter(代码注释器)
      • 4-1. 安装 NERDCommenter
      • 4-2. 常用快捷键
      • 4-3. 自定义 ``
    • 5. vim-illuminate(单词突出/高亮)
      • 5-1. 安装 vim-illuminate
      • 5-2. 自定义显示方式
    • 6. IndentLine(缩进提示)
      • 6-1. 安装 IndentLine
      • 6-2. 配置缩进符


提起文本编辑器,绝大多数程序员一定会想到编辑器之神 Vim。据 Stack Overflow 的开发者调查:2015 年程序员中最流行的编辑器是 Notepad++,Vim 的使用比例占 15.2%。到了 2019 年,最流行的开发环境变成 VS Code,而 Vim 的使用比例提升到了 25.4%。

当然,很多初学者对 Vim 不说看不上,简直是十分唾弃。但与之相反的是很多老程序员,十分喜欢 Vim,更有趣的是,不管是喜欢 Vim 的,还是讨厌 Vim 的,他们的理由都是一样的——效率。很多程序员觉得使用 Vim 编辑文件非常高效,也有人对 Vim 各种繁琐的命令和不能使用鼠标的痛苦,觉得使用 Vim 的开发效率极低。

在此笔者先聊聊我个人的看法:

虽然笔者现在大多数开发是在 VS Code 上进行,但是当年初学 Linux 系统编程时、以及大部分的工作时间都是使用 Vim 在写代码。而且我也觉得,如果以后的工作与 Linux 系统相关(尤其是嵌入式 Linux),我建议一定要学会使用 Vim。有些特殊情况的设备,没有任何图形界面,只有命令行,这种命令行模式下,就算不想用 Vim(也可能只有 vi1)也没办法,因为根本没有选择的余地(顶多给你个 nano)。

可能这里又有人会发问了,有好多工具可以实现 SSH 连接,例如 VS Code 的 remote SSH。

我只能说太年轻,很多存在这种情况的机器都是断网的,根本不允许远程连接。就算有网络,也不一定安装了 SSH 服务。只能选择在本地工作。另外,只要涉及到互联网,就一定涉及暴露面,监听端口只对特定 IP 开放,也没有 root 权限。有些设备还用堡垒机中转,或是用其他身份验证方式登录,所以 SSH 也不是万能的。

回到正题,本篇博客的目的是围绕 Vim 扩展各类功能和插件,打造一个专属的开发环境,让更多人接收 Vim。

一、重新安装 Vim

刚刚安装好的 Ubuntu 系统自带有 vi,但是很多人都会发现在编辑模式下方向键和退格键都不能正常使用,其实是主要是因为 Ubuntu 自带的 vi 的版本太低了,并不支持方向键控制。在老版本的 vi 控制光标需要在命令行模式用 h(左)、j(下)、k(上)、l(右)控制,所以最好先把系统自带的 vi 编辑器卸载干净后,再安装最新的 Vim。

想要彻底卸载 vi,可以输入下面的命令:

sudo apt remove vim vim-runtime vim-tiny vim-common vim-scripts vim-doc -y

等卸载完毕后,在输入下面的安装命令:

sudo apt-get install vim vim-scripts vim-doc -y
#安装vim图形化界面,也可以只用命令行
sudo apt-get install vim-gtk -y

二、Vim 基础配置

1. Vim 的配置文件

Vim 的配置文件分为两种,一种是全局配置文件(/etc/vim/vimrc),一种是用户配置文件(/home//.vimrc)。全局配置文件会对系统内所有用户生效,包括 root 用户。而用户配置文件只对单个用户有效,例如用户是 grayson,那么当前的用户配置就是 /home/grayson/.vimrc。如果当前登录系统就是 grayson,可以直接用 ~/.vimrc 来代替 /home/grayson/.vimrc

这里只展示单用户的配置(主要怕小白选手玩崩了),输入如下命令,创建 .vimrc 文件并进入编辑。

vim ~/.vimrc

2. Vim 常用功能

以下配置是我个人常用的配置,现在的可以直接复制粘贴到 ~/.vimrc 中,保存退出直接生效。

syntax on               " Set syntax highlighting
set number              " Set the line number
set tabstop=4           " Set an indent to account for 4 spaces
set autoindent          " Set up automatic indentation
set mouse=a             " Set mouse is always available, set mouse= (empty) cancel
set cc=80               " Column 80 highlighted, set cc=0 cancellation
set cursorline          " Settings to highlight the current row
set cindent             " Format C language
set st=4                " Set the width of the soft tab to 4 spaces
set shiftwidth=4        " The width automatically indented when setting a new line is 4 spaces
set sts=4               " Set the number of spaces inserted when the Tab key is pressed in insertion mode to 4
set ruler               " Show the status of the last line
set showmode            " The status of this row is displayed in the lower left corner.
set bg=dark             " Show different background tones
set hlsearch            " Enable Search Highlight
set laststatus=2        " Always display the status bar

下面是以上每条配置的详细解释:

  1. syntax on: 打开语法高亮,使 Vim 在编辑文件时能够根据文件类型高亮显示不同的语法元素,便于阅读和理解。

  2. set number: 显示行号,将每一行的行号显示在编辑区的左侧,方便定位代码行。

  3. set tabstop=4: 设置 Tab 键的宽度为 4 个空格。这意味着当文档中出现制表符时,它将被视作 4 个空格宽。

  4. set autoindent: 开启自动缩进功能,让新的行与前一行的缩进保持一致。

  5. set mouse=a: 设置鼠标模式,使鼠标始终可用。这使得用户可以在正常、可视和插入模式下通过鼠标进行选择、滚动等操作。如果设置为set mouse=则取消此功能。

  6. set cc=80: 在第 80 列高亮显示,用于指示代码的长度是否超过了规定的长度限制。这有助于遵循代码可读性的最佳实践。设置set cc=0可以取消此高亮。

  7. set cursorline: 高亮显示当前光标所在的行,便于跟踪当前位置。

  8. set cindent: 针对 C 语言代码启用自动缩进功能。这会影响大括号、关键字后的自动缩进行为。

  9. set st=4: 设置软制表符(softtabstop)宽度为4个空格。这意味着当按下 Tab 键时,即使实际写入的是制表符,其效果也会表现为 4 个空格。

  10. set shiftwidth=4: 设置自动缩进时的宽度为 4 个空格。使用命令 gg=G 时,自动缩进为 4 个空格。

  11. set sts=4: 设置在插入模式下按下 Tab 键时插入的空格数为 4 个。这通常与tabstopshiftwidth设置保持一致,以维持代码的一致性。

  12. set ruler: 显示光标当前位置的行号和列号。

  13. set showmode: 显示当前Vim的工作模式(如 Normal、Insert 等)在屏幕的左下角,帮助用户了解当前的操作环境。

  14. set bg=dark: 设置编辑器的背景色为深色,以适应暗色主题。

  15. set hlsearch: 启用搜索高亮功能,使得进行搜索时匹配的文本被高亮显示。

  16. set laststatus=2: 总是显示状态栏。确保状态栏在任何时候都可见,提供有关文件名、模式和编码等信息。

具体效果如下:

还有一个设置是用于显示每个 Tab 提示符,如下:

set list lcs=tab:|   		" Set to use a vertical bar "|" when displaying Tab characters

set list 是启用显示不可见字符的功能。这样设置后,Vim 会将文本中的特殊字符(如空格、Tab、换行符等)以可见的形式显示出来,帮助用户更好地理解文本的结构和格式。

lcs=tab:| 则是设置在显示 Tab 字符时使用竖线 | 代替默认的 ^I。这样做的好处是,查看文本中的 Tab 字符时,它们会以更直观的方式呈现出来,使得更容易辨别文本中的 Tab 和空格。不过要注意后面要打上三个空格,也就是说,原先设置了每次按下的 Tab 键,会变成一个 | 和三个空格。

实际效果如下:

当然,也可以设置为其他的符号,例如设置成美元符,效果如下:

不过,我通常是使用一个插件(后面介绍)来显示这个 Tab 符,所以没有设置这个功能。

3.自动补全符号

在 VS Code 中,对括号、引号等一左一右的对称符号,都是有补全功能的,例如输入左花括号时,会自动补上右花括号。这个功能在 Vim 中是不存在的,都是可以通过改写 Vim 映射的办法实现,只要在 ~/.vimrc 中写入如下映射代码即可:

" Set Automatically Complete Parentheses
inoremap ' ''i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap < <><ESC>i
inoremap { {<CR>}<ESC>O

上述代码中,意思是,凡输入单引号(')、双引号(")、圆 括号(()、方括号([)、尖括号(<)以及花括号({)后,自动补全另一半。在补全另一半后,把光标移到两个符号里面,其中,花括号除了将光标移入括号内,还另起一行并缩进。

[!NOTE]

inoremap:这是一个 Vim 命令,用于创建插入模式下的键映射。

三、插件管理器——vim-plug

Vim 想要达到类似 VS Code 那样的效果,只能通过安装各种插件来实现。安装插件需要用到插件管理器,以前我一直用 Vundle 作为插件管理器,现在推荐另一个插件管理器 vim-plug,这个插件管理器有详细的文档,非常适合刚刚使用 Vim 的新手。它只有几个命令,因此无需记住任何内容即可使用该工具。vim-plug 还支持一次并行安装和更新多个插件。最重要的是,它比 Vundle 的安装速度快多了。

vim-plug 的 GitHub 链接:junegunn/vim-plug: 🌺 Minimalist Vim Plugin Manager (github.com)

1. 下载 vim-plug

下载 vim-plug 会使用到 curl 命令,如果还没安装 curl,需要先安装一下,如果已经安装就跳过这一步骤。

sudo apt update
sudo apt install curl

下面是下载 vim-plug 的命令:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

[!NOTE]

  • curl:是一个命令行工具,用于在网络上获取或发送数据。在这里,它被用来从指定的 URL 下载文件。
  • -fLo:这是 curl 命令的选项之一,表示 “fail silently and output errors to stdout”. 这个选项告诉 curl 在下载失败时不显示任何错误信息,而是将错误信息输出到标准输出。
  • ~/.vim/autoload/plug.vim:这是要保存下载文件的路径。~ 表示用户的主目录,.vim/autoload 是 Vim 的插件目录,plug.vim 是插件管理器 Vim-Plug 的主文件。
  • --create-dirs:这也是 curl 命令的选项之一,它告诉 curl 在下载文件之前创建所需的目录结构。在这里,它告诉 curl 创建 ~/.vim/autoload/ 这个目录,以确保文件可以被正确保存。
  • https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim:这是要下载的文件的 URL,它是 Vim-Plug 插件管理器的主文件在 GitHub 上的地址。通过这个 URL,curl 将从 GitHub 上下载 Vim-Plug 的主文件。

如果下载时出现网络问题,可以在 /etc/hosts 中添加下面语句后,重新执行下载命令。

199.232.28.133 raw.githubusercontent.com

下图是我的安装过程,用时稍长,要耐心等待。

2. vim-plug 配置规格

使用 vim-plug 插件管理器来管理 Vim 插件的安装和加载,需要在 .vimrc 中写入规定好的格式,格式如下:

call plug#begin()		" Begin Vim-Plug plugin manager configuration
Plug <Plugin Name>		" Add your plugins here
call plug#end()			" End Vim-Plug plugin manager configuration
  • call plug#begin():这个函数调用表示插件列表的开始。在这个函数调用之后,可以列出想要安装和加载的插件。
  • Plug:是 vim-plug 插件管理器的一种配置命令,用于指定要安装的插件。可以在 Plug 命令后面加上插件的 GitHub 仓库地址。例如,想安装名为 “vim-airline” 的插件,就在这里写 Plug 'vim-airline/vim-airline'
  • call plug#end():这个函数调用表示插件列表的结束。在这个函数调用之后,vim-plug 将会加载并初始化列出的所有插件。

[!CAUTION]

  1. 上面这段规格代码必须要写在 .vimrc 文件的开头,否则安装插件会有问题。
  2. vim-plug 安装的插件默认都会存放在 ~/.vim/plugged 中,开始语句的括号内可以指定安装路径,例如:call plug#begin('~/some/path/here')
  3. 需要添加的所有的插件都放到 call plug#begin()call plug#end() 之间。

3. vim-plug 命令

以下是 vim-plug 命令:

命令描述
PlugInstall [插件名] [线程数]安装插件。如果不指定插件名,则安装 .vimrc 中所有记录的插件。
PlugUpdate [插件名] [线程数]安装或更新插件。
PlugClean删除所有插件。如果只是哪个插件不想用了,可以直接在 .vimrc 中把它注释掉即可。
PlugUpgrade升级 vim-plug。
PlugStatus检查插件的状态。
PlugDiff显示更新前后插件变更内容。
PlugSnapshot [快照文件路径]生成用于恢复插件的当前快照的脚本。生成的快照文件会包含插件当前的 git commit id
恢复插件的方法: 在 vim 中 source 快照文件或直接执行 vim -S snapshot.vim

安装插件的效果如下图,比 Vundle 的安装过程直观(Vundle 安装插件的过程半天不动,很多人还要卡住了):

四、常用插件

1. NERDTree(目录树)

NERDTree 应该是大多数人接触到第一个 Vim 的插件,安装这个插件后(如下图),在 Vim 的左侧会多出一个窗口,这个窗口就是 NERDTree 窗口。如果是做项目,这个窗口就可以帮助我们在多个文件切换。

1-1. 安装并配置 NERDTree

编辑 ~/.vimrc,在 call plug#begin()call plug#end() 之间,插入下面的安装命令:

Plug 'scrooloose/nerdtree'

如图所示,输入之后直接进入命令行模式,输入 :PulgInstall 回车进行安装。

大概 5 秒后安装完,输入:p 退出。

安装好后,可以在 .vimrc 的结尾处设置 NERDTree 的几个快捷方式,代码如下:

" Configure the NERDTree plugin mapping button
" Automatically open NERDTree after opening the file
autocmd VimEnter * NERDTree
" Key F2: Map other tabs
map  :NERDTreeMirror
" Key F3: Expand/shrink NERDTree
map <F3> :NERDTreeToggle<CR>
" Key f: In the NERDTree window, jump the cursor to the currently open file.
map f :NERDTreeFind
" Key 1: Switch to the previous tab
map 1 :tabp<CR>
" Key 2: Switch to the next tab
map 2 :tabn<CR>

这段配置主要通过键盘快捷键提高标签页管理和文件浏览的效率。以下是各项配置的详细说明:

  1. autocmd VimEnter * NERDTree:该自动命令(autocmd)会在Vim启动并进入任何缓冲区时自动执行NERDTree命令,即在编辑器界面左侧打开NERDTree文件浏览器。这对于快速浏览和打开项目文件非常有帮助。
  2. map :NERDTreeMirror:将按键F2映射为执行:NERDTreeMirror命令。此命令会在当前标签页尚未打开NERDTree时打开一个新的NERDTree窗口,或者如果已经在当前标签页打开了NERDTree,则在另一个垂直分割的窗口中同步打开一个NERDTree。这个功能对于需要同时查看代码和文件结构特别有用。
  3. map :NERDTreeToggle:将按键F3绑定到:NERDTreeToggle命令。按下F3时,如果NERDTree窗口已经打开,则关闭它;如果未打开,则在当前窗口打开NERDTree。这个快捷键便于在需要时快速显示或隐藏文件浏览器。
  4. map f :NERDTreeFind:将按键f映射到:NERDTreeFind命令。在NERDTree窗口中使用时,此命令会使光标跳转到当前正在编辑的文件节点上,或者如果文件尚未在树中显示,则会尝试找到并选中它。这个功能帮助用户快速定位到当前工作的文件在项目结构中的位置。
  5. map 1 :tabpmap 2 :tabn:分别为按键12设置了标签页切换的快捷键。按下1时,执行:tabp命令,切换到前一个标签页;按下2时,执行:tabn命令,切换到下一个标签页。这些快捷键提升了在多个文件或编辑会话间导航的效率。

插入效果如图:

1-2. NERDTree 常用快捷键

NERDTree 的官方文档默认位置在 ~/.vim/plugged/nerdtree/doc/NERDTree.txt,快捷键部分在文本的 2.3. NERDTree Mappings 中介绍。

这里介绍几个比较常用的快捷键:

快捷键作用
o 或 回车(光标位于 NERDTree 窗口)光标在文件夹上时,为展开 / 折叠文件夹。
光标在文件上时,为打开文件,光标会跳转到新打开的文件第一行第一列的位置。
go(光标位于 NERDTree 窗口的文件)为打开文件,光标不跳转。
Ctrl + w + w光标在各个被打开的窗口切换
Ctrl + w + h光标向左侧的窗口切换
Ctrl + w + j光标向下侧的窗口切换
Ctrl + w + k光标向上侧的窗口切换
Ctrl + w + l光标向右侧的窗口切换
i(光标位于 NERDTree 窗口的文件)沿水平分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新窗口。
gi(光标位于 NERDTree 窗口的文件)与 i 不同处是光标不会跳转,依旧停留在 NERDTree 窗口。
s(光标位于 NERDTree 窗口的文件)沿垂直分割出一个新窗口,并显示光标所在位置的文件内容,光标会跳转到新窗口。
gs(光标位于 NERDTree 窗口的文件)与 s 不同处是光标不会跳转,依旧停留在 NERDTree 窗口。
q(光标位于 NERDTree 窗口)关闭 NERDTree 窗口。

快捷键演示:

2. Tagbar(代码结构)

Tagbar 就可以利用 Ctags 来提取符号,生成源代码的结构图。只要 Ctags 能支持这种语言,插件就能“识别” 这种语言,来生成结构图;识别的好坏程度也视 Ctags 对其的支持程度而定。

2-1. 安装 ctags

使用的 Tagbar 的前提条件是需要安装 ctags 软件,在终端输入下面的命令进行安装:

sudo apt install exuberant-ctags

2-2. 创建标签索引

要在 Vim 中实现像 VS Code 一样效果的函数跳转功能,需要提前创建标签索引,以 C/C++ 标准库为例,如果代码中调用了 C/C++ 标准库,在没有创建标签索引的情况下,打开 Tagbar 窗口是关联不到 C/C++ 标准库的,可以说标签索引相当于一座桥梁。由于 C/C++ 标准库几乎所有的项目都要用到,那就在 C/C++ 标准库的路径创建标签索引,命令如下:

cd /usr/include/
sudo ctags -R

-R 参数表示递归,执行这条命令后,会在 /usr/include 目录及其子目录中为所有的源代码文件(如 .c.h 等)生成一个标签索引文件(默认名为 tags),这个文件中包含了这些源文件里定义的所有函数、变量、宏等符号的引用信息。

如果有新的库文件加入这个路径,需要重新执行 sudo ctags -R 这个命令创建新的标签索引。

同理,项目文件要是需要这种关联,可以在项目的目录执行这个命令。

2-3. 安装并配置 Tagbar

编辑 ~/.vimrc,在 call plug#begin()call plug#end() 之间,插入下面的安装命令:

Plug 'majutsushi/tagbar'

如图所示,输入之后直接进入命令行模式,输入 :PulgInstall 回车进行安装。

安装好后,在 ~/.vimrc 结尾处设置 Tagbar 的打开快捷方式以及一些配置,代码如下:

" Configure the Tagbar plugin mapping button
" Set the plug-in of ctags used by tagbar
let g:tagbar_ctags_bin='/usr/bin/ctags'
" Key F4: Shrink/Expand Tagbar Window
map  :TagbarToggle
" Set the window width of tagbar to 35
let g:tagbar_width = 35
" Append the C/C++standard library header file to tags
set tags+=/usr/include/tags
" Open the tagbar automatically when opening the file
autocmd BufReadPost *.cpp,*.c,*.h,*.cc,*.cxx call tagbar#autoopen()

这段配置是针对 Vim 编辑器中使用 Tagbar 插件的个性化设置,用于增强C/C++编程时的代码导航体验。

  1. let g:tagbar_ctags_bin='/usr/bin/ctags':这行设置是告诉 Tagbar 插件使用位于 /usr/bin/ctags 的 ctags 程序来生成代码标签。
  2. map :TagbarToggle:这行设置是映射使得按下 F4 键时,Tagbar 侧边栏会在显示和隐藏之间切换,方便查看和隐藏代码结构视图。
  3. let g:tagbar_width = 35 :这行配置设置了 Tagbar 窗口的宽度为 35 字符,你可以根据自己的屏幕尺寸和喜好调整这个值。
  4. set tags+=/usr/include/tags:这行命令将 /usr/include/tags 这个全局 tags 文件加入到 Vim 的 tags 搜索列表中。这意味着在编辑C/C++文件时,Tagbar 不仅能识别当前工作目录下的 tags,还能识别系统库中的函数、宏等符号,极大地增强了代码导航能力。
  5. autocmd BufReadPost *.cpp,*.c,*.h,*.cc,*.cxx call tagbar#autoopen():这段自动命令(autocmd)会在每次打开.cpp.c.h.cc.cxx(即 C/C++ 相关的文件类型)之后自动调用 tagbar#autoopen() 函数,从而自动展示 Tagbar 窗口。

3. vim-airline(状态栏美化)

默认的状态栏为白底 + 前景色字体,确实不存在什么美感。可以通过安装 vim-airline 插件来美化状态栏,同时也可以显示更多信息。

3-1. 安装 vim-airline

以下是安装代码:

" vim-airline
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'

命令行模式下输入命令 :PlugInstall 后回车,等待安装完成即可。

3-2. 扩展主题

vim-airline 插件中默认只有一个 dark 主题,可以去 GitHub 上下载更多主题文件,然后放到 ~/.vim/plugged/vim-airline-themes/autoload/airline/themes 中,这样就可以配置更多主题了。

GitHub 链接:vim-airline/vim-airline-themes: A collection of themes for vim-airline (github.com)

3-3. 更换主题

更换主题的方法有两种,分别如下:

  • 临时更换:在 Vim 的命令行模式输入 AirlineTheme 并执行,就可以临时切换主题,退出 Vim 后会恢复成默认主题。

    下面是我测试了部分主题的结果:





主题效果全在 ~/.vim/plugged/vim-airline-themes/autoload/airline/themes 下,主题扩展名为 .vim ,设置主题时,把扩展名去掉就可以了(太多了,不一一列举了)。

  • 永久更换主题:所谓永久更换主题不是换了当下设置好的主题后,就换不了其他的主题,只是打开 Vim 时,自动切换到设置好的主题。只要在 .vimrc 中设置如下代码即可:

    let g:airline_theme=''
    

    我一般都是先用临时设置的办法,看看主题是否符合个人审美,再永久设置。

4. NERDCommenter(代码注释器)

注释代码进行调试是编程过程中最常见的操作,在 Vim 中进行多行注释可以借助 NERDCommenter 插件,达到类似 IDE 多行注释和取消注释的效果。

4-1. 安装 NERDCommenter

以下是安装代码:

" NERDCommenter
Plug 'scrooloose/nerdcommenter'

命令行模式下输入命令 :PlugInstall 后回车,等待安装完成即可。

4-2. 常用快捷键

这里要解释快捷键里两个元素,分别是 [count][count] 是指被选中的行,在 Vim 的命令行模式下,按下 v 键可以进入 Visual 模式(可视模式),然后以光标所在行为起点,按上下方向键或者 k 键(上)和 j 键(下),选中需要注释或者取消注释的行。 是一个特殊的键序列,默认情况下映射为反斜杠

快捷键功能
[count]cc注释当前行或者可视模式下选中的内容。
[count]cn[count]cc 一样。
文档上说 cn 可以嵌套注释,而 cc 不能,但是我实际使用这俩是一样的,可能这版有 bug。
[count]cm与上面不同的命令是,使用一组符号进行注释选定内容。
[count]cu取消注释。

4-3. 自定义

如果想自定义 Leader 键,可以在 .vimrc 配置文件中设置 mapleaderlet mapleader 变量。下面是基本的设置方法:

" Set the mapleader to a space character.
let mapleader = ' '

5. vim-illuminate(单词突出/高亮)

5-1. 安装 vim-illuminate

以下是安装代码:

" vim-illuminate
Plug 'rrethy/vim-illuminate'

命令行模式下输入命令 :PlugInstall 后回车,等待安装完成即可。

5-2. 自定义显示方式

插件安装好后,用 Vim 打开某个文件,把光标移动到某个单词上,相同的单词都会突出显示,默认是下划线突出显示。

不过这种下划线突出的效果几乎为零,所以一般都是设置成背景色高亮,在 .vimrc 配置文件输入如下代码即可:

hi illuminatedWord ctermfg=white ctermbg=99
  • hi:用于定义高亮组样式。
  • illuminatedWord:这个是 vim-illuminate 插件的关键字,高亮组名称。
  • ctermfg:终端前景颜色,使用 ANSI 颜色代号(0-255)或者常规颜色单词。
  • ctermbg:终端背景颜色,使用 ANSI 颜色代号(0-255)或者常规颜色单词。

效果如下:

当然了, 这个高亮的背景色效果可以通过调整 ctermbg 的值来修改,如果不清楚 ANSI 颜色,可以用下面的 shell 脚本运行得到 256 种 ANSI 颜色。

#!/bin/bash

count=0
for i in {0..255}; do
	printf "[48;5;${i}m%7d" ${i}
	((count++))
	if [ $((count % 16)) -eq 0 ]; then
		printf "
"
	fi
done

运行效果如下,这样可以根据自己的喜好设置背景色。

6. IndentLine(缩进提示)

Vim 的默认设置中并没有缩进线,代码看起来会比较费劲,不过可以通过安装 indentLine 插件来实现此功能。

6-1. 安装 IndentLine

以下是安装代码:

" IndentLine
Plug 'Yggdroot/indentLine'

命令行模式下输入命令 :PlugInstall 后回车,等待安装完成即可。

6-2. 配置缩进符

.vimrc 配置文件输入如下代码即可:

" IndentLine
" Enable IndentLine plugin
let g:indentLine_enabled = 1
" Set the characters for the indentation line, with a default value of '|'
let g:indentLine_char = '¦'
" Make the plugin run properly
let g:indentLine_conceallevel = 2
  • let g:indentLine_enabled = 1:这行设置确保了 IndentLine 插件处于启用状态。默认情况下,某些插件可能需要显式设置一个变量来激活其功能。
  • let g:indentLine_char = '|':此配置定义了用于表示缩进线的字符,默认使用垂直线 |。可以根据个人偏好将其更改为其他字符,如 ¦> 等,以匹配不同的视觉风格或代码阅读习惯。
  • let g:indentLine_conceallevel = 2:这里设置的 conceallevel 为 2,意味着在折叠区域(如果存在折叠代码)内,缩进线将被隐藏,仅显示折叠区域外的缩进线。这样做可以在复杂的代码结构中减少视觉混乱,帮助集中注意力于当前展开的部分。

还有好几个插件没介绍,后续补上!

持续更新,敬请期待!!!


  1. Vim 是 vi 的升级版,Vim 在使用上比 vi 更方便,vi 才是大多数人的噩梦。 ↩︎

本文地址:https://www.vps345.com/6996.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge llama 算法 opencv 自然语言处理 神经网络 语言模型 RTSP xop RTP RTSPServer 推流 视频 科技 ai java 人工智能 个人开发 ubuntu python MCP 数据库 centos oracle 关系型 安全 分布式 阿里云 网络 网络安全 网络协议 ssh 进程 操作系统 进程控制 Ubuntu deepseek Ollama 模型联网 API CherryStudio Flask FastAPI Waitress Gunicorn uWSGI Uvicorn harmonyos 华为 开发语言 typescript 计算机网络 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 rust http fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 ssl tcp/ip 物联网 mcu iot 信息与通信 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 智能路由器 外网访问 内网穿透 端口映射 android 鸿蒙 asm numpy YOLO efficientVIT YOLOv8替换主干网络 TOLOv8 HarmonyOS Next 面试 性能优化 jdk intellij-idea 架构 运维开发 云原生 dell服务器 github go 代理模式 开源 golang 后端 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 编辑器 windows docker 容器 ESXi react.js 前端面试题 node.js 持续部署 YOLOv8 NPU Atlas800 A300I pro asi_bench 大数据 爬虫 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 1024程序员节 adb macos 鸿蒙系统 前端框架 统信UOS 麒麟 bonding 链路聚合 chatgpt 大模型 llama3 Chatglm 开源大模型 ollama mac 计算机外设 电脑 软件需求 ddos c语言 qt stm32项目 单片机 stm32 gpu算力 Dify zotero WebDAV 同步失败 ffmpeg 音视频 c++ pycharm ide Dell R750XS pip conda 华为云 嵌入式硬件 温湿度数据上传到服务器 Arduino HTTP udp unity flask spring boot AI编程 AIGC 政务 分布式系统 监控运维 Prometheus Grafana 微信 微信分享 Image wxopensdk sql KingBase 笔记 ui 华为od websocket vscode tcpdump 学习 oceanbase rc.local 开机自启 systemd AI Agent uni-app 银河麒麟 kylin v10 麒麟 v10 php 智能手机 NAS Termux Samba Linux postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 LDAP 命名管道 客户端与服务端通信 tomcat maven intellij idea 目标检测 计算机视觉 深度学习 YOLOv12 pytorch Windsurf .net nginx dubbo kubernetes word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 mysql C# MQTTS 双向认证 emqx unix sqlserver rust腐蚀 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 ESP32 C 环境变量 进程地址空间 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 豆瓣 追剧助手 迅雷 nas 自动化 微服务 springcloud aws googlecloud protobuf 序列化和反序列化 安装 vSphere vCenter 软件定义数据中心 sddc cuda cudnn anaconda jmeter 软件测试 HCIE 数通 rpc 嵌入式 linux驱动开发 arm开发 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 僵尸进程 pillow live555 rtsp rtp json html5 firefox vim VMware安装mocOS VMware macOS系统安装 WSL win11 无法解析服务器的名称或地址 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 学习方法 经验分享 程序人生 DeepSeek-R1 API接口 源码剖析 rtsp实现步骤 流媒体开发 客户端 java-ee cpu 内存 实时 使用 flutter Hyper-V WinRM TrustedHosts ipython 数据集 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 MacOS录屏软件 camera Arduino 电子信息 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 jenkins 机器学习 向日葵 c# debian PVE git elasticsearch .netcore 创意 社区 WSL2 hadoop safari Mac 系统 系统架构 无人机 机器人 vmware 卡死 DeepSeek Cline 自动化编程 outlook IIS .net core Hosting Bundle .NET Framework vs2022 rabbitmq 直播推流 ssh漏洞 ssh9.9p2 CVE-2025-23419 状态管理的 UDP 服务器 Arduino RTOS yum django ros2 moveit 机器人运动 服务器配置 生物信息学 openEuler nvidia 驱动开发 gitea jar 媒体 微信公众平台 kali 共享文件夹 虚拟机 postgresql svn jupyter okhttp wireshark 显示过滤器 ICMP Wireshark安装 pygame kylin 远程工作 Invalid Host allowedHosts vue 远程连接 rdp 实验 交换机 telnet 远程登录 fpga开发 Wi-Fi gpt-3 文心一言 selenium 测试工具 DNS express UOS 统信操作系统 低代码 list 模拟实现 redis mybatis 云电竞 云电脑 todesk DevEco Studio 实战案例 OD机试真题 华为OD机试真题 服务器能耗统计 prometheus k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 缓存 灵办AI kvm wsl web安全 Qwen2.5-coder 离线部署 transformer ping++ 深度优先 图论 并集查找 换根法 树上倍增 threejs 3D 华为认证 网络工程师 拓扑图 llm SenseVoice webrtc AI大模型 LLM visual studio code bash microsoft kafka wsl2 TRAE agi 远程桌面 apache 宝塔面板 部署 dba react next.js 部署next.js ocr 硬件架构 数据结构 RAID RAID技术 磁盘 存储 多层架构 解耦 压力测试 测试用例 功能测试 shell 磁盘监控 dify Trae AI代码编辑器 https ci/cd 银河麒麟服务器操作系统 系统激活 excel 分析解读 实时音视频 实时互动 html 程序员 ansible playbook 剧本 负载均衡 博客 ecmascript KVM 王者荣耀 微信小程序 小程序 企业微信 Linux24.04 deepin Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 android studio 交互 金融 grafana 腾讯云大模型知识引擎 Deepseek 小艺 Pura X 硬件 设备 GPU PCI-Express Google pay Apple pay etcd 数据安全 RBAC jellyfin SSH p2p 报错 Java k8s 开发 mamba Vmamba docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos openvpn server openvpn配置教程 centos安装openvpn 游戏机 VMware创建虚拟机 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 Reactor 设计模式 C++ SWAT 配置文件 服务管理 网络共享 gaussdb ruoyi DeepSeek行业应用 Heroku 网站部署 JAVA spring cloud 视觉检测 IIS服务器 IIS性能 日志监控 虚拟化 半虚拟化 硬件虚拟化 Hypervisor 腾讯云 micropython esp32 mqtt nuxt3 网络结构图 openssl 密码学 其他 r语言 数据可视化 数据分析 并查集 leetcode 远程 命令 执行 sshpass 操作 算力 多进程 sqlite linux安装配置 firewalld hibernate ArcTS 登录 ArcUI GridItem gitee arkUI windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 中间件 可信计算技术 安全架构 网络攻击模型 gradle 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 n8n 工作流 workflow Java Applet URL操作 服务器建立 Socket编程 网络文件读取 大模型入门 大模型教程 IPMI Cookie W5500 OLED u8g2 TCP服务器 KylinV10 麒麟操作系统 Vmware 漏洞 kind arcgis 同步 备份 建站 交叉编译 安全威胁分析 网络穿透 云服务器 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer Xterminal virtualenv ue4 着色器 ue5 虚幻 ragflow pyautogui bug mongodb 弹性计算 裸金属服务器 弹性裸金属服务器 iBMC UltraISO spring 开机自启动 unity3d rag ragflow 源码启动 QQ bot Docker gitlab CORS 跨域 雨云 NPS 飞书 dns 恒源云 小游戏 五子棋 致远OA OA服务器 服务器磁盘扩容 yum源切换 更换国内yum源 强制清理 强制删除 mac废纸篓 软件工程 arm 能力提升 面试宝典 技术 IT信息化 oneapi 大模型微调 MQTT 消息队列 自动驾驶 传统数据库升级 银行 大语言模型 LLMs MS Materials 监控 自动化运维 Ark-TS语言 图像处理 VMware安装Ubuntu Ubuntu安装k8s mysql离线安装 ubuntu22.04 mysql8.0 code-server mosquitto 源码 毕业设计 课程设计 混合开发 环境安装 JDK 进程信号 京东云 AISphereButler 命令行 基础入门 编程 kamailio sip VoIP mariadb 大数据平台 hive Hive环境搭建 hive3环境 Hive远程模式 echarts 信息可视化 网页设计 cmos ollama下载加速 服务器繁忙 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 centos-root /dev/mapper yum clean all df -h / du -sh remote-ssh linux 命令 sed 命令 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 国产操作系统 ukui 麒麟kylinos openeuler 统信 虚拟机安装 框架搭建 devops springboot 黑客技术 web3.py 职场和发展 VPS pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 权限 EasyConnect npm RustDesk自建服务器 rustdesk服务器 docker rustdesk 迁移指南 系统安全 Ubuntu Server Ubuntu 22.04.5 服务器主板 AI芯片 AI写作 prompt 孤岛惊魂4 WebRTC gpt openwrt 蓝耘科技 元生代平台工作流 ComfyUI 飞牛NAS 飞牛OS MacBook Pro zabbix 产品经理 log4j RTMP 应用层 IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 xrdp string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 游戏服务器 TrinityCore 魔兽世界 asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 vr 开发环境 SSL证书 代码调试 ipdb adobe Python 网络编程 聊天服务器 套接字 TCP Socket 多线程服务器 Linux网络编程 云服务 雨云服务器 springsecurity6 oauth2 授权服务器 token sas FTP 服务器 矩阵 服务器管理 配置教程 服务器安装 网站管理 NFS redhat pdf 群晖 文件分享 iis 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 远程控制 远程看看 远程协助 visualstudio iftop 网络流量监控 银河麒麟操作系统 国产化 Open WebUI 工业4.0 eureka rsyslog k8s集群资源管理 云原生开发 毕设 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 微信开放平台 微信公众号配置 三级等保 服务器审计日志备份 Docker Hub docker pull 镜像源 daemon.json 串口服务器 IDE AI 原生集成开发环境 Trae AI 蓝桥杯 安卓 C语言 硬件工程 嵌入式实习 流式接口 css 本地部署 api DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 Kylin-Server matlab bootstrap Kali Linux 黑客 渗透测试 信息收集 nextjs reactjs 大模型面经 大模型学习 CPU 主板 电源 网卡 压测 ECS ssrf 失效的访问控制 Redis Desktop matplotlib 环境迁移 thingsboard 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 医疗APP开发 app开发 RAGFLOW 相差8小时 UTC 时间 聚类 netty gcc centos 7 docker run 数据卷挂载 交互模式 cursor etl 远程过程调用 Windows环境 输入法 XFS xfs文件系统损坏 I_O error es jvm 云桌面 微软 AD域控 证书服务器 技能大赛 FTP服务器 EMUI 回退 降级 升级 risc-v selete 高级IO Jellyfin 计算机 dity make eNSP 网络规划 VLAN 企业网络 apt rustdesk ip命令 新增网卡 新增IP 启动网卡 Kali linux环境变量 web 技术共享 我的世界 我的世界联机 数码 执法记录仪 智能安全帽 smarteye 人工智能生成内容 SysBench 基准测试 DBeaver 数据仓库 kerberos 文件系统 用户缓冲区 ecm bpm 鲲鹏 昇腾 npu ArkTs ArkUI 单元测试 集成测试 PPI String Cytoscape CytoHubba Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 图形化界面 openstack Xen 换源 国内源 Debian ruby 音乐服务器 Navidrome 音流 MCP server C/S 线程 多线程 Minecraft DOIT 四博智联 Docker Compose docker compose docker-compose edge浏览器 智能音箱 智能家居 linux上传下载 freebsd pppoe radius yolov8 tensorflow trae Playwright 自动化测试 P2P HDLC 思科 GCC crosstool-ng 繁忙 解决办法 替代网站 汇总推荐 AI推理 nac 802.1 portal QT 5.12.12 QT开发环境 Ubuntu18.04 MQTT协议 消息服务器 代码 H3C Dell HPE 联想 浪潮 iDRAC R720xd 版本 聊天室 ROS 前后端分离 程序 性能分析 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 IM即时通讯 剪切板对通 HTML FORMAT 3d saltstack wps muduo 个人博客 X11 Xming 集成学习 搜索引擎 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 虚拟局域网 FunASR ASR ceph file server http server web server 阿里云ECS 显卡驱动 计算虚拟化 弹性裸金属 rocketmq 大模型应用 游戏程序 深度求索 私域 知识库 minio jina 阻塞队列 生产者消费者模型 服务器崩坏原因 匿名管道 网站搭建 serv00 jetty undertow grub 版本升级 扩容 langchain frp seatunnel MacMini 迷你主机 mini Apple ISO镜像作为本地源 宠物 免费学习 宠物领养 宠物平台 显示管理器 lightdm gdm 序列化反序列化 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? SSH 密钥生成 SSH 公钥 私钥 生成 ip 产测工具框架 IMX6ULL 管理框架 游戏引擎 seleium chromedriver 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 Erlang OTP gen_server 热代码交换 事务语义 MNN Qwen Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 hugo Netty 即时通信 NIO 程序员创富 HTTP 服务器控制 ESP32 DeepSeek ios dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Kylin OS VR手套 数据手套 动捕手套 动捕数据手套 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 AI作画 信创 信创终端 中科方德 AI agent av1 电视盒子 机顶盒ROM 魔百盒刷机 思科模拟器 Cisco lio-sam SLAM 数学建模 uv vasp安装 远程服务 glibc AutoDL qt项目 qt项目实战 qt教程 模拟退火算法 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP keepalived sonoma 自动更新 软负载 HiCar CarLife+ CarPlay QT RK3588 xshell termius iterm2 Radius CLion wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Node-Red 编程工具 流编程 neo4j 数据库开发 数据库架构 database EMQX 通信协议 chrome devtools rnn 银河麒麟高级服务器 外接硬盘 Kylin 物联网开发 curl wget 社交电子 数据库系统 vscode 1.86 直流充电桩 充电桩 Cursor SEO chfs ubuntu 16.04 运维监控 火绒安全 Nuxt.js 内网服务器 内网代理 内网通信 边缘计算 aarch64 编译安装 HPC VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 目标跟踪 OpenVINO 推理应用 ShenTong 树莓派 VNC 图形渲染 uniapp 代理 黑苹果 备选 网站 调用 示例 AD域 sdkman webstorm sequoiaDB 北亚数据恢复 oracle数据恢复 OpenManus 宝塔 alias unalias 别名 prometheus数据采集 prometheus数据模型 prometheus特点 移动云 AI-native Docker Desktop 业界资讯 指令 x64 SIGSEGV SSE xmm0 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 XCC Lenovo xml 自定义客户端 SAS embedding 虚拟显示器 办公自动化 自动化生成 pdf教程 nfs SSL 域名 华为机试 skynet 设置代理 实用教程 回显服务器 UDP的API使用 Windows ai工具 重启 排查 系统重启 日志 原因 做raid 装系统 armbian u-boot flash-attention LORA NLP elk Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 私有化 大大通 第三代半导体 碳化硅 ros URL ftp CVE-2024-7347 WebUI DeepSeek V3 MySql 相机 RAGFlow SSH 服务 SSH Server OpenSSH Server h.264 自动化任务管理 big data opensearch helm 英语 MI300x minicom 串口调试工具 xcode web3 系统开发 binder 车载系统 framework 源码环境 cnn DenseNet tcp ux fd 文件描述符 vscode1.86 1.86版本 ssh远程连接 open Euler dde LLM Web APP Streamlit 邮件APP 免费软件 open webui IMM Xinference Linux PID LInux 单一职责原则 VSCode odoo 服务器动作 Server action docker命令大全 deepseek r1 崖山数据库 YashanDB DocFlow 视频编解码 spark HistoryServer Spark YARN jobhistory mq Ubuntu 24.04.1 轻量级服务器 tidb GLIBC asp.net大文件上传下载 iphone Linux的权限 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 zookeeper 服务器部署ai模型 make命令 makefile文件 sqlite3 Anolis nginx安装 linux插件下载 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 swoole v10 软件 ldap Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 无桌面 小智AI服务端 xiaozhi TTS deep learning GIS 遥感 WebGIS 监控k8s 监控kubernetes epoll AD 域管理 健康医疗 AnythingLLM AnythingLLM安装 路径解析 c HarmonyOS 联想开天P90Z装win10 多个客户端访问 IO多路复用 TCP相关API Claude 软考 rime qemu libvirt 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 网工 宕机切换 服务器宕机 反向代理 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 CrewAI Attention 网卡的名称修改 eth0 ens33 CH340 串口驱动 CH341 uart 485 rclone AList webdav fnOS windows日志 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 RAG 检索增强生成 文档解析 大模型垂直应用 SRS 流媒体 直播 金仓数据库 2025 征文 数据库平替用金仓 数据管理 数据治理 数据编织 数据虚拟化 Deepseek-R1 私有化部署 推理模型 链表 GoogLeNet idm 监控k8s集群 集群内prometheus 性能测试 田俊楠 bcompare Beyond Compare sublime text 常用命令 文本命令 目录命令 python3.11 信号处理 dash 正则表达式 5G 3GPP 卫星通信 pgpool 端口测试 USB网络共享 midjourney 历史版本 下载 css3 sentinel 知识图谱 浏览器开发 AI浏览器 存储维护 NetApp存储 EMC存储 嵌入式Linux IPC TrueLicense 强化学习 rancher gnu 烟花代码 烟花 元旦 本地知识库部署 DeepSeek R1 模型 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 佛山戴尔服务器维修 佛山三水服务器维修 多端开发 智慧分发 应用生态 鸿蒙OS 环境配置 我的世界服务器搭建 加解密 Yakit yaklang 磁盘清理 WSL2 上安装 Ubuntu 中兴光猫 换光猫 网络桥接 自己换光猫 干货分享 黑客工具 密码爆破 powerpoint Spring Security 超融合 c/c++ 串口 vpn tailscale derp derper 中转 线性代数 电商平台 服务器时间 单例模式 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 支付 微信支付 开放平台 PX4 eclipse searxng 带外管理 perf ubuntu20.04 开机黑屏 can 线程池 Mac内存不够用怎么办 语音识别 cfssl TCP协议 cocoapods 抗锯齿 nftables 防火墙 进程优先级 调度队列 进程切换 沙盒 元服务 应用上架 互联网医院 Logstash 日志采集 渗透 大模型技术 本地部署大模型 fonts-noto-cjk 双系统 GRUB引导 Linux技巧 deekseek iventoy VmWare OpenEuler lb 协议 trea idea Linux环境 dock 镜像 加速 su sudo yaml Ultralytics 可视化 Ubuntu22.04 开发人员主页 信号 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK OpenSSH less 键盘 游戏开发 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 IPv4 子网掩码 公网IP 私有IP 主从复制 composer 代理服务器 Ubuntu共享文件夹 共享目录 Linux共享文件夹 K8S k8s管理系统 Linux的基础指令 嵌入式系统开发 大模型推理 minecraft db 虚拟现实 xss 7z linux内核 查询数据库服务IP地址 SQL Server 分布式训练 安卓模拟器 稳定性 看门狗 NLP模型 Typore ubuntu24.04.1 自学笔记 小米 澎湃OS Android SVN Server tortoise svn 大模型部署 IO模型 读写锁 AI Agent 字节智能运维 HAProxy 本地环回 bind 端口 查看 ss 根服务器 服务网格 istio clickhouse fast laravel junit easyui CentOS 语法 k8s二次开发 集群管理 OpenHarmony 需求分析 规格说明书 IMX317 MIPI H265 VCU lua 捆绑 链接 谷歌浏览器 youtube google gmail 飞牛nas fnos onlyoffice 域名服务 DHCP 符号链接 配置 autodl 音乐库 飞牛 DeepSeek r1 cd 目录切换 AzureDataStudio CDN EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 网络建设与运维 hosts Headless Linux 策略模式 regedit 开机启动 wpf 软件构建 Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 xpath定位元素 webgl flink bat 本地化部署 李心怡 考研 玩机技巧 软件分享 软件图标 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 java-rocketmq docker部署Python g++ g++13 软链接 硬链接 项目部署到linux服务器 项目部署过程 nlp HarmonyOS NEXT 原生鸿蒙 banner GameFramework HybridCLR Unity编辑器扩展 自动化工具 计算生物学 生物信息 基因组 企业网络规划 华为eNSP cpp-httplib llama.cpp 移动魔百盒 推荐算法 USB转串口 harmonyOS面试题 opengl sysctl.conf vm.nr_hugepages 本地部署AI大模型 免费域名 域名解析 react native virtualbox ubuntu24 vivado24 CentOS Stream UOS1070e VS Code 僵尸世界大战 游戏服务器搭建 代码托管服务 DIFY perl 区块链 Python基础 Python教程 Python技巧 axure 富文本编辑器 WLAN 影刀 #影刀RPA# yolov5 架构与原理 内网环境 实习 triton 模型分析 figma WebVM 基础环境 流水线 脚本式流水线 互信 毕昇JDK IDEA 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 firewall 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 模拟器 教程 ssh远程登录 虚幻引擎 安防软件 ABAP Linux权限 权限命令 特殊权限 CPU 使用率 系统监控工具 linux 命令 scikit-learn MAC SecureCRT proxy模式 浏览器自动化 性能调优 安全代理 shell脚本免交互 expect linux免交互 Carla 智能驾驶 UDP 网络搭建 神州数码 神州数码云平台 云平台 copilot 网页服务器 web服务器 Nginx 在线office UEFI Legacy MBR GPT U盘安装操作系统 export import save load 迁移镜像 samba 流量运营 ip协议 MacOS 多路转接 ELF加载 vu大文件秒传跨域报错cors top Linux top top命令详解 top命令重点 top常用参数 word docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 输入系统 cmake milvus mcp服务器 client close CosyVoice Unity插件 ubuntu 18.04 华为证书 HarmonyOS认证 华为证书考试 MVS 海康威视相机 项目部署 kernel fork wait waitpid exit MAVROS 四旋翼无人机 Alexnet 云耀服务器 visual studio 工具 风扇控制软件 容器技术 python2 ubuntu24.04 iperf3 带宽测试 内核 达梦 DM8 极限编程 安装MySQL 对比 meld DiffMerge 通信工程 毕业 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 端口聚合 windows11 conda配置 conda镜像源 System V共享内存 进程通信 多产物 机柜 1U 2U 搭建个人相关服务器 Reactor反应堆 网络文件系统 智能电视 docker desktop image 查看显卡进程 fuser ArtTS deployment daemonset statefulset cronjob React Next.js 开源框架 图片增强 增强数据 合成模型 扩散模型 图像生成 nvm whistle rpa 国产数据库 瀚高数据库 数据迁移 下载安装 欧标 OCPP 鸿蒙开发 移动开发 AI员工 Linux find grep 钉钉 powerbi ebpf uprobe ROS2 IO 开源软件 抓包工具 话题通信 服务通信 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 Mac软件 热榜 宝塔面板无法访问 maxkb ARG oracle fusion oracle中间件 Qwen2.5-VL vllm 硅基流动 ChatBox wsgiref Web 服务器网关接口 MDK 嵌入式开发工具 论文笔记 ardunio BLE WebServer 离线部署dify nosql 网络爬虫 fstab win服务器架设 windows server 服务器扩容没有扩容成功 ros1 Noetic 20.04 apt 安装 视频平台 录像 视频转发 视频流 kotlin 授时服务 北斗授时 状态模式 Sealos 论文阅读 粘包问题 burp suite 抓包 vnc hexo 服务器部署 本地拉取打包 Helm k8s集群 Mermaid 可视化图表 navicat notepad zip unzip 浪潮信息 AI服务器 隐藏文件 隐藏目录 管理器 通配符 Web服务器 多线程下载工具 PYTHON Linux 维护模式 tar ranger MySQL8.0 windows 服务器安装 电视剧收视率分析与可视化平台 Zoertier 内网组网 Web应用服务器 scapy java-rabbitmq 智慧农业 开源鸿蒙 团队开发 跨平台 软件卸载 系统清理 问题解决 mysql安装报错 windows拒绝安装 WINCC 服务器ssl异常解决 大屏端 netlink libnl3 stable diffusion 西门子PLC 通讯 ubuntu安装 linux入门小白 代码规范 zerotier csrutil mac恢复模式进入方法 恢复模式 cron crontab日志 数字证书 签署证书 生活 接口优化 js 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 联机 僵尸毁灭工程 游戏联机 开服 macOS Docker快速入门 服务器正确解析请求体 解决方案 qt5 客户端开发 镜像下载 MobaXterm 显示器 搜狗输入法 中文输入法 文件传输 lighttpd安装 Ubuntu配置 Windows安装 服务器优化 零售 yum换源 弹性服务器