vim之所以强大而好用,我觉得是很多人为之努力,写了很多好用的插件来让编码更高效。以下是我在使用windows+gvim的过程中,总结的具体过程,以便大家一起学习。
##vundle—插件管理者
@rem Do not use "echo off" to not affect any child calls.
@setlocal
@rem Get the abolute path to the parent directory, which is assumed to be the
@rem Git installation root.
@for /F "delims=" %%I in ("%~dp0..") do @set git_install_root=%%~fI
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH%
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
@curl.exe %*
3. 打开 git bash,输入以下命令
git clone https://github.com/VundleVim/Vundle.vim.git D:/vim/vimfiles/bundle.vim/bundle/Vundle.vim
在这里,我将vundle安装在D:\vim\vimfiles\bundle下。
- 配置vundle
用vim打开_vimrc,输入以下代码:
set nocompatible
filetype off
syntax on "语法高亮
set rtp+=D:/vim/vimfiles/bundle/Vundle.vim/
call vundle#begin('D:/vim/vimfiles/bundle/')
Plugin 'VundleVim/Vundle.vim'
"这里输入你所需要的插件名字----看不懂?往下看
Plugin 'tpope/vim-fugitive'
Plugin 'vimwiki'
Plugin 'git://git.wincent.com/command-t.git'
call vundle#end()
filetype plugin indent on
我将以后要安装的插件放在了D:/vim/vimfiles/bundle/
,
3. 使用vundle
vundle安装插件的来源有四种:
1. 插件在github上,使用 github/插件名(项目名),如Plugin 'tpope/vim-fugitive'
2. 插件在http://vim-scripts.org/vim/scripts.html
上,如: Plugin 'vimwiki'
3. 插件是非github上的git插件,如:Plugin 'git://git.wincent.com/command-t.git'
4. 自己的插件(Plugin 'Plugin 'file:///D:/download'
)和Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
看不懂,感觉也没什么用。
使用vundle管理插件,就是编辑_vimrc,你要安装一个插件,只需将插件名添加到_vimrc中,然后在vim中运行:PluginInstall
,就可以了;如果你要删除这个插件,运行:PluginClean
就可以删除对应的插件,同时你得将_vimrc中该插件的相关配置删除掉。
|vundle使用命令|说明|
|:|:|
|:PluginList
| 显示已安装插件|
|:PluginInstall
| 安装插件
|:PluginUpdate==:PluginInstall!
|更新插件
|:PluginSearch foo
|查找 foo 插件
|:PluginClean
|删除_vimrc中没有的插件
##一些必备的插件
- ale(语法检查)安装: `Plugin 'w0rp/ale’`
_vimrc中配置
"-------ale-------
"始终开启标志列
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 0
"自定义error和warning图标
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
python
- indentLine(缩进指示线)安装:
Plugin 'Yggdroot/indentLine'
- SimplyFold(折叠代码) 安装:
Plugin 'tmhedberg/SimpylFold'
_vimrc中配置
set foldmethod=indent "根据每行的缩进开启折叠
set foldlevel=99
let g:SimpylFold_docstring_preview=1 "看到折叠代码的文档字符串
-
Ctags(创建代码库的索引),从网站下载For Windows版本的Ctags,解压缩后拷贝ctags.exe到vim的安装目录下,相关命令如下:
|命令|说明|
|:|:|
|:!ctags -R
|可以生成tags文件;
|g<C ]>==<C ]>
|跳到匹配当前光标所在的关键字的第一处标签,前者可以匹配多个;
|:pop===<C t>
|反向遍历标签历史;
|:tag
|正向遍历标签历史;
|:tag {keyword}
| 跳转到匹配{keyword}的第一处标签
|:tjump {keyword}
| 提示用户从多个匹配项选择一个
|:tnext/:tprev/:tfirst/:tlast
|跳到 下/上/第一/最后 处匹配的标签
|:tselect
|提示用户从多个匹配项选择一个 -
taglist(配合Ctags可以高效的查看源代码) 安装:
Plugin 'taglist.vim'
命令::taglist
显示taglist窗口;
_vimrc中配置
"-----tagslist----
let Tlist_Ctags_Cmd='D:\vim\vim81\ctags' "关联ctags
let Tlist_Use_Right_Window = 1 "让taglist窗口出现在Vim的右边
:autocmd BufWritePost * call system("ctags -R") "在每次自动保存时自动执行ctags
5.needtree(用于树形浏览文件系统) 安装:Plugin'scrooloose/nerdtree'
:NERDTreeToggle
显示窗口。 _vimrc中配置
let NERDTreeWinPos='right'
let NERDTreeWinSize=30
6.YouCompleteme(自动补全神器)因为windows上需要编译才可以运行,所以为了方便,下载别人编译好的,下载完后解压到bundle下的YouCompleteMe-x64中,最后配置python/.ycm_extra_conf.py
(这个还没学会)。ps:如果你的python版本和vim版本不都是64位或者32位,你的gvim不会加载pythonX.dll(不会支持python)。
##Markdown
-
语法高亮
vundle安装命令:Plugin 'godlygeek/tabular' Plugin 'plasticboy/vim-markdown'
注意顺序不能变。 -
实时动态显示
windows下:vundle安装命令:Plugin 'iamcco/markdown-preview.vim' Plug 'iamcco/mathjax-support-for-mkdp'
命令:
MarkdownPreview
打开浏览器预览markdown文件;MarkdownPreviewStop
关闭预览
_vimrc的相关配置:
let g:mkdp_auto_atart =1 "自动打开预览窗口
##_vimrc的相关内容
"------Vundle--------
set nocompatible
filetype off
syntax on "语法高亮
set rtp+=D:/vim/vimfiles/bundle/Vundle.vim/
call vundle#begin('D:/vim/vimfiles/bundle/')
Plugin 'VundleVim/Vundle.vim'
Plugin 'snakeleon/YouCompleteMe-x64'
Plugin 'octol/vim-cpp-enhanced-highlight'
Plugin 'godlygeek/tabular'
Plugin 'plasticboy/vim-markdown'
Plugin 'iamcco/markdown-preview.vim'
Plugin 'EditPlus'
Plugin 'git://git.wincent.com/command-t.git'
"----python----
Plugin 'taglist.vim'
Plugin 'vim-scripts/indentpython.vim' "自动缩进
Plugin 'Yggdroot/indentLine' "缩进指示线
Plugin 'davidhalter/jedi'
"Plugin 'Valloric/YouCompleteMe'
"Plugin 'file:///D:/download'
"Plugin 'rstacruz/sparkup', {'rtp': 'vim'}
call vundle#end() " required
filetype plugin indent on " required
set nobackup "取消自动生成备份文件
set number "设置行号
set relativenumber "设置相对行号
"编码
let &termencoding=&encoding
set encoding=utf-8
set fileencodings=utf-8,gbk
"代码折叠
set foldmethod=indent
set foldlevel=99
let $LANG = 'en'
set langmenu=en
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
set tabstop=4 "tab宽度
set softtabstop=4
set shiftwidth=4
"-----tagslist----
let Tlist_Ctags_Cmd='D:\vim\vim81\ctags' "
let Tlist_Use_Right_Window = 1 "让taglist窗口出现在Vim的右边
"-------markdown-preview----
let g:mkdp_auto_atart =1 "自动打开预览窗口
"-----运行python-----
"工作路径设置
exec 'cd ' . fnameescape('D:\mypython\spyder_python3\test11')
set guifont=consolas:h15
map <F5> :call RunP()<CR>
func! RunP()
exec "w"
if &filetype == 'python'
exec "!python.exe %"
elseif &filetype == 'c'
"exec "!gcc % && %:r"
exec "!g++ % -o %:r && %:r"
elseif &filetype == 'cpp'
exec "!g++ % -o %:r && %:r"
elseif &filetype == 'java'
exec "!javac % && java %:r"
endif
endfunc
autocmd BufNewFile *.cpp,*.c,*.java exec ":call SetTile()"
func SetTile()
if &filetype == 'c'
call append(0, "#include<stdio.h>")
call append(1, "int main()")
call append(2, "{")
call append(3, " ")
call append(4, " ")
call append(5, " return 0;")
call append(6, "}")
elseif &filetype == 'cpp'
call append(0, "#include<iostream>")
call append(1, "using namespace std;")
call append(2, "int main()")
call append(3, "{")
call append(4, " ")
call append(5, " return 0;")
call append(6, "}")
elseif &filetype == 'java'
call append(0, "public class ")
call append(1, "{")
call append(2, " public static void main(String[] args)")
call append(3, " {")
call append(4, " ")
call append(5, " }")
call append(6, "}")
endif
" autocmd BufNewFile * normal H
endfunc
ps:
如果你
要在windows下编译运行c/c++,需要下载MinGW。