VIM炫酷配置

如題,本篇給你們介紹一下我我的的vim配置,話很少說,直接上圖。

html


這是個人.vimrc.
java

你能夠把以下文件複製到你的文件中,你也會擁有像我同樣炫酷的界面。python

filetype plugin on

set nocompatible              " be iMproved, required
call plug#begin('~/.vim/plugins_by_vimplug')
Plug 'kien/ctrlp.vim'
" Plug 'scrooloose/syntastic'
Plug 'majutsushi/tagbar'
Plug 'Valloric/YouCompleteMe'
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'https://github.com/easymotion/vim-easymotion.git'
Plug 'https://github.com/jistr/vim-nerdtree-tabs.git'
Plug 'https://github.com/Shougo/neocomplcache.vim.git'
Plug 'https://github.com/sjl/badwolf.git'
Plug 'https://github.com/artur-shaik/vim-javacomplete2.git'
Plug 'https://github.com/all3g/pretty-vim'
Plug 'skywind3000/asyncrun.vim'
Plug 'mhartington/oceanic-next'
Plug 'neomake/neomake'
Plug 'ericpruitt/tmux.vim', {'rtp': 'vim/'}
Plug 'https://github.com/altercation/vim-colors-solarized.git'
Plug 'https://github.com/tomasr/molokai.git'
Plug 'https://github.com/vim-scripts/DoxygenToolkit.vim.git'
Plug 'https://github.com/liuchengxu/space-vim-dark.git'
call plug#end()


filetype off                  " required

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-misc'
Plugin 'xolox/vim-easytags'
Plugin 'tpope/vim-fugitive'
Plugin 'git://git.wincent.com/command-t.git'
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Plugin 'davidhalter/jedi-vim'
call vundle#end()            " required
filetype plugin indent on    " required

set shell=/bin/bash
set backspace=indent,eol,start
set autoindent
set cindent
set smartindent
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab

hi Comment cterm=italic

syntax enable

set t_Co=256


if (has("termguicolors"))
 set termguicolors
endif

colorscheme OceanicNext

map <Leader>n <plug>NERDTreeTabsToggle<CR>
map  <Leader>f <Plug>(easymotion-bd-f)
nmap <Leader>f <Plug>(easymotion-overwin-f)
map <Leader>L <Plug>(easymotion-bd-jk)
nmap <Leader>L <Plug>(easymotion-overwin-line)
nmap s <Plug>(easymotion-overwin-f2)
map  <Leader>w <Plug>(easymotion-bd-w)
nmap <Leader>w <Plug>(easymotion-overwin-w)

nnoremap <F5> :call <SID>compile_and_run()<CR>
nnoremap <F2> :10,30call <SID>Count_Words()<CR>
nnoremap <c-j> <c-w>j
nnoremap <C-K> <C-W>k
nnoremap <c-h> <c-w>h
nnoremap <c-l> <c-w>l

let g:molokai_original = 1
let g:nerdtree_tabs_open_on_console_startup=1
let g:ycm_min_num_of_chars_for_completion=1
let g:ycm_python_binary_path='/usr/bin/python3'

augroup project
    autocmd!
    autocmd BufRead,BufNewFile *.h,*.c set filetype=c.doxygen
augroup END

augroup SPACEVIM_ASYNCRUN
    autocmd!
    autocmd User AsyncRunStart call asyncrun#quickfix_toggle(15, 1)
augroup END


nmap <leader>jI <Plug>(JavaComplete-Imports-AddMissing)
nmap <leader>jR <Plug>(JavaComplete-Imports-RemoveUnused)
nmap <leader>ji <Plug>(JavaComplete-Imports-AddSmart)
nmap <leader>jii <Plug>(JavaComplete-Imports-Add)

imap <C-j>I <Plug>(JavaComplete-Imports-AddMissing)
imap <C-j>R <Plug>(JavaComplete-Imports-RemoveUnused)
imap <C-j>i <Plug>(JavaComplete-Imports-AddSmart)
imap <C-j>ii <Plug>(JavaComplete-Imports-Add)

nmap <leader>jM <Plug>(JavaComplete-Generate-AbstractMethods)

imap <C-j>jM <Plug>(JavaComplete-Generate-AbstractMethods)

nmap <leader>jA <Plug>(JavaComplete-Generate-Accessors)
nmap <leader>js <Plug>(JavaComplete-Generate-AccessorSetter)
nmap <leader>jg <Plug>(JavaComplete-Generate-AccessorGetter)
nmap <leader>ja <Plug>(JavaComplete-Generate-AccessorSetterGetter)
nmap <leader>jts <Plug>(JavaComplete-Generate-ToString)
nmap <leader>jeq <Plug>(JavaComplete-Generate-EqualsAndHashCode)
nmap <leader>jc <Plug>(JavaComplete-Generate-Constructor)
nmap <leader>jcc <Plug>(JavaComplete-Generate-DefaultConstructor)

imap <C-j>s <Plug>(JavaComplete-Generate-AccessorSetter)
imap <C-j>g <Plug>(JavaComplete-Generate-AccessorGetter)
imap <C-j>a <Plug>(JavaComplete-Generate-AccessorSetterGetter)

vmap <leader>js <Plug>(JavaComplete-Generate-AccessorSetter)
vmap <leader>jg <Plug>(JavaComplete-Generate-AccessorGetter)
vmap <leader>ja <Plug>(JavaComplete-Generate-AccessorSetterGetter)

nmap <silent> <buffer> <leader>jn <Plug>(JavaComplete-Generate-NewClass)
nmap <silent> <buffer> <leader>jN <Plug>(JavaComplete-Generate-ClassInFile)

" Solarized 
let g:solarized_degrade=1

" NERD tree
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
" Automatically open a NERDTree if no files where specified
autocmd vimenter * 
if !argc() | NERDTree | 
endif
" Close vim if the only window left open is a NERDTree
autocmd bufenter * 
if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | 
endif
" Open a NERDTree
nmap <F4> :NERDTreeToggle<cr>

" Tagbar
let g:tagbar_width=35
let g:tagbar_autofocus=1
nmap <F6> :TagbarToggle<CR>

" configure syntastic syntax checking to check on open as well as save
let g:syntastic_check_on_open=1
let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"]
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
" set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*

set autoindent
set cindent

" Doxygen
let g:DoxygenToolkit_briefTag_pre="@Synopsis  "
let g:DoxygenToolkit_paramTag_pre="@Param "
let g:DoxygenToolkit_returnTag="@Returns   "
let g:DoxygenToolkit_blockHeader="--------------------------------------------------------------------------"
let g:DoxygenToolkit_blockFooter="----------------------------------------------------------------------------"
let g:DoxygenToolkit_authorName="Mathias Lorente"


function! s:compile_and_run()
    exec 'w'
    if &filetype == 'c'
        exec "AsyncRun! gcc % -o %<; time ./%<"
    elseif &filetype == 'cpp'
        exec "AsyncRun! g++ -std=c++11 % -o %<; time ./%<"
    elseif &filetype == 'java'
        exec "AsyncRun! javac %; time java %<"
    elseif &filetype == 'sh'
        exec "AsyncRun! time bash %"
    elseif &filetype == 'python'
        exec "AsyncRun! time python %" shellescape(@%, 1)
    endif
endfunction

function s:Count_Words() range
    let lnum=a:firstline
    let n=0
    while lnum <= a:lastline
        let n += len(split(getline(lnum)))
        let lnum += 1
    endwhile
    echo "Found ".n." words."
endfunction


" You can use other keymappings like <C-l> instead of <CR> if you want to
" " use these mappings as default search and somtimes want to move cursor with
" " EasyMotion.
"function! s:incsearch_config(...) abort
"      return incsearch#util#deepextend(deepcopy({
"        \   'modules': [incsearch#config#easymotion#module({'overwin': 1})],
"        \   'keymap': {
"        \     "\<CR>": '<Over>(easymotion)'
"        \   },
"        \   'is_expr': 0
"        \ }), get(a:, 1, {}))
"endfunction

"noremap <silent><expr> /  incsearch#go(<SID>incsearch_config())
"noremap <silent><expr> ?  incsearch#go(<SID>incsearch_config({'command': '?'}))
"noremap <silent><expr> g/ incsearch#go(<SID>incsearch_config({'is_stay': 1}))



" function! s:config_easyfuzzymotion(...) abort
"       return extend(copy({
"        \   'converters': [incsearch#config#fuzzyword#converter()],
"        \   'modules': [incsearch#config#easymotion#module({'overwin': 1})],
"        \   'keymap': {"\<CR>": '<Over>(easymotion)'},
"        \   'is_expr': 0,
"        \   'is_stay': 1
"        \ }), get(a:, 1, {}))
"endfunction

"noremap <silent><expr> <Space>/ incsearch#go(<SID>config_easyfuzzymotion())