VIM配置 3

Posted by Linuxtty on 七月 05, 2010

今天不知怎的又折腾起vim配置。每次打开.vimrc来看的时候都觉得这上百行的配置,最后自己记得并且用得到的功能可能连20%都不到=。=
but,多点功能总比少了的好,防患于未然啊,未雨绸缪啊神马的心理作祟,还是把配置给“堆叠”起来了。

插件:
NERDTree
taglist
supertab
bufexplorer
minibufexpl
vimwiki
python_fn(一直没用上,当初以为是解决py缩进问题的插件,结果是py的class,def代码块的操作插件。Usage)
IndentAnything(貌似这东西,现在py都不担心缩进的问题了)
winmanager(放了很久,也没怎么用到这东西)

关于文件浏览的插件就有三个了:winfileexplorer.vim(winmanager自带的),netrw(vim标准插件),nerdtree。winfileexplorer貌似目录结构啊,文件删减之类的变化不会有反应。netrw可以。nerdtree才开始试用,网上推荐的也较多吧。

参考:
vi/vim使用进阶: 目录

配置文件如下:

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>General
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

" With a map leader it's possible to do extra key combinations
" like <leader>w saves the current file
let mapleader = ","
let g:mapleader = ","

" Hightlight end of line whitespace.
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/

" Search
set hlsearch
set incsearch
nmap <leader>sn :noh<cr>

" Sets how many lines of history VIM has to remember
set history=300

" Set fileencodings
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

" Set statusline
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
set laststatus=2

" Enable filetype plugin
filetype plugin on
filetype indent on

" Set to auto read when a file is changed from the outside
set autoread

" Fast saving
nmap <leader>w :w!<cr>

" Fast editing of the .vimrc
map <leader>e :e! ~/.vimrc<cr>

" When vimrc is edited, reload it
autocmd! bufwritepost .vimrc source ~/.vimrc

"Fast reloading of the .vimrc
map <silent> <leader>ss :source ~/.vimrc<cr>

" Setting path
set path=.,/usr/include,,/usr/share/vim/vim72/**

" Moving
set whichwrap=s,<,>,[,] " 光标从行首和行末可以跳到另一行

" Setting seesionoptions
"set sessionoptions-=curdir
"set sessionoptions+=sesdir

"Switch FlieTab
"When edit a new file,switch to new tab
function! SwitchToBuf(filename)
    "let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")
    " find in current tab
    let bufwinnr = bufwinnr(a:filename)
    if bufwinnr != -1
        exec bufwinnr . "wincmd w"
        return
    else
        " find in each tab
        tabfirst
        let tab = 1
        while tab <= tabpagenr("$")
            let bufwinnr = bufwinnr(a:filename)
            if bufwinnr != -1
                exec "normal " . tab . "gt"
                exec bufwinnr . "wincmd w"
                return
            endif
            tabnext
            let tab = tab + 1
        endwhile
        " not exist, new tab
        exec "tabnew " . a:filename
    endif
endfunction

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
" => Files and backups
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
" Turn backup off, since most stuff is in SVN, git anyway...
set nobackup
set nowb
set noswapfile

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>User Interface
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
syntax enable "代码高亮
set showcmd
set showmatch " 括号匹配 Show matching brackets.
set matchtime=5 " 匹配时间 time=0.1s
set smartcase " Do smart case matching
set mouse=a " Enable mouse usage (all modes)

set fdm=manual " foldmethod代码折叠(manual,indent,expr,syntax,diff,maker)
set number " 显示行号
set autoindent " 自动缩进

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Tab indent related
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
set tabstop=4 "Tab宽度
set expandtab "Tab转换为空格
set shiftwidth=4 "缩进宽度
set smarttab "智能删除Tab

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Tab control
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"map <leader>tn :tabnew %<cr>
"map <leader>tc :tabclose<cr>
"map <leader>tm :tabmove

" PHP
"autocmd FileType php set tabstop=8 | set expandtab | set shiftwidth=8 | set smarttab

" Python
autocmd BufRead *.py nmap <F6> :!python % 

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Omni Complete
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
set completeopt=longest,menu

inoremap <expr> <CR> pumvisible()?"\<C-Y>":"\<CR>"
inoremap <expr> <C-J> pumvisible()?"\<C-N>":"\<C-X><C-O>"
inoremap <expr> <C-K> pumvisible()?"\<C-P>":"\<C-K>"
inoremap <expr> <C-U> pumvisible()?"\<C-E>":"\<C-U>"

"set completeopt-=preview
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Maps
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

" Tag List Open/Close
map <silent> <F9> :TlistToggle<cr>

" Netrw Open
" nmap <silent> <leader>fe :Sexplore!<cr>
" NERDTree
map <F2> :NERDTreeToggle<cr>

" Open BufExplorer
nmap <silent> <C-b> <leader>be

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Ctags
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"set tags = tags
"nmap <F3> :!ctags -R

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Tag List
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let Tlist_Ctags_Cmd = '/usr/bin/ctags' "设定linux系统中ctags程序的位置
let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 "在右侧窗口中显示taglist窗口
let Tlist_File_Fold_Auto_Close = 1 "taglist只显示当前文件tag,其它文件的tag都被折叠起来
let Tlist_GainFocus_On_ToggleOpen = 1 "使用:TlistToggle打开taglist窗口时,输入焦点在taglist窗口中

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>netrw setting 文件管理器
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let g:netrw_winsize = 30
nmap <silent> <leader>fe :Sexplore!<cr>

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>SuperTab
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let g:SuperTabRetainCompletionType=2
let g:SuperTabDefaultCompletionType="<C-X><C-O>"

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>BufExplorer
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let g:bufExplorerDefaultHelp=0 " Do not show default help.
let g:bufExplorerShowRelativePath=1 " Show relative paths.
let g:bufExplorerSortBy='mru' " Sort by most recently used.
let g:bufExplorerSplitRight=0 " Split left.
let g:bufExplorerSplitVertical=1 " Split vertically.
let g:bufExplorerSplitVertSize = 30 " Split width
let g:bufExplorerUseCurrentWindow=1 " Open in new window.
autocmd BufWinEnter \[Buf\ List\] setl nonumber

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>miniBufExpl
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let g:miniBufExplTabWrap = 1
let g:miniBufExplMapWindowNavVim = 1 " 可以使用<C-h,j,k,l> 切换到上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1 " 可以使用<C-箭头键>切换到上下左右窗口

" <C-Tab>    向前循环切换到每个buffer 上,并在当前窗口打开
" <C-S-Tab>   向后循环切换到每个buffer 上,并在当前窗口打开
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>winmanager
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"
"let g:winManagerWindowLayout = "FileExplorer"
"let g:winManagerWidth = 30
"let g:defaultExplorer = 0
"nmap <silent> <leader>wm :WMToggle<cr>
"nmap <C-W><C-F> :FirstExplorerWindow<cr>
"nmap <C-W><C-B> :BottomExplorerWindow<cr>

"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"=>Vimwiki
"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
let g:vimwiki_use_mouse = 1
let g:vimwiki_CJK_length = 1
let g:vimwiki_list = [{'path': '~/vimwiki/',
            \ 'path_html': '~/vimwiki/html/',
            \ 'auto_export': 1,
            \ 'html_header': '~/vimwiki/html/header.tpl',
            \ 'html_footer': '~/vimwiki/html/footer.tpl',}]
Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. fly2never Mozilla Windows 周二, 06 七 2010 00:32:29 UTC

    学习了,还在用裸vim的路过

    [回复]

  2. Louis Han Mozilla Firefox Windows 周三, 14 七 2010 11:18:48 UTC

    不会用vim的路过~

    [回复]

  3. Firm Google Chrome Windows 周四, 29 七 2010 16:34:37 UTC

    使劲折腾,俺闲来没事也喜欢乱折腾

    [回复]

Comments