一个186行代码的代码补全系统,可以根据,历史输入,字典,tags 等多个源提供类似 YouCompleteMe 的补全操作体验,且最重要的是,无需费尽心思地安装各种后端的补全 LSP 服务器。该插件主要利用 Vim 内建补全系统,它能从当前文件收集单词,能从 dict 文件以及 tags 文件收集单词,当按下 <c-n> 或者 <c-x><c-k> 时弹出补全框,或者输入 1-2 个字符的时候为你自动弹出补全窗口用的,并且提供类似 YouComplete 的补全体验(点击查看 GIF 动图):
合理使用字典、历史补全能更好的辅助英文写作,主要包括:
- 自动弹出补全框。
- 使用
TAB
和SHIFT+TAB
来循环选择补全内容,<c-e>
关闭补全框。 - 提供同 YouCompleteMe 完全一致的体验(针对:buffer, dict, tags 几个源)。
- 纯绿色,所有操作都是对当前 buffer 生效,不会影响其他 buffer。
- 能够和其他补全系统一起共存(可以设置只对某些文件或者 buffer 生效)。
- 无需种量级补全服务,无需编译后台 LSP 模块。
- 轻量级,响应快,比大部分补全系统反应都要灵敏。
- 只有一个 160 行的 apc.vim 文件,你甚至可以直接把内容拷出来粘贴到你 vimrc 里。
- 适合作为各种大型补全系统的一个理想备份方案。
如何使用?
只需要这样就行了:
Plug 'skywind3000/vim-auto-popmenu'
" 设定需要生效的文件类型,如果是 "*" 的话,代表所有类型
let g:apc_enable_ft = {'text':1, 'markdown':1, 'php':1}
" 设定从字典文件以及当前打开的文件里收集补全单词,详情看 ':help cpt'
set cpt=.,k,w,b
" 不要自动选中第一个选项。
set completeopt=menu,menuone,noselect
" 禁止在下方显示一些啰嗦的提示
set shortmess+=c
也许你还会需要一个字典插件,为众多语言提供字典数据,还有一份英文单词字典,能在你编写文本文件和 markdown 的时候提供英文单词补全(类似上面的 GIF 截图里的效果):
Plug 'skywind3000/vim-dict'
这就是你所需要的全部了。
常用命令
- ApcEnable:为当前文档开启补全(比如你没有设置上面的
g:apc_enable_ft
时)。 - ApcDisable:为当前文档禁用补全
只有上面两条命令,并且只对当前文档生效,不会影响其他文件。
或者将186 行的 apc.vim
脚本,只要放到到 ~/.vim/plugins
目录下面就能自动运行了,或者在 vimrc 最后:
source /path/to/apc.vim
甚至可以把 apc.vim 内容拷贝出来,直接粘贴在你 vimrc 里面也行,本身也没几行。
地址:
https://github.com/skywind3000/vim-auto-popmenu/github.com/skywind3000/vim-auto-popmenu/ 下载git clone https://github.com/skywind3000/vim-auto-popmenu.git,插件就可以使用了