前言
Vim的配置对初学者来说不是一件容易的事情,选择一个成熟的配置是一个很好的选择,网上有很多配置方案,我在github上搜索vim找到amix/vimrc,是star数量最高的vim配置方案。
安装amix的终极配置Ultimate vim
Open Git Bash(需要安装git for windows)1
2git 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
11set 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
快捷键配置
前缀键
各类 vim 插件帮助文档中经常出现,即,前缀键。vim 自带有很多快捷键,再加上各类插件的快捷键,大量快捷键出现在单层空间中难免引起冲突,为缓解该问题,引入了前缀键 ,这样,键 r 可以配置成 r、 r、 r 等等多个快捷键。前缀键是 vim 使用率较高的一个键(最高的当属 Esc),选一个最方便输入的键作为前缀键,将有助于提高编辑效率。找个无须眼睛查找、无须移动手指的键 —— 分号键,挺方便的,就在你右手小指处:
“ 定义快捷键的前缀,即let mapleader=”;” 举例
使用set命令:
set pastetoggle=
使用imap命令:
用Esc退出插入模式很麻烦,可以将另外的键映射到这个键上,比如将Ctrl-i映射为Esc:imap
“配置F4为Ack快捷键:
:map
在插入模式,设置ctrl+\为退出文件 :
:map! <C->
- 使用下表中不同形式的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然后加上某一个按键字母,触发一个功能。
- 在shell里打开几个文件并且分屏:
vim -On file1 file2 …
vim -on file1 file2 …
大O表示垂直分割(vertical),小o表示水平分割(默认horizontal),后面的n表示分几个屏,实际上我觉得不用写,默认按后面要分割的文件数来决定分几个屏。
在vim里打开一个分屏:
创建空白分屏:
:new
打开任意文件:
:vsplit(:vsp) filename
:sp(split) filename
打开当前文件:
ctrl+w 和 s(split)
ctrl+w 和 v(vsplit)关闭一个分屏:
:only 或者 ctrl+w 和 o取消其它分屏,只保留当前分屏
ctrl+w 和 c(close)
只剩最后一个分屏以后推出:
ctrl+w 和 q(quit)- 移动光标,也就是切换分屏;也可以移动分屏,比如将左分屏移动到右边。
ctrl+w 和 w(各种切换,只有两个分屏的时候还是比较方便的)
ctrl+w 和 h(H) 左
ctrl+w 和 j(J) 下
ctrl+w 和 k(K) 上
ctrl+w 和 l(L) 右 - 最后就是改变分屏尺寸的操作了。
ctrl+w 和 < 左
ctrl+w 和 > 右
ctrl+w 和 + 上
ctrl+w 和 - 下
ctrl+w 和 = 恢复均等
NERDTree插件
开关NERDTree Tab:
:NERDTreeToggle
or
,nn #默认映射的快捷键 mapnn :NERDTreeToggle 切换盘符
:NERDTree Z:\
or
cd drive:\
:NERDTree .帮助
? 可以查看帮助
YouCompleteMe插件安装
下载
amix的配置使用pathogen管理的插件,故将插件下载到~.vim_runtime/my_plugins1
2
3
4cd ~.vim_rumtime/my_plugins
git clone https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe
git submodule update --init --recursive安装环境
安装一下软件
- Python2或者Python3,但是版本要Python >= 2.7.1 or >= 3.5.1,添加到Path环境变量。
- 安装CMake并添加Path到环境变量
- 安装VS2017或VS2015(安装对应构建工具也可),安装的时候要选择C++构建工具。
- 安装
安装的时候执行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
- What is the
in a .vimrc file?
Thekey 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
- 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
4nnoremap <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