"文件:.vimrc
"--------v20201230-----------
"—注意首次运行如果出错
"—在vim命令行:
":PluginInstall
":UpdateRemotePlugins
"----------------------------
"去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
set nocompatible
set shortmess=atI " 启动的时候不显示那个援助乌干达儿童的提示
" 语法高亮
syntax on
set showcmd " 输入的命令显示出来,看的清楚些
set wildmenu
" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/vundle
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin(’~/some/path/here’)
" 让vundle管理插件版本,必须
Plugin ‘VundleVim/Vundle.vim’
Plugin ‘scrooloose/nerdtree’
"好看的状态栏
Plugin ‘vim-airline/vim-airline’
Plugin ‘vim-airline/vim-airline-themes’
" 括号匹配
Plugin ‘jiangmiao/auto-pairs’
" 主要为vimspector提供调试模板文件列表(.vim/vimspector_json/):cpp.json python.json shell.json
" File navigation
Plugin ‘junegunn/fzf’, { ‘dir’: ‘~/.fzf’, ‘do’: ‘./install --all’ }
Plugin ‘junegunn/fzf.vim’
Plugin ‘puremourning/vimspector’,{‘do’:’./install_gadget.py --force-enable-rust -enable-python --enable-go --enable-bash --enable-c’}
Plugin ‘ycm-core/YouCompleteMe’
" 你的所有插件需要在下面这行之前
call vundle#end() " 必须
filetype plugin indent on " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
let &t_TI = “”
let &t_TE = “”
let g:airline#extensions#hunks#enabled = 0
"vim 与 系统共享粘贴板
set clipboard=unnamedplus
" 主题
"colorscheme gruvbox
"set background=dark " 或者 set background=light
map ,q :call CompileRunGcc()
"map ,q :call CompileRunGcc()
" 一键执行
func! CompileRunGcc()
exec “w”
if &filetype == ‘c’
exec ‘!g++ % -g -o %<’
exec ‘!time ./%<’
elseif &filetype == ‘cpp’
exec ‘!g++ % -g -o %<’
exec ‘!time ./%<’
elseif &filetype == ‘python’
exec ‘!python %’
elseif &filetype == ‘sh’
:!time bash %
endif
endfunc
func! AddWatch()
let wordUnderCursor = expand("")
"exec ‘echo "add:"wordUnderCursor’
call vimspector#AddWatch(wordUnderCursor)
endfunc
map ,a :call AddWatch()
func! AddWatch2()
let var1=input(‘Enter watch expression:’,’’)
call vimspector#AddWatch(var1)
endfunc
map ,w :call AddWatch2()
map ,m :call Make()
func! Make()
if filereadable(“build/Makefile”)
exec “w”
exec ‘!cd %:p:h/build && make’
elseif filereadable(“Makefile”)
exec “w”
exec ‘!cd %:p:h && make’
endif
endfunc
" 键位的映射
" refresh .vimrc
noremap ,r :source ~/.vimrc
noremap ,n :call ShowNumberToggle()
func! ShowNumberToggle()
if &nu
set nonu
set mouse=v
else
set nu
set mouse=a
endif
endfunc
noremap :NERDTreeToggle
noremap :q
noremap :w
inoremap :q
inoremap :w
noremap ,l :spj:term ipython i %run
"noremap ,v :vsplit
"inoremap ,v :vspliti
"noremap ,h :split
"inoremap ,h :spliti
" ESC 与 CapsLk 功能互换
au VimEnter * silent! !xmodmap -e ‘clear Lock’ -e ‘keycode 0x42 = Escape’
au VimLeave * silent! !xmodmap -e ‘clear Lock’ -e ‘keycode 0x42 = Caps_Lock’
"cf 删除到
"ci 删除被包裹的内容
"cw 删除整个单词
"c6->向右删除6个字母
"c删除 d删除 y复制
"+i++ 块每行插入输入内容
"+r+ 块每行替换为输入内容
"l 左侧窗口
"r 右侧窗口
set guifont=Courier/20
set foldenable " 允许折叠
" 自动缩进
set autoindent
set cindent
" Tab键的宽度
set tabstop=2
set shiftwidth=2
" 匹配括号高亮的时间(单位是十分之一秒)
set matchtime=1
"设置编码
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
" 括号匹配
set showmatch
" 鼠标
set mouse=a
set selection=exclusive
set selectmode=mouse,key
" 显示行号
set number
" 高亮当前行
set cursorline
highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
highlight CursorColumn cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
" 设置空白字符的视觉提示
set list listchars=extends:❯,precedes:❮,tab:▸\ ,trail:˽
"autocmd vimenter * NERDTree "启动时打开插件
"退出编辑窗口就直接关闭目录树窗口
autocmd BufEnter * if 0 == len(filter(range(1, winnr(’$’)), ‘empty(getbufvar(winbufnr(v:val), “&bt”))’)) | qa! | endif
" ===
" === vimspector
" ===
let g:vimspector_enable_mappings = ‘HUMAN’
function! s:read_template_into_buffer(template)
" has to be a function to avoid the extra space fzf#run insers otherwise
execute ‘0r ~/.vim/vimspector_json/’.a:template
endfunction
command! -bang -nargs=* LoadVimSpectorJsonTemplate call fzf#run({
\ ‘source’: ‘ls -1 ~/.vim/vimspector_json’,
\ ‘down’: 20,
\ ‘sink’: function(‘read_template_into_buffer’)
\ })
" %:p:h返回当前调试源文件所在的目录
" 如果没有%:p:h时.vimspector.json会被默认存到vim/nvim启动目录
" ~$nvim test/main.cpp 没有%:p:h时则返回~/.vimspector.json 如果有 %:p:h/.vimspector.json返回~/test/.vimspector.json
noremap vs :tabe %:p:h/.vimspector.json:LoadVimSpectorJsonTemplate
sign define vimspectorBP text=🛑 texthl=Normal
sign define vimspectorBPDisabled text=🚫 texthl=Normal
sign define vimspectorPC text=👉 texthl=SpellBad
".ycm_extra_conf.py 是否提示加载1确认 0不需要确认
let g:ycm_confirm_extra_conf = 0
" 除/Documents/目录之外拒绝加载/目录内的.ycm_extra_conf.py文件
" 在例表前面的优先级高
let g:ycm_extra_conf_globlist = [’/Documents/*’,’!/*’]