demo/配置/vimrc

78 lines
4.9 KiB
VimL
Raw Permalink Normal View History

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
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>
" 标签栏
nnoremap <C-g> :TagbarToggle<CR>