✨ vim configs
This commit is contained in:
parent
b0da5bb30f
commit
5c14c212c7
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,272 @@
|
|||
"F3文件浏览 F5运行 F10编译 F12行号 leader键为\ \s关闭ale语法检查 \d显示错误/警告详细信息
|
||||
"visual模式下选中文本\cs注释\cu取消
|
||||
"中文支持
|
||||
set encoding=utf-8
|
||||
set fileencoding=utf-8
|
||||
set fileencodings=utf-8,ucs-bom,chinese
|
||||
"代码高亮
|
||||
syntax on
|
||||
"行号设置
|
||||
set nu
|
||||
noremap <silent> <F12> :call SetNU()<CR>
|
||||
func! SetNU()
|
||||
if &number!=0
|
||||
exec "set nonu"
|
||||
else
|
||||
exec "set nu"
|
||||
endif
|
||||
endfunc
|
||||
"代码管理
|
||||
call plug#begin('~/.vim/plugged')
|
||||
"符号补全
|
||||
Plug 'jiangmiao/auto-pairs'
|
||||
"代码检查
|
||||
Plug 'dense-analysis/ale'
|
||||
"文件浏览
|
||||
Plug 'preservim/NERDTree'
|
||||
"运行信息输出
|
||||
Plug 'skywind3000/asyncrun.vim'
|
||||
"tags自动生成
|
||||
Plug 'ludovicchabant/vim-gutentags'
|
||||
"代码块注释
|
||||
Plug 'preservim/nerdcommenter'
|
||||
"中文文档
|
||||
Plug 'yianwillis/vimcdoc'
|
||||
"vim airline
|
||||
Plug 'vim-airline/vim-airline'
|
||||
"中文输入法
|
||||
Plug 'ZSaberLv0/ZFVimIM'
|
||||
Plug 'ZSaberLv0/ZFVimJob'
|
||||
Plug 'ZSaberLv0/ZFVimIM_openapi'
|
||||
"git相关命令
|
||||
Plug 'tpope/vim-fugitive'
|
||||
"coc C/C++代码补全
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
call plug#end()
|
||||
"tags追加
|
||||
set tags+=~/.cache/tags
|
||||
" 设置tab补全
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#pum#confirm() :
|
||||
\ CheckBackspace() ? "\<Tab>" :
|
||||
\ coc#refresh()
|
||||
inoremap <silent><expr> <ESC>
|
||||
\ coc#pum#visible() ? coc#pum#stop():"\<ESC>"
|
||||
" function! CleverTab()
|
||||
" if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'
|
||||
" return "\<Tab>"
|
||||
" else
|
||||
" return "\<C-N>"
|
||||
" endif
|
||||
" endfunction
|
||||
" inoremap <Tab> <C-R>=CleverTab()<CR>
|
||||
" inoremap <silent><expr> <TAB>
|
||||
" \ coc#pum#visible() ? coc#pum#next(1) :
|
||||
" \ CheckBackspace() ? "\<Tab>" :
|
||||
" \ coc#refresh()
|
||||
" inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
|
||||
|
||||
" Make <CR> to accept selected completion item or notify coc.nvim to format
|
||||
" <C-g>u breaks current undo, please make your own choice
|
||||
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
function! CheckBackspace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
" NERDTree命令映射
|
||||
map <F3> :NERDTreeMirror<CR>
|
||||
map <F3> :NERDTreeToggle<CR>
|
||||
"ale settings{{
|
||||
"始终开启标志列
|
||||
let g:ale_sign_column_always = 1
|
||||
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%]'
|
||||
"普通模式下,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>
|
||||
"打开文件时不进行检查
|
||||
let g:ale_lint_on_enter = 0
|
||||
"使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
|
||||
let g:ale_linters = {
|
||||
\ 'c++': ['clang'],
|
||||
\ 'c': ['clang'],
|
||||
\ 'python': ['pylint'],
|
||||
\ 'java': [''],
|
||||
\}
|
||||
"}}
|
||||
" 自动打开高度为具体值的 quickfix 窗口
|
||||
let g:asyncrun_open=15
|
||||
" 运行前保存文件
|
||||
let g:asyncrun_save=1
|
||||
" 用<f10>编译
|
||||
noremap <silent> <F10> :call CompileBuild()<CR>
|
||||
func! CompileBuild()
|
||||
exec "w"
|
||||
if &filetype == 'c'
|
||||
exec ':AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 gcc -O3 -ggdb -Wall "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)"'
|
||||
elseif &filetype == 'cpp'
|
||||
exec ':AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 g++ -O3 -ggdb -Wall "$(VIM_FILEPATH)" -o "$(VIM_FILEDIR)/$(VIM_FILENOEXT)" -lpthread'
|
||||
elseif &filetype == 'go'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 go build $(VIM_FILEDIR)/$(VIM_FILENOEXT)"
|
||||
elseif &filetype == 'java'
|
||||
exec ':AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 javac --module-path "/data/data/com.termux/files/usr/opt/javafx-sdk-20.0.2/lib/" --add-modules="javafx.controls" "$(VIM_FILEPATH)"'
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" 用<F5>运行
|
||||
noremap <silent> <F5> :call CompileRun()<CR>
|
||||
func! CompileRun()
|
||||
exec "w"
|
||||
if &filetype == 'c'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 $(VIM_FILEDIR)/$(VIM_FILENOEXT)"
|
||||
elseif &filetype == 'cpp'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 $(VIM_FILEDIR)/$(VIM_FILENOEXT)"
|
||||
elseif &filetype == 'python'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 python3 $(VIM_FILEPATH)"
|
||||
elseif &filetype == 'html'
|
||||
exec ":AsyncRun -mode=term -pos=hide open $(VIM_FILEPATH)"
|
||||
elseif &filetype == 'go'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 go run $(VIM_FILEPATH)"
|
||||
elseif &filetype == 'javascript'
|
||||
exec ":AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 node $(VIM_FILEPATH)"
|
||||
elseif &filetype == 'java'
|
||||
exec ':AsyncRun -mode=term -pos=bottom -rows=10 -focus=0 java --module-path "/data/data/com.termux/files/usr/opt/javafx-sdk-20.0.2/lib/" --add-modules="javafx.controls" -cp $(VIM_FILEDIR) $(VIM_FILENOEXT)'
|
||||
endif
|
||||
endfunc
|
||||
"gutentags settings {{
|
||||
" gutentags 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归
|
||||
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project','.sln']
|
||||
|
||||
" 所生成的数据文件的名称
|
||||
let g:gutentags_ctags_tagfile = '.tags'
|
||||
|
||||
" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录
|
||||
let s:vim_tags = expand('~/.cache/tags')
|
||||
let g:gutentags_cache_dir = s:vim_tags
|
||||
|
||||
" 配置 ctags 的参数
|
||||
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
|
||||
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
|
||||
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
|
||||
|
||||
" 检测 ~/.cache/tags 不存在就新建
|
||||
if !isdirectory(s:vim_tags)
|
||||
silent! call mkdir(s:vim_tags, 'p')
|
||||
endif
|
||||
"}}
|
||||
"tags setting
|
||||
" set tags=./.tags;,.tags
|
||||
"NERDCommenter settings
|
||||
" Add spaces after comment delimiters by default
|
||||
let g:NERDSpaceDelims = 1
|
||||
"add tab space
|
||||
set ts=4
|
||||
set softtabstop=4
|
||||
set shiftwidth=4
|
||||
set expandtab
|
||||
set autoindent
|
||||
"vim-airline settings
|
||||
set laststatus=2 "永远显示状态栏
|
||||
let g:airline#extensions#tabline#enabled = 1
|
||||
"文件栏设置
|
||||
noremap <silent><S-n> :tabnew<cr>
|
||||
noremap <silent><S-d> :tabclose<cr>
|
||||
noremap <silent><S-Tab> :bn!<CR>
|
||||
"save file
|
||||
nmap <C-s> :w<cr>
|
||||
imap <C-s> <esc>:w<cr>
|
||||
"undo settings
|
||||
set undolevels=5000
|
||||
nmap <silent><Leader>z :undo<cr>
|
||||
imap <silent><Leader>z <esc>:call Insert_Undo()<cr>
|
||||
func! Insert_Undo()
|
||||
let pos = getpos(".")
|
||||
undo
|
||||
startinsert
|
||||
let pos[2] +=1
|
||||
call setpos(".",pos)
|
||||
endfunc
|
||||
"设置中文/英文输入法数据库
|
||||
let g:ZFVimIM_openapi_enable=1
|
||||
let g:ZFVimIM_openapi_word_type='sentence'
|
||||
function! s:ChineseDb()
|
||||
let db = ZFVimIM_dbInit({
|
||||
\ 'name' : 'ChineseDb',
|
||||
\ })
|
||||
call ZFVimIM_cloudRegister({
|
||||
\ 'mode' : 'local',
|
||||
\ 'dbId' : db['dbId'],
|
||||
\ 'repoPath' : '~/.vim/plugged/misc',
|
||||
\ 'dbFile' : '/pinyin.txt',
|
||||
\ 'dbCountFile' : '/pinyin_count.txt',
|
||||
\ })
|
||||
endfunction
|
||||
function! s:EnglishDb()
|
||||
let db = ZFVimIM_dbInit({
|
||||
\ 'name' : 'EnglishDb',
|
||||
\ })
|
||||
call ZFVimIM_cloudRegister({
|
||||
\ 'mode' : 'local',
|
||||
\ 'dbId' : db['dbId'],
|
||||
\ 'repoPath' : '~/.vim/plugged/misc',
|
||||
\ 'dbFile' : '/english.txt',
|
||||
\ 'dbCountFile' : '/english_count.txt',
|
||||
\ })
|
||||
endfunction
|
||||
autocmd User ZFVimIM_event_OnDbInit call s:EnglishDb()
|
||||
autocmd User ZFVimIM_event_OnDbInit call s:ChineseDb()
|
||||
"设置标点符号转换
|
||||
let g:ZFVimIM_symbolMap = {
|
||||
\ ' ' : [''],
|
||||
\ '`' : ['·'],
|
||||
\ '!' : ['!'],
|
||||
\ '$' : ['¥'],
|
||||
\ '^' : ['……'],
|
||||
\ '-' : [''],
|
||||
\ '_' : ['——'],
|
||||
\ '(' : ['('],
|
||||
\ ')' : [')'],
|
||||
\ '[' : ['【'],
|
||||
\ ']' : ['】'],
|
||||
\ '<' : ['《'],
|
||||
\ '>' : ['》'],
|
||||
\ '\' : ['、'],
|
||||
\ '/' : ['、'],
|
||||
\ ';' : [';'],
|
||||
\ ':' : [':'],
|
||||
\ ',' : [','],
|
||||
\ '.' : ['。'],
|
||||
\ '?' : ['?'],
|
||||
\ "'" : ['‘', '’'],
|
||||
\ '"' : ['“', '”'],
|
||||
\ '0' : [''],
|
||||
\ '1' : [''],
|
||||
\ '2' : [''],
|
||||
\ '3' : [''],
|
||||
\ '4' : [''],
|
||||
\ '5' : [''],
|
||||
\ '6' : [''],
|
||||
\ '7' : [''],
|
||||
\ '8' : [''],
|
||||
\ '9' : [''],
|
||||
\ }
|
||||
"自动补全相关设置
|
||||
autocmd FileType python set omnifunc=pythoncomplete#Complete
|
||||
autocmd FileType c set omnifunc=ccomplete#Complete
|
||||
autocmd FileType cpp set omnifunc=omni#cpp#complete#Main
|
||||
"使用\+q代替esc
|
||||
imap <Leader>q <esc>
|
||||
vmap <Leader>q <esc>
|
||||
Loading…
Reference in New Issue