Vim插件之ale,LeaderF,completor.vim(win10)配置

內容包含

vim-plug,異步插件管理,總之就是下起來快。
ale,異步語法檢查
LeaderF,快速查找文件
completor.vim vim8的快速補全java

markdown預覽python

common setting

startup開始

使打開vimrc摺疊,默認摺疊是{{{c++

" Startup {{{
filetype indent plugin on

augroup vimrcEx
    au!
    autocmd FileType text setlocal textwidth=78
augroup END

" vim 文件摺疊方式爲 marker
augroup ft_vim
    au!
    autocmd FileType vim setlocal foldmethod=marker

    " 打開文件老是定位到上次編輯的位置
    autocmd BufReadPost *
      \ if line("'\"") > 1 && line("'\"") <= line("$") |
      \   exe "normal! g`\"" |
      \ endif
augroup END
" }}}

General經常使用

" General {{{
set nocompatible
set nobackup
set noswapfile
set history=1024
"自動設置當前目錄爲正在編輯的目錄
cd D:\Code\VimCode
set autochdir
autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /

set whichwrap=b,s,<,>,[,]
set nobomb
set backspace=indent,eol,start whichwrap+=<,>,[,]
" Vim 的默認寄存器和系統剪貼板共享
set clipboard+=unnamed
" 設置 alt 鍵不映射到菜單欄
set winaltkeys=no

"關閉提示音
set noeb
set vb t_vb=
" }}}

Lang語言編碼

" Lang & Encoding {{{
set fenc= 
set fileencodings=utf-8,gb18030,utf-16,big5 
set encoding=utf-8
set langmenu=zh_CN
let $LANG = 'en_US.UTF-8'
"解決consle輸出亂碼
language messages zh_CN.utf-8
"解決菜單亂碼
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" }}}

GUI界面

" GUI {{{
" 設置 gvim 顯示字體
"set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h12
set guifont=Fira_Code:h12
set gfw=幼圓:h12:cGB2312

set cursorline
set hlsearch
" 開啓實時搜索功能
set incsearch
" 搜索時大小寫不敏感
set ignorecase
set number
"Show related row numbers
set relativenumber
"在光標接近底端或頂端時,自動下滾或上滾
set scrolloff=10  
" 窗口大小
set lines=30 columns=80
" 分割出來的窗口位於當前窗口下邊/右邊
set splitbelow
set splitright
"不顯示工具/菜單欄
set guioptions-=T
set guioptions-=m
set guioptions-=L
set guioptions-=r
set guioptions-=b
" }}}

Format格式

" Format {{{
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"自動摺疊
set foldmethod=marker
syntax on
" }}}

Keyboard setting 映射

" Keyboard setting {{{

"set my leader
"let mapleader=";"
let mapleader="\<Space>"

"打開vimrc快捷鍵
nnoremap <leader>ev  :split $MYVIMRC<cr>
"運行當前vimrc腳本
nnoremap<leader>sv  :source $MYVIMRC<cr>

" 打開當前目錄 windows
nmap <silent> <leader>ex :!start explorer %:p:h<CR>
" 打開當前目錄CMD
nmap <silent> <leader>cmd :!start cmd /k cd %:p:h<cr>

" 複製當前文件/路徑到剪貼板
nmap ,fn :let @*=substitute(expand("%"), "/", "\\", "g")<CR>
nmap ,fp :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR>

" 一鍵運行
"編譯運行
map <F5> :call CompileRunGcc()<CR>  
func! CompileRunGcc()  
    exec "w"  
    if &filetype == 'c'  
        exec "!g++ % -o %<"  
        exec "! %<"  
    elseif &filetype == 'cpp'  
        exec "!g++ % -o %<"  
        exec "! %<"  
    elseif &filetype == 'java'   
        exec "!javac %"   
        exec "!java %<"  
    elseif &filetype == 'py'  
        exec "!python"
    elseif &filetype == 'sh'  
        :!%  
    endif  
endfunc 
" }}}

Plug List & setting

注意,如下插件都要在call plug#begin('D:\Editor\Vim\vimfiles\plugged')中寫入,路徑能夠改成你要放的插件文件夾路徑git

美化插件

" +beautiful {{{
"美化狀態欄
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" airline-setting {{{
"增強版狀態欄
let g:airline_theme='molokai'
"使用powerline打過補丁的字體
let g:airline_powerline_fonts = 1
"關閉狀態顯示空白符號計數,這個對我用處不大"
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
"開啓tabline
let g:airline#extensions#tabline#enabled = 1
"tabline中buffer顯示編號
let g:airline#extensions#tabline#buffer_nr_show = 1
" }}}

"打開界面
Plug 'mhinz/vim-startify'
"theme color
Plug 'flazz/vim-colorschemes'
Plug 'tomasr/molokai'
Plug 'morhetz/gruvbox'
Plug 'nanotech/jellybeans.vim'
" theme-setting {{{
" 配色方案
set background=dark
"colorscheme jellybeans
"colorscheme molokai
"colorscheme desert
colorscheme gruvbox
" }}}
"中文幫助文檔
Plug 'yianwillis/vimcdoc'
"}}}

編寫插件,nerdtree,ale,LeaderF等

" +programming {{{

"文件樹
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
" 文件樹設置 {{{
" 關閉NERDTree快捷鍵
map <leader>t :NERDTreeToggle<CR>
""當NERDTree爲剩下的惟一窗口時自動關閉
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
""修改樹的顯示圖標
let g:NERDTreeDirArrowExpandable = '►'
let g:NERDTreeDirArrowCollapsible = '▼'
let NERDTreeAutoCenter=1
" 顯示行號
let NERDTreeShowLineNumbers=1
" 是否顯示隱藏文件
let NERDTreeShowHidden=1
" 設置寬度
let NERDTreeWinSize=25
" 在終端啓動vim時,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的顯示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }
" }}}

"文件搜索
Plug 'Yggdroot/LeaderF'

"異步語法檢查
Plug 'w0rp/ale'
" ale-setting {{{
let g:ale_set_highlights = 0
"自定義error和warning圖標
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自帶的狀態欄中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"顯示Linter名稱,出錯或警告等相關信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"打開文件時不進行檢查
let g:ale_lint_on_enter = 0

"普通模式下,sp前往上一個錯誤或警告,sn前往下一個錯誤或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>s觸發/關閉語法檢查
nmap <Leader>s :ALEToggle<CR>
"<Leader>d查看錯誤或警告的詳細信息
nmap <Leader>d :ALEDetail<CR>
"使用clang對c和c++進行語法檢查,對python使用pylint進行語法檢查
let g:ale_linters = {
\   'c++': ['clang'],
\   'c': ['clang'],
\   'python': ['pylint'],
\}
" }}}

"括號補全
Plug 'jiangmiao/auto-pairs'

"補全
Plug 'maralla/completor.vim'
Plug 'maralla/completor-neosnippet'
" 補全設置 {{{
"使用tab補全
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"
" }}}

"註釋
Plug 'scrooloose/nerdcommenter'
" 註釋說明 {{{
"<leader>cc   加註釋
"<leader>cu   解開註釋
"<leader>c<space>  加上/解開註釋, 智能判斷
"<leader>cy   先複製, 再註解(p能夠進行黏貼)
" 註釋的時候自動加個空格, 強迫症必配
"let g:NERDSpaceDelims=1
" }}}

"}}}

語言插件

" +lag {{{

" markdown
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
Plug 'kannokanno/previm'
Plug 'tyru/open-browser.vim'
" markdown-setting {{{
"使用:PrevimOpen就能夠預覽
" }}}

插件彙總

" PluList {{{
call plug#begin('D:\Editor\Vim\vimfiles\plugged')

filetype plugin indent on

" +beautiful {{{
"美化狀態欄
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" airline-setting {{{
"增強版狀態欄
let g:airline_theme='molokai'
"使用powerline打過補丁的字體
let g:airline_powerline_fonts = 1
"關閉狀態顯示空白符號計數,這個對我用處不大"
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
"開啓tabline
let g:airline#extensions#tabline#enabled = 1
"tabline中buffer顯示編號
let g:airline#extensions#tabline#buffer_nr_show = 1
" }}}

"打開界面
Plug 'mhinz/vim-startify'
"theme color
Plug 'flazz/vim-colorschemes'
Plug 'tomasr/molokai'
Plug 'morhetz/gruvbox'
Plug 'nanotech/jellybeans.vim'
" theme-setting {{{
" 配色方案
set background=dark
"colorscheme jellybeans
"colorscheme molokai
"colorscheme desert
colorscheme gruvbox
" }}}

"中文幫助文檔
Plug 'yianwillis/vimcdoc'
"}}}

" +programming {{{

"文件樹
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
" 文件樹設置 {{{
" 關閉NERDTree快捷鍵
map <leader>t :NERDTreeToggle<CR>
""當NERDTree爲剩下的惟一窗口時自動關閉
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
""修改樹的顯示圖標
let g:NERDTreeDirArrowExpandable = '►'
let g:NERDTreeDirArrowCollapsible = '▼'
let NERDTreeAutoCenter=1
" 顯示行號
let NERDTreeShowLineNumbers=1
" 是否顯示隱藏文件
let NERDTreeShowHidden=1
" 設置寬度
let NERDTreeWinSize=25
" 在終端啓動vim時,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的顯示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }
" }}}

"文件搜索
Plug 'Yggdroot/LeaderF'

"異步語法檢查
Plug 'w0rp/ale'
" ale-setting {{{
let g:ale_set_highlights = 0
"自定義error和warning圖標
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自帶的狀態欄中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"顯示Linter名稱,出錯或警告等相關信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"打開文件時不進行檢查
let g:ale_lint_on_enter = 0

"普通模式下,sp前往上一個錯誤或警告,sn前往下一個錯誤或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>s觸發/關閉語法檢查
nmap <Leader>s :ALEToggle<CR>
"<Leader>d查看錯誤或警告的詳細信息
nmap <Leader>d :ALEDetail<CR>
"使用clang對c和c++進行語法檢查,對python使用pylint進行語法檢查
let g:ale_linters = {
\   'c++': ['clang'],
\   'c': ['clang'],
\   'python': ['pylint'],
\}
" }}}

"括號補全
Plug 'jiangmiao/auto-pairs'

"補全
Plug 'maralla/completor.vim'
Plug 'maralla/completor-neosnippet'
" 補全設置 {{{
"使用tab補全
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"
" }}}

"註釋
Plug 'scrooloose/nerdcommenter'
" 註釋說明 {{{
"<leader>cc   加註釋
"<leader>cu   解開註釋
"<leader>c<space>  加上/解開註釋, 智能判斷
"<leader>cy   先複製, 再註解(p能夠進行黏貼)
" 註釋的時候自動加個空格, 強迫症必配
"let g:NERDSpaceDelims=1
" }}}

"}}}

" +lang {{{

" markdown
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
Plug 'kannokanno/previm'
Plug 'tyru/open-browser.vim'
" markdown-setting {{{
"使用:PrevimOpen就能夠預覽
" }}}

"}}}

call plug#end()
" }}}

代碼

可能有更新,能夠看我github上的vimrcgithub

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"                           common setting                               "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Startup {{{
filetype indent plugin on

augroup vimrcEx
    au!
    autocmd FileType text setlocal textwidth=78
augroup END

" vim 文件摺疊方式爲 marker
augroup ft_vim
    au!
    autocmd FileType vim setlocal foldmethod=marker

    " 打開文件老是定位到上次編輯的位置
    autocmd BufReadPost *
      \ if line("'\"") > 1 && line("'\"") <= line("$") |
      \   exe "normal! g`\"" |
      \ endif
augroup END
" }}}

" General {{{
set nocompatible
set nobackup
set noswapfile
set history=1024
"自動設置當前目錄爲正在編輯的目錄
cd D:\Code\VimCode
set autochdir
autocmd BufEnter * silent! lcd %:p:h:gs/ /\\ /

set whichwrap=b,s,<,>,[,]
set nobomb
set backspace=indent,eol,start whichwrap+=<,>,[,]
" Vim 的默認寄存器和系統剪貼板共享
set clipboard+=unnamed
" 設置 alt 鍵不映射到菜單欄
set winaltkeys=no

"關閉提示音
set noeb
set vb t_vb=
" }}}

" Lang & Encoding {{{
set fenc= 
set fileencodings=utf-8,gb18030,utf-16,big5 
set encoding=utf-8
set langmenu=zh_CN
let $LANG = 'en_US.UTF-8'
"解決consle輸出亂碼
language messages zh_CN.utf-8
"解決菜單亂碼
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
" }}}

" GUI {{{
" 設置 gvim 顯示字體
"set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h12
set guifont=Fira_Code:h12
set gfw=幼圓:h12:cGB2312

set cursorline
set hlsearch
" 開啓實時搜索功能
set incsearch
" 搜索時大小寫不敏感
set ignorecase
set number
"Show related row numbers
set relativenumber
"在光標接近底端或頂端時,自動下滾或上滾
set scrolloff=10  
" 窗口大小
set lines=30 columns=80
" 分割出來的窗口位於當前窗口下邊/右邊
set splitbelow
set splitright
"不顯示工具/菜單欄
set guioptions-=T
set guioptions-=m
set guioptions-=L
set guioptions-=r
set guioptions-=b
" }}}

" Format {{{
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"自動摺疊
set foldmethod=marker
syntax on
" }}}

" Keyboard setting {{{

"set my leader
"let mapleader=";"
let mapleader="\<Space>"

"打開vimrc快捷鍵
nnoremap <leader>ev  :split $MYVIMRC<cr>
"運行當前vimrc腳本
nnoremap<leader>sv  :source $MYVIMRC<cr>

" 打開當前目錄 windows
nmap <silent> <leader>ex :!start explorer %:p:h<CR>
" 打開當前目錄CMD
nmap <silent> <leader>cmd :!start cmd /k cd %:p:h<cr>

" 複製當前文件/路徑到剪貼板
nmap ,fn :let @*=substitute(expand("%"), "/", "\\", "g")<CR>
nmap ,fp :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR>

" 一鍵運行
"編譯運行
map <F5> :call CompileRunGcc()<CR>  
func! CompileRunGcc()  
    exec "w"  
    if &filetype == 'c'  
        exec "!g++ % -o %<"  
        exec "! %<"  
    elseif &filetype == 'cpp'  
        exec "!g++ % -o %<"  
        exec "! %<"  
    elseif &filetype == 'java'   
        exec "!javac %"   
        exec "!java %<"  
    elseif &filetype == 'py'  
        exec "!python"
    elseif &filetype == 'sh'  
        :!%  
    endif  
endfunc 
" }}}


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"                              Plug                                     "
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plug List {{{
call plug#begin('D:\Editor\Vim\vimfiles\plugged')

filetype plugin indent on

" +beautiful {{{
"美化狀態欄
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" airline-setting {{{
"增強版狀態欄
let g:airline_theme='molokai'
"使用powerline打過補丁的字體
let g:airline_powerline_fonts = 1
"關閉狀態顯示空白符號計數,這個對我用處不大"
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#whitespace#symbol = '!'
"開啓tabline
let g:airline#extensions#tabline#enabled = 1
"tabline中buffer顯示編號
let g:airline#extensions#tabline#buffer_nr_show = 1
" }}}

"打開界面
Plug 'mhinz/vim-startify'
"theme color
Plug 'flazz/vim-colorschemes'
Plug 'tomasr/molokai'
Plug 'morhetz/gruvbox'
Plug 'nanotech/jellybeans.vim'
" theme-setting {{{
" 配色方案
set background=dark
"colorscheme jellybeans
"colorscheme molokai
"colorscheme desert
colorscheme gruvbox
" }}}

"中文幫助文檔
Plug 'yianwillis/vimcdoc'
"}}}

" +programming {{{

"文件樹
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
" 文件樹設置 {{{
" 關閉NERDTree快捷鍵
map <leader>t :NERDTreeToggle<CR>
""當NERDTree爲剩下的惟一窗口時自動關閉
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
""修改樹的顯示圖標
let g:NERDTreeDirArrowExpandable = '►'
let g:NERDTreeDirArrowCollapsible = '▼'
let NERDTreeAutoCenter=1
" 顯示行號
let NERDTreeShowLineNumbers=1
" 是否顯示隱藏文件
let NERDTreeShowHidden=1
" 設置寬度
let NERDTreeWinSize=25
" 在終端啓動vim時,共享NERDTree
let g:nerdtree_tabs_open_on_console_startup=1
" 忽略一下文件的顯示
let NERDTreeIgnore=['\.pyc','\~$','\.swp']
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ 'Ignored'   : '☒',
    \ "Unknown"   : "?"
    \ }
" }}}

"文件搜索
Plug 'Yggdroot/LeaderF'

"異步語法檢查
Plug 'w0rp/ale'
" ale-setting {{{
let g:ale_set_highlights = 0
"自定義error和warning圖標
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自帶的狀態欄中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"顯示Linter名稱,出錯或警告等相關信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"打開文件時不進行檢查
let g:ale_lint_on_enter = 0

"普通模式下,sp前往上一個錯誤或警告,sn前往下一個錯誤或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>s觸發/關閉語法檢查
nmap <Leader>s :ALEToggle<CR>
"<Leader>d查看錯誤或警告的詳細信息
nmap <Leader>d :ALEDetail<CR>
"使用clang對c和c++進行語法檢查,對python使用pylint進行語法檢查
let g:ale_linters = {
\   'c++': ['clang'],
\   'c': ['clang'],
\   'python': ['pylint'],
\}
" }}}

"括號補全
Plug 'jiangmiao/auto-pairs'

"補全
Plug 'maralla/completor.vim'
Plug 'maralla/completor-neosnippet'
" 補全設置 {{{
"使用tab補全
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"
" }}}

"註釋
Plug 'scrooloose/nerdcommenter'
" 註釋說明 {{{
"<leader>cc   加註釋
"<leader>cu   解開註釋
"<leader>c<space>  加上/解開註釋, 智能判斷
"<leader>cy   先複製, 再註解(p能夠進行黏貼)
" 註釋的時候自動加個空格, 強迫症必配
"let g:NERDSpaceDelims=1
" }}}

"}}}

" +lang {{{

" markdown
Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown'
Plug 'kannokanno/previm'
Plug 'tyru/open-browser.vim'
" markdown-setting {{{
"使用:PrevimOpen就能夠預覽
" }}}

"}}}

call plug#end()
" }}}
相關文章
相關標籤/搜索