冷门Vim插件配置

积累了一段时间的配置,分享几个相对冷门Vim插件相关的配置。

首先是completor.vim,是一款支持异步和多种语言的补全插件,插件本身支持ultisnips代码片段补全,但是选中补全之后还得按键来展开代码片段,所以想让它在补全完之后自动展开:

func! s:ultisnips_expand()
    if has_key(v:completed_item, 'menu')
        if v:completed_item['menu'] =~# '^\[snip\]'
            call UltiSnips#ExpandSnippet()
        endif
    endif
endfunc
au! CompleteDone * call s:ultisnips_expand()

之后是vim-doge,是一款根据函数声明来生成注释的插件,原来生成C/C++注释时不需要clang,现在可能作者觉得正则太麻烦所以直接使用python的clang模块来生成,由于机器本身安装了Qt Creator带了libclang.dll,所以想不通过修改源码的方式设置libclang.dll

func s:set_clang_library()
    if pyxeval("'Config' in locals().keys()") == 0
        pyx from clang.cindex import Config
        pyx Config.set_library_file(r'D:\Develop\QtCreator\bin\libclang.dll')
    endif
endfunc
au FileType c,cpp call s:set_clang_library()

接下来是vim-illuminate,是一款高亮当前光标所在单词的插件,配合插件的g:Illuminate_ftHighlightGroups设置,可以高亮函数名和变量名,虽然不是基于语义分析,但是也足够使用。

最后则是tig,这个不是Vim插件,是一款字符终端git浏览器,主要msys2中的gitk一直有问题,而又看到emacs中的magit的操作方式比较舒服,所以可以用Vim中的terminal配合tig当作git客户端使用,比一些专门的插件更符合操作习惯。

本来还有LeaderF中将LeaderF rg结果导入到Quickfix List中的,但是有人提了PR了,还是把不修改源码实现功能贴出来分享下吧:

function! s:exportQflist() 
pyx <<EOF
import vim

buffer = vim.current.buffer
if (buffer.options["filetype"] == b'leaderf' and \
    anyHub._last_cmd.args[0] == 'rg'):
    keys = ['filename', 'lnum', 'text']
    items = [dict(zip(keys, l.split(':', 2))) for l in buffer]

    if items:
        vim.command("call setqflist(pyxeval('items'), 'r')")
        vim.command('normal q')
        vim.command('copen')
EOF
endfunction
nmap <silent> <leader>q :call <SID>exportQflist()<CR>
转载请注明: 本文《冷门Vim插件配置》来源于bstaint的博客

没有评论: