最新资讯

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

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

2025-04-29 00:37:23 2 阅读

文章目录

  • 一、重新安装 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/5123.html

搜索文章

Tags

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