背景
VIM只用自带安装的软件,可以完成文本编辑的功能,不过很多开发者编写了很多插件,配合这些插件来做文字代码编辑,能很好地提高速度与效率
VIM的配置环境,装机后只配置一次,很容易忘记,下次重装系统或者配新机时,又要重新查找相关资料
这里做一次记录,方便后续重新配置相关个人使用的插件
所有记录都是在WINDOWS下进行配置的
vundle安装
安装完成VIM后,进入VIM所在的目录C:\Program Files\Vim
cd C:\Program Files\Vim
git clone https://github.com/VundleVim/Vundle.vim.git vimfiles/bundle/Vundle.vim
等下载完成vundle就算完成了
添加vundle管理的插件
set nocompatible " 去除VI一致性,必须要添加
filetype off " 必须要添加" 设置包括vundle和初始化相关的runtime path
set rtp+=$VIM/vimfiles/bundle/Vundle.vim
call vundle#rc('$VIM/vimfiles/bundle')
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"Plugin 'ascenator/L9', {'name': 'newL9'}Plugin 'scrooloose/nerdtree' " 加入NERDTreePlugin 'tomasr/molokai'Plugin 'ycm-core/YouCompleteMe'"Plugin 'wesleyche/SrcExpl'"Plugin 'tenfyzhong/CompleteParameter.vim'
" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
VIM的安装路径可以用 \$VIM来表示,不需要配置WINDOWS的系统变量,否则会工作不正常,$VIM是在哪里定义的,没有找到出处
添加完插件之后,VIM加载后,需要使用PluginInstall来加载插件
启动时自动加载使用操作
autocmd VimEnter * PluginInstall
autocmd VimEnter * :q
autocmd VimEnter * NERDTree
autocmd VimEnter * :colorscheme morning
期间遇到,不能复制或者工作不正常的状态,原因是WINDOWS权限设置的问题,因为没有管理权限,导致无法对C盘文件进行操作,导致工作不正常。
自带目录plugin
除了用vundle管理插件外,GVIM本身目录下的plugin目录里也可以安装插件,使用的方法就直接用命令调用就可以了
常用的如a.vim taglist.vim等
a.vim h,c文件相互跳转
taglist.vim 当前文件的标识显示
官方网站上有相关plugin下载的链接
https://www.vim.org/scripts/script_search_results.php?order_by=creation_date&direction=descending
ctags安装
下载ctags,同时添加到环境变量中,在打开VIM的使用,调用ctags -R的命令,来遍列代码标识,就可以实现,代码跳转,从引用到定义
https://sourceforge.net/projects/ctags/files/ctags/5.8/
YouCompleteMe安装
所谓youcompleteme安装,其实还是将youcompleteme在本地编译,至于安装是vundle,加载插件的时候,才加载的。
windows下安装,依赖项如下,如果只支持C语言的情况下,只需要预安装框起来的部分就可以,CMake安装后将路径添加至环境变量,下载并安装VS
cd C:\Program Files\Vim\vimfiles\bundle\YouCompleteMe
python install.py --clangd-completer --verbose
编译时也可以指定vs版本,例如--msvc 17
vimrc整个文件
点击查看代码
source $VIMRUNTIME/vimrc_example.vimset guifont=Courier_New:h12:cANSI
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language messages zh_CN.utf-8set ignorecase
map <F7> :bp<ENTER>
map <F8> :bn<ENTER>
map <F2> <C-]>
map <F3> <C-o>
map <F4> :A<ENTER>
map <F11> <Esc>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR>
map <C-s> :w<ENTER>
inoremap <C-s> <Esc>:w<ENTER>
map <C-f> yw:vimgrep <C-r>0 **/*.{h,c}<LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT><LEFT>
map <C-c> :copen<ENTER>
map <C-x> :cclose<ENTER>
map <C-F7> :call libcallnr("vimtweak.dll" , "SetAlpha" , 180)<ENTER>
map <C-F8> :call libcallnr("vimtweak.dll" , "SetAlpha" , 255)<ENTER>set number
set ts=4
set shiftwidth=4
colorscheme desert
autocmd GUIEnter * simalt ~xset nobackup
set noswapfile
set nowritebackup
set backupdir=D:\\Vim\\filebackup
set undodir=D:\\Vim\\undodirautocmd VimEnter * PluginInstall
autocmd VimEnter * :q
autocmd VimEnter * NERDTree
autocmd VimEnter * :colorscheme morning
"autocmd VimEnter * FindFileCache .
set diffexpr=MyDiff()
function MyDiff()let opt = '-a --binary 'if &diffopt =~ 'icase' | let opt = opt . '-i ' | endifif &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endiflet arg1 = v:fname_inif arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endiflet arg1 = substitute(arg1, '!', '\!', 'g')let arg2 = v:fname_newif arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endiflet arg2 = substitute(arg2, '!', '\!', 'g')let arg3 = v:fname_outif arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endiflet arg3 = substitute(arg3, '!', '\!', 'g')if $VIMRUNTIME =~ ' 'if &sh =~ '\<cmd'if empty(&shellxquote)let l:shxq_sav = ''set shellxquote&endiflet cmd = '"' . $VIMRUNTIME . '\diff"'elselet cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'endifelselet cmd = $VIMRUNTIME . '\diff'endiflet cmd = substitute(cmd, '!', '\!', 'g')silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3if exists('l:shxq_sav')let &shellxquote=l:shxq_savendif
endfunctionlet Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
let Tlist_Sort_Type = "name"
let Tlist_Auto_Open = 1
let g:winManagerWindowLayout = 'FileExplorer|TagList'set nocompatible " 去除VI一致性,必须要添加
filetype off " 必须要添加" 设置包括vundle和初始化相关的runtime path
set rtp+=$VIM/vimfiles/bundle/Vundle.vim
call vundle#rc('$VIM/vimfiles/bundle')
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
"Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
"Plugin 'ascenator/L9', {'name': 'newL9'}Plugin 'scrooloose/nerdtree' " 加入NERDTreePlugin 'tomasr/molokai'Plugin 'ycm-core/YouCompleteMe'"Plugin 'wesleyche/SrcExpl'"Plugin 'tenfyzhong/CompleteParameter.vim'
" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 常用的命令
" :PluginList - 列出所有已配置的插件
" :PluginInstall - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后let g:ycm_show_diagnostics_ui = 0
"let g:ycm_enable_diagnostic_signs = 0