77 lines
5.1 KiB
VimL
77 lines
5.1 KiB
VimL
set nocompatible " 去除 vi 一致性
|
||
set number " 打开行数查看
|
||
set cursorline " 光标所在的当前行高亮。
|
||
set linebreak " 只有遇到指定的符号(比如空格、连词号和其他标点符号),才发生折行。
|
||
|
||
set laststatus=2 " 是否显示状态栏。0 表示不显示,1 表示只在多窗口时显示,2 表示显示。
|
||
set ruler " 在状态栏显示光标的当前位置(位于哪一行哪一列)。
|
||
set undofile " 保留撤销历史。
|
||
set undodir=~/.vim/.undo " 设置操作历史文件的保存位置。
|
||
set encoding=utf-8 " 使用 utf-8 编码
|
||
set autoindent " 按下回车键后,下一行的缩进会自动跟上一行的缩进保持一致。
|
||
set smartindent " 智能缩进
|
||
set tabstop=4 " 按下 Tab 键时,Vim 显示的空格数。
|
||
filetype indent on " 开启文件类型检查,并且载入与该类型对应的缩进规则。
|
||
filetype on " 开启文件类型检测
|
||
filetype plugin indent on " 开启文件类型插件检测
|
||
syntax on " 开启语法高亮
|
||
|
||
set showmode " 在底部显示,当前处于命令模式还是插入模式。
|
||
set showcmd " 命令模式下,在底部显示,当前键入的指令。比如,键入的指令是 2y3d,那么底部就会显示 2y3,当键入 d 的时候,操作完成,显示消失。
|
||
set mouse= " 支持使用鼠标(但这样会导致无法复制!)
|
||
|
||
let g:airline#extensions#tabline#enabled = 1 " 设置开启 tab 样式
|
||
let g:airline#extensions#tabline#formatter = 'jsformatter' " 设置默认 tab 栏样式
|
||
let g:airline_theme='angr' " 选择配色
|
||
|
||
let g:NERDSpaceDelims = 1 " 默认情况下,在注释分隔符后添加空格
|
||
let g:NERDCompactSexyComs = 1 " 使用紧凑的语法来美化多行注释
|
||
let g:NERDTrimTrailingWhitespace = 1 " 启用在取消注释时修剪尾部空白的功能
|
||
let g:NERDToggleCheckAllLines = 1 " 启用 NERDCommenterToggle 以检查所有选定行是否已注释
|
||
|
||
" 树状目录(preservim/nerdtree): 在vim侧栏启动目录
|
||
autocmd StdinReadPre * let s:std_in=1
|
||
" 使用目录启动时自动启动侧栏
|
||
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') |
|
||
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif
|
||
" 在没有文件参数的情况下启动
|
||
autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | endif
|
||
" 定义树状目录的快捷键
|
||
nnoremap <leader>n :NERDTreeFocus<CR>
|
||
nnoremap <C-n> :NERDTree<CR>
|
||
nnoremap <C-t> :NERDTreeToggle<CR>
|
||
nnoremap <C-f> :NERDTreeFind<CR>
|
||
" 如果目录是最后一个窗口则自动退出vim
|
||
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
|
||
" 防止缓冲区目录冲突
|
||
autocmd BufEnter * if winnr() == winnr('h') && bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
|
||
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
|
||
let g:NERDTreeFileLines = 1 " 显示文件行
|
||
|
||
" 标签生成器(ludovicchabant/vim-gutentags): 在特定目录下自动调用ctags生成标签
|
||
set statusline+=%{gutentags#statusline()} " 在状态行中打印字符串“tag”,当Gutengs在后台生成内容时
|
||
let g:gutentags_project_root = ['.git', '.svn', 'Makefile'] " 工程根目录标识(打开包含如下文件或目录是激活Gutentag)。
|
||
let g:gutentags_ctags_tagfile = '.tags' " 生成数据文件名称。
|
||
let g:gutentags_cache_dir = expand('~/.config/xunmi/tag') " 指定缓存根目录,ctags保存在该目录下。
|
||
"Ctags配置参数。
|
||
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
|
||
let g:gutentags_ctags_extra_args += ['--c++-kinds=+pxI']
|
||
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
|
||
|
||
" 模糊搜索(Yggdroot/LeaderF)
|
||
let g:Lf_HideHelp = 1 " 在正常模式下不显示帮助
|
||
let g:Lf_UseCache = 0 " 不使用缓存, 避免更新文件后搜索异常
|
||
let g:Lf_UseVersionControlTool = 1 " 使用版本控制工具(如Git)来获取文件的状态信息
|
||
let g:Lf_IgnoreCurrentBufferName = 1 " 忽略当前的缓冲区名称
|
||
let g:Lf_WindowPosition = 'popup' " 窗口模式
|
||
let g:Lf_ShortcutF = "<leader>ff" " 打开LeaderF搜索界面
|
||
noremap <leader>fb :<C-U><C-R>=printf("Leaderf buffer %s", "")<CR><CR>
|
||
noremap <leader>fm :<C-U><C-R>=printf("Leaderf mru %s", "")<CR><CR>
|
||
noremap <leader>ft :<C-U><C-R>=printf("Leaderf bufTag %s", "")<CR><CR>
|
||
noremap <leader>fl :<C-U><C-R>=printf("Leaderf line %s", "")<CR><CR>
|
||
noremap <C-B> :<C-U><C-R>=printf("Leaderf! rg --current-buffer -e %s ", expand("<cword>"))<CR>
|
||
noremap <C-F> :<C-U><C-R>=printf("Leaderf! rg -e %s ", expand("<cword>"))<CR>
|
||
" 按字面意思搜索视觉选择的文本
|
||
xnoremap gf :<C-U><C-R>=printf("Leaderf! rg -F -e %s ", leaderf#Rg#visual())<CR>
|
||
noremap go :<C-U>Leaderf! rg --recall<CR>
|