最新资讯

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

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

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

文章目录

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