当前位置:   article > 正文

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

ubuntu vim

提起文本编辑器,绝大多数程序员一定会想到编辑器之神 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
  • 1

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

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

二、Vim 基础配置

1. Vim 的配置文件

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

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

vim ~/.vimrc
  • 1

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

  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
  • 1

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

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

实际效果如下:

在这里插入图片描述

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

在这里插入图片描述

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

3.自动补全符号

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

" Set Automatically Complete Parentheses
inoremap ' ''<ESC>i
inoremap " ""<ESC>i
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap < <><ESC>i
inoremap { {<CR>}<ESC>O
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

[!NOTE]

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

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

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

vim-plug 的 GitHub 链接:junegunn/vim-plug:

推荐阅读
相关标签