前言

Vim的配置对初学者来说不是一件容易的事情,选择一个成熟的配置是一个很好的选择,网上有很多配置方案,我在github上搜索vim找到amix/vimrc,是star数量最高的vim配置方案。

安装amix的终极配置Ultimate vim

Open Git Bash(需要安装git for windows)

1
2
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh

安装字体,作者推荐IBM Plex Mono font,复制对应字体到C:\Windows\Fonts目录即可完成安装

自定义配置

配置文件说明

主配置文件在位于用户目录下.vimrc文件,vimrc文件引用了basic.vim、filetypes.vim、plugins_config.vim、extended.vim和用户可能创建的my_configs.vim文件。

1
2
3
4
5
6
7
8
9
10
11
set runtimepath+=~/.vim_runtime

source ~/.vim_runtime/vimrcs/basic.vim
source ~/.vim_runtime/vimrcs/filetypes.vim
source ~/.vim_runtime/vimrcs/plugins_config.vim
source ~/.vim_runtime/vimrcs/extended.vim

try
source ~/.vim_runtime/my_configs.vim
catch
endtry

快捷键配置

  1. 前缀键
    各类 vim 插件帮助文档中经常出现 ,即,前缀键。vim 自带有很多快捷键,再加上各类插件的快捷键,大量快捷键出现在单层空间中难免引起冲突,为缓解该问题,引入了前缀键 ,这样,键 r 可以配置成 r、r、r 等等多个快捷键。前缀键是 vim 使用率较高的一个键(最高的当属 Esc),选一个最方便输入的键作为前缀键,将有助于提高编辑效率。找个无须眼睛查找、无须移动手指的键 —— 分号键,挺方便的,就在你右手小指处:
    “ 定义快捷键的前缀,即 let mapleader=”;”

  2. 举例
    使用set命令:
    set pastetoggle=

使用imap命令:
用Esc退出插入模式很麻烦,可以将另外的键映射到这个键上,比如将Ctrl-i映射为Esc:imap

“配置F4为Ack快捷键:
:map :Ack -i

在插入模式,设置ctrl+\为退出文件 :
:map! <C-> :q

  1. 使用下表中不同形式的map命令,可以针对特定的模式设置键盘映射:
Command命令 常规模式 可视化模式 运算符模式 插入模式 命令行模式
:map
:nmap
:vmap
:omap
:map!
:imap
:cmap

字体配置

在.vim_runtime目录新增my_configs.vim 文件 来配置你的个人配置,比如像我觉得默认配置的字体太大了,我这里需要调小一点,到vim_runtime\vimrcs目录下面找到extended.vim文件,复制里面相应配置的行,到 my_configs.vim 中,然后修改参数

1
set gfn=IBM\ Plex\ Mono:h12,Source\ Code\ Pro:h10,Bitstream\ Vera\ Sans\ Mono:h9

vim的分屏功能

总结起来,基本都是ctrl+w然后加上某一个按键字母,触发一个功能。

  1. 在shell里打开几个文件并且分屏:
      vim -On file1 file2 …
      vim -on file1 file2 …

大O表示垂直分割(vertical),小o表示水平分割(默认horizontal),后面的n表示分几个屏,实际上我觉得不用写,默认按后面要分割的文件数来决定分几个屏。

  1. 在vim里打开一个分屏:
      创建空白分屏:
      :new
      打开任意文件:
      :vsplit(:vsp) filename
      :sp(split) filename
      打开当前文件:
      ctrl+w 和 s(split)
      ctrl+w 和 v(vsplit)

  2. 关闭一个分屏:
      :only 或者 ctrl+w 和 o取消其它分屏,只保留当前分屏
      ctrl+w 和 c(close)
      只剩最后一个分屏以后推出:
      ctrl+w 和 q(quit)

  3. 移动光标,也就是切换分屏;也可以移动分屏,比如将左分屏移动到右边。
      ctrl+w 和 w(各种切换,只有两个分屏的时候还是比较方便的)
      ctrl+w 和 h(H) 左
      ctrl+w 和 j(J) 下
      ctrl+w 和 k(K) 上
      ctrl+w 和 l(L) 右
  4. 最后就是改变分屏尺寸的操作了。
      ctrl+w 和 < 左
      ctrl+w 和 > 右
      ctrl+w 和 + 上
      ctrl+w 和 - 下
      ctrl+w 和 = 恢复均等

NERDTree插件

  1. 开关NERDTree Tab:
    :NERDTreeToggle
    or
    ,nn #默认映射的快捷键 map nn :NERDTreeToggle

  2. 切换盘符
    :NERDTree Z:\
    or
    cd drive:\
    :NERDTree .

  3. 帮助
    ? 可以查看帮助

YouCompleteMe插件安装

  1. 下载
    amix的配置使用pathogen管理的插件,故将插件下载到~.vim_runtime/my_plugins

    1
    2
    3
    4
    cd ~.vim_rumtime/my_plugins
    git clone https://github.com/Valloric/YouCompleteMe.git
    cd YouCompleteMe
    git submodule update --init --recursive
  2. 安装环境
    安装一下软件

  • Python2或者Python3,但是版本要Python >= 2.7.1 or >= 3.5.1,添加到Path环境变量。
  • 安装CMake并添加Path到环境变量
  • 安装VS2017或VS2015(安装对应构建工具也可),安装的时候要选择C++构建工具。
  1. 安装
    安装的时候执行python install.py即可,但是要根据具体情况添加相应参数:
  • C系语言语法提示,–clang-completer或者–clangd-completer
  • C#语法提示,–cs-completer(需要要将MSBuild路径添加的环境变量,set path=%path%;{msbuild path}即可)
  • VS2015安装,–msvc 14

cd %USERPROFILE%/vimfiles/bundle/YouCompleteMe
python install.py –clangd-completer

Q&A

  1. What is the in a .vimrc file?
    The key is mapped to \ by default. So if you have a map of t, you can execute it by default with +t. For more detail or re-assigning it using the mapleader variable, see :help leader
    在amix的vim配置中,在basic.vim文件中默认将leader键设置为“,”键
    1
    let mapleader = ","

ref:https://stackoverflow.com/questions/1764263/what-is-the-leader-in-a-vimrc-file

  1. vim open file in a new tab
    1
    :tabnew filename

I have added the following lines to my .vimrc that allow me to switch between tabs easily.

1
2
3
4
nnoremap <C-Left> :tabprevious<CR>                                                                            
nnoremap <C-Right> :tabnext<CR>
nnoremap <C-j> :tabprevious<CR>
nnoremap <C-k> :tabnext<CR>

ref:https://superuser.com/questions/1111169/vim-open-file-in-a-new-tab