MOFASHY

Live Is Life

gVim最新版本安装和配置(Windows)

Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

gVimVim的图形前端,它是跨平台的编辑器,基本上主流的操作系统上面都有它的对应的版本。

gVim的安装

官网下载地址:gVim,根据操作系统选择32位(当前为:gvim_9.1.0000_x86.exe)或64位版本(当前为:gvim_9.1.0000_x64.exe)。

下载完后进行安装,根据需要自行选择安装的类型,这里选择了典型安装。

安装路径默认即可,也可以根据自身需要选择其他位置。除此外,其余步骤默认即可。

gVim的配置

默认的gVim编辑器界面比较简陋,我们可以根据自己需要进行配置。

在上一步骤中,我们选择将gVim默认安装在C盘位置,根据安装盘符的不同会存在两种情况:

  1. 如果选择默认安装在C盘,则安装目录下有两个文件:
    • vim91: vim软件本体目录
    • _vimrc: vim配置文件(该文件无法进行编辑保存)
  2. 如果选择安装到其他盘符,则安装目录下有三个文件:
    • vim91: vim软件本体目录
    • vimfiles: 存放vim插件、颜色、字体等配置
    • _vimrc: vim配置文件(可以编辑保存)

对于第一种情况,安装程序会自动在用户目录(即:C:\Users\[用户名]\)下创建vimfiles文件夹。因此,要想添加个人的配置则可以复制一份这个文件到用户目录下(C:\Users\[用户名]\_vimrc)然后进行编辑。

以下是我的基本配置:

1
2
3
4
5
6
7
8
9
10
11
12
syntax on                       " 自动语法高亮
set number " 显示行号
set relativenumber " 显示相对行号
set smartindent " 智能自动缩进
set shiftwidth=4 " 设置自动缩进时,每一级缩进4个空格的宽度
set tabstop=4 " 设定tab长度为4个空格
set expandtab " 将tab转换为等量的空格
set softtabstop=4 " 按退格键时一次删除4个空格
set nobackup " 覆盖文件时不备份
set noundofile " 设置不需要生成记录撤销操作的文件
set cursorline " 突出显示当前行
set guifont=Cascadia_Mono:h12 " 设置字体

gVim默认附带了多种主题配色方案(可以通过编辑>配色方案进行查看),如果这些主题配色都不是你喜欢的,则可以自行下载其他第三方配色方案,也可以选择官网推荐的molokai: A port of the monokai scheme for TextMate

把下载好的文件molokai.vim移动到vimfiles>colors目录下。

重新编辑_vimrc文件,添加如下内容:

1
colorscheme molokai

然后通过:w保存和source %重新加载配置,或者保存后重新打开软件。

使用插件管理器

每次都要自己去下载添加插件很不方便,因此推荐使用插件管理器,这里选择的是Vim-plug

首先需要在vimfiles下创建autoload目录,让后下载plug.vim并添加到创建好的autoload目录下。GitHub访问不易,贴一个Vim-plug的镜像地址:Vim-plug

编辑_vimrc文件,添加如下内容启用插件管理器:

1
2
3
4
" 插件管理 vim-plug
" 不要使用默认的插件安装目录(`~\vimfiles\plugin`),否则加载插件时会出现错误
call plug#begin(`~\vimfiles\plugged`)
call plug#end()

Vim里一个好看的状态栏是非常加分的。使用最广的状态栏插件莫过于vim-airline。然而对于我来说,vim-airline过于庞大了,因此挑选更加轻量的lightline插件。

打开_vimrc文件,在包管理函数中(即call plug#begin()call plug#end()之间)添加如下内容:

1
2
3
4
5
6
7
" 把这句加到plug函数里
Plug 'itchyny/lightline.vim'

" 把这两句添加到plug函数外其他地方
set laststatus=2 " 显示状态栏,默认不显示
let g:lightline = { 'colorscheme': 'molokai', } " 状态栏配色方案
set noshowmode " 关闭当前状态显示,lightline插件已显示当前状态

注意lightline插件的配色方案跟前面设置的编辑器配色方案是不一样的,因此两个都需要设置。

配置进阶

在常用的IDE软件中,新建代码文件时会自动在前几行插入文件名、作者、创建时间等信息,可以通过在_vimrc中添加自定义函数实现此功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
" 当创建新的C、CPP、SH脚本文件时自动调用SetTitle函数

autocmd BufNewFile *.[ch],*.cpp,*.sh exec ":call SetTitle()"

" SetTitle函数定义
func SetTitle()
call setline(1, "/*************************************************")
call append(1, " * @File Name: ".expand("%))
call append(2, " * @Description: ")
call append(3, " * Author: mofashy")
call append(4, " * Created Time: ".strftime("%c"))
call append(5, " **************************************************/)
call append(6, "")

" 根据文件类型插入不同的代码
if &filetype == 'c' || &filetype == 'h'
call append(7, "#include <stdio.h>")
call append(8, "#include <stdlib.h>")
call append(9, "")
call append(10, "int main(void)")
call append(11, "{")
call append(12, " return 0;")
call append(13, "}")
call append(14, "")
elseif &filetype == 'cpp'
call append(7, "#include <iostream>")
call append(8, "")
call append(9, "using namespace std;")
call append(10, "")
call append(11, "int main(void)")
call append(12, "{")
call append(13, " return 0;")
call append(14, "}")
call append(15, "")
elseif &filetype == 'sh'
call append(7, "\#!/bin/bash")
call append(8, "")
endif

" 新建文件后,自动定位到文件末尾
normal G
endfunc

其他插件介绍

NERDTree

这是一个使用比较广泛的插件——目录树。支持在不退出vim编辑器的前提下,在文件中快速进行切换,同时能让开发人员快速掌握项目目录解构,是提升开发效率必不可少的工具。

  1. 安装

使用plug-vim插件管理工具进行安装

1
2
3
call plug#begin()
Plug 'preservim/nerdtree'
call plug#end()
  1. 配置

NERDTree默认无需配置即可直接使用,也可以参考文档更改部分按键映射。最常见的配置如下所示:

1
2
" 使用Ctrl+n快速打开目录树
nnoremap <C-n> :NERDTreeToggle<CR>

auto-pairs

这个插件的功能简单而实用:在输入/删除左括号/左引号时,能自动补上/删除右括号/右引号。

  1. 安装
1
Plug 'jiangmiao/auto-pairs'
  1. 使用

开箱即用,不需要过多的配置。

NerdCommenter

NerdCommenter和vim的visual模式结合可以快速的注释/取消注释多行代码,同时在行尾追加注释并自动进入insert模式可以方便的进行行内注释。

  1. 安装
1
Plug 'preservim/nerdcommenter'
  1. 配置

参考:https://github.com/preservim/nerdcommenter

Rainbow

这个插件可以为不同层级的括号提供不同颜色来进行区分,可以帮助您更好的阅读代码。

  1. 安装
1
Plug 'luochen1990/rainbow'
  1. 配置
1
let g:rainbow_active = 1 " 如果想以后通过:RainbowToggle来启用它,请设置为0

参考

[1] Vim Awesome
[2] Vim常用配置