內容包含
vim-plug,異步插件管理,總之就是下起來快。
ale,異步語法檢查
LeaderF,快速查找文件
completor.vim vim8的快速補全
markdown預覽
common setting
startup開始
使打開vimrc折疊,默認折疊是{{{
" 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')
中寫入,路徑可以改為你要放的插件文件夾路徑
美化插件
" +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上的vimrc
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 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()
" }}}