构建vim IDE
参考 Vim 安装、基本配置、使用、插件
1. vim基础
vimrc配置
syntax=on "语法高亮
set nu "显示行号
set tabstop=4 "修改tap宽度为4
set autoindent "自动缩进
set mouse=a "可以使用鼠标
set cursorline "高亮显示当前行
set guifont=Courier_New:h10:cANSI "设置字体Courier_New,大小10号
set filetype=on "打开文件类型检测功能
" 设置自动缩进
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
"设置文本宽度,当文本很长的时候,按照长度自动拆分
set textwidth=200
"控制哪些字符可以通过%命令进行匹配,
"在开括号“(,{,[”上点击%键,将会自动跳转到对应的闭括号“),},]”上;
"同理,在闭括号上点击%键,也会跳转回到对应的开括号上;
"同时,匹配跳转也能够正确处理括号嵌套的情况。
set showmatch
set matchpairs=(:),{:}
"支持{}、[]、()、""、''自动补全
inoremap ( <c-r>=OpenPair('(')<CR>
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap { <c-r>=OpenPair('{')<CR>
inoremap } <c-r>=ClosePair('}')<CR>
inoremap [ <c-r>=OpenPair('[')<CR>
inoremap ] <c-r>=ClosePair(']')<CR>
" just for xml document, but need not for now.
"inoremap < <c-r>=OpenPair('<')<CR>
"inoremap > <c-r>=ClosePair('>')<CR>
function! OpenPair(char)
let PAIRs = {
\ '{' : '}',
\ '[' : ']',
\ '(' : ')',
\ '<' : '>'
\}
if line('$')>2000
let line = getline('.')
let txt = strpart(line, col('.')-1)
else
let lines = getline(1,line('$'))
let line=""
for str in lines
let line = line . str . "\n"
endfor
let blines = getline(line('.')-1, line("$"))
let txt = strpart(getline("."), col('.')-1)
for str in blines
let txt = txt . str . "\n"
endfor
endif
let oL = len(split(line, a:char, 1))-1
let cL = len(split(line, PAIRs[a:char], 1))-1
let ol = len(split(txt, a:char, 1))-1
let cl = len(split(txt, PAIRs[a:char], 1))-1
if oL>=cL || (oL<cL && ol>=cl)
return a:char . PAIRs[a:char] . "\<Left>"
else
return a:char
endif
endfunction
function! ClosePair(char)
if getline('.')[col('.')-1] == a:char
return "\<Right>"
else
return a:char
endif
endf
inoremap ' <c-r>=CompleteQuote("'")<CR>
inoremap " <c-r>=CompleteQuote('"')<CR>
function! CompleteQuote(quote)
let ql = len(split(getline('.'), a:quote, 1))-1
let slen = len(split(strpart(getline("."), 0, col(".")-1), a:quote, 1))-1
let elen = len(split(strpart(getline("."), col(".")-1), a:quote, 1))-1
let isBefreQuote = getline('.')[col('.') - 1] == a:quote
if '"'==a:quote && "vim"==&ft && 0==match(strpart(getline('.'), 0, col('.')-1), "^[\t ]*$")
" for vim comment.
return a:quote
elseif "'"==a:quote && 0==match(getline('.')[col('.')-2], "[a-zA-Z0-9]")
" for Name's Blog.
return a:quote
elseif (ql%2)==1
" a:quote length is odd.
return a:quote
elseif ((slen%2)==1 && (elen%2)==1 && !isBefreQuote) || ((slen%2)==0 && (elen%2)==0)
return a:quote . a:quote . "\<Left>"
elseif isBefreQuote
return "\<Right>"
else
return a:quote . a:quote . "\<Left>"
endif
endfunction
2. vim插件
2.1 Vim插件管理器
- git clone https://github.com/VundleVim/Vundle.vim.git 到路径 ~/.vim/bundle下
- 修改~/.vimrc文件
set nocompatible
filetype off
set rtp += ~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
filetype plugin indnet on
- 随便用vim打开一个文件,执行PluginInstall:
2.2 Nerd Tree插件
该插件用来构建目录树
- 安装,将下列语句置于call vundle#begin()和vundle#end()中间
Plugin 'scrooloose/nerdtree'
- 修改配置文件 ~/.vimrc,添加下列语句
"nerdtree
autocmd vimenter * NERDTree "打开vim,自动开启nerd tree
map <F3> : NERDTreeMinrror<CR> "通过F3打开/关闭 nerd tree
map <F3> : NERDTreeToggle<CR>
- 随便用vim打开一个文件,执行PluginInstall:
2.3 ctags安装
因为tagbar和ctrlp的安装都需要有tags标签,所以需要先安装ctags
- 安装ctags
apt-get install ctags
- 到根目录下执行命令
ctags -R
- 设置tags路径
set tags = /tags所在文件夹的路径/tags
set autochdir
2.4 tagbar插件
该插件用来浏览文件结构
- 安装,将下列语句置于call vundle#begin()和vundle#end()中间
Plugin 'majutsushi/tagbar'
- 修改配置文件 ~/.vimrc,添加下列语句
"tagbar
nmap <F8> : TagbarToggle<CR> "通过F8打开/关闭Tagbar
- 随便用vim打开一个文件,执行PluginInstall
2.5 ctrlp文本搜索工具
该插件用来浏览文件结构
- 安装,将下列语句置于call vundle#begin()和vundle#end()中间
Plugin 'kien/ctrlp.vim'
- 修改配置文件 ~/.vimrc,添加下列语句
"ctrlp
let g:airline_cmd = 'CtrlP' " cltr + p 按键启动
- 随便用vim打开一个文件,执行PluginInstall
3. vim配色
-
下载或者编辑某个配色方案的.vim文件,保存到~/.vim/colors目录下
例如:
-
修改vim配置文件 ~/.vimrc,增加配置项
colorscheme molokai