个人vimrc文件配置:
" 设置编辑文件的内码是UTF-8
set enc=utf-8
" 设置vim不需要和vi兼容(一般默认,以防万一)
set nocompatible
" 导入 Vim 的示例配置(这会打开一些有用的选项,如语法加亮、搜索加亮、命令历史、记住上次的文件位置,等等)
source $VIMRUNTIME/vimrc_example.vim
" 不产生备份文件
set nobackup
" 保留跨会话撤销编辑的能力
set undodir=~/.vim/undodir
" 停止搜索高亮的键映射
nnoremap <silent> <F2> :nohlsearch<CR>
inoremap <silent> <F2> <C-O>:nohlsearch<CR>
" 默认显示行号
set nu
if !isdirectory(&undodir)
call mkdir(&undodir, 'p', 0700)
endif
" 设置缩进
au FileType c,cpp,objc setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=4 cinoptions=:0,g0,(0,w1
au FileType json setlocal expandtab shiftwidth=2 softtabstop=2
au FileType vim setlocal expandtab shiftwidth=2 softtabstop=2
" 加入记录系统头文件的标签文件和上层的 tags 文件
set tags=./tags;,tags,/usr/local/etc/systags
" 启用 man 插件
source $VIMRUNTIME/ftplugin/man.vim
set keywordprg=:Man
" 鼠标支持
if has('mouse')
if has('gui_running') || (&term =~ 'xterm' && !has('mac'))
" 此时鼠标拖拽就会在 Vim 里使用可视模式选择内容(只能在 Vim 里使用)
set mouse=a
else
set mouse=nvi
endif
endif
" 直接展示菜单
let do_syntax_sel_menu = 1
let do_no_lazyload_menus = 1
" 如果是8.0.0210前的版本,无需再手动设置paste
if !has('patch-8.0.210')
" 进入插入模式时启用括号粘贴模式
let &t_SI .= "\<Esc>[?2004h"
" 退出插入模式时停用括号粘贴模式
let &t_EI .= "\<Esc>[?2004l"
" 见到 <Esc>[200~ 就调用 XTermPasteBegin
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
" 设置使用 <Esc>[201~ 关闭粘贴模式
set pastetoggle=<Esc>[201~
" 开启粘贴模式
set paste
return ""
endfunction
endif
" 映射切换窗口快捷键
nnoremap <C-Tab> <C-W>w
inoremap <C-Tab> <C-O><C-W>w
nnoremap <C-S-Tab> <C-W>W
inoremap <C-S-Tab> <C-O><C-W>W
" 用于 quickfix、标签和文件跳转的键映射
nmap <F11> :cn<CR>
nmap <F12> :cp<CR>
nmap <M-F11> :copen<CR>
nmap <M-F12> :cclose<CR>
nmap <C-F11> :tn<CR>
nmap <C-F12> :tp<CR>
nmap <S-F11> :n<CR>
nmap <S-F12> :prev<CR>
" 和 asyncrun 一起用的异步 make 命令
command! -bang -nargs=* -complete=file Make AsyncRun -program=make @ <args>
" 异步运行命令时打开 quickfix 窗口,高度为 10 行
let g:asyncrun_open = 10
" 映射按键来快速启停构建
nnoremap <F5> :if g:asyncrun_status != 'running'<bar>
\if &modifiable<bar>
\update<bar>
\endif<bar>
\exec 'Make'<bar>
\else<bar>
\AsyncStop<bar>
\endif<CR>
" minpac包管理器
if exists('g:loaded_minpac')
" Minpac is loaded.
call minpac#init()
call minpac#add('k-takata/minpac', {'type': 'opt'})
" Other plugins
call minpac#add('tpope/vim-eunuch')
call minpac#add('preservim/nerdtree')
call minpac#add('majutsushi/tagbar')
call minpac#add('skywind3000/asyncrun.vim')
endif
if has('eval')
" Minpac commands
command! PackUpdate packadd minpac | source $MYVIMRC | call minpac#update('', {'do': 'call minpac#status()'})
command! PackClean packadd minpac | source $MYVIMRC | call minpac#clean()
command! PackStatus packadd minpac | source $MYVIMRC | call minpac#status()
endif
评论 (0)