vim-easycomplete


Ⅰ. 插件描述

极好用的词典自动补全插件 vim-easycomplete

Ⅱ. 基本信息

创建日期:  2018-09-19
使用用户:  3
Github星:  22
插件作者:  lijing00333

Ⅲ. 安装方法

使用Vundle管理器安装

在你的.vimrc下添加:
Plugin 'jayli/vim-easycomplete'
… 然后在Vim中运行以下命令:
:source %
:PluginInstall

对于Vundle版本 < 0.10.2,请用上面的Bundle替换Plugin。

使用NeoBundle管理器安装

在你的.vimrc下添加:
NeoBundle 'jayli/vim-easycomplete'
… 然后在Vim中运行以下命令:
:source %
:NeoBundleInstall

使用VimPlug管理器安装

在你的.vimrc下添加:
Plug 'jayli/vim-easycomplete'
… 然后在Vim中运行以下命令:
:source %
:PlugInstall

使用Pathogen管理器安装

在终端中运行以下命令:
cd ~/.vim/bundle
git clone https://github.com/jayli/vim-easycomplete

Ⅳ. 文档说明

# Vim-EasyComplete

中文|English

Vim Gitter

字典 VIM 自动补全 && SnipMate。注意不要和 SuperTab 共用。

VIM 自动补全插件走查:

  • YouCompleteMe:最权威的补全插件。不支持 Ultisnips 不支持,启动速度太慢,在 MacBookPro 上打开 VIM 要卡上 600 毫秒至少。
  • SnipMate:仅做代码展开,完全基于 VimL 实现,便携性很好,不带补全提示。
  • Deoplete:该插件只能运行在 VIM8 和 Neovim 上,必须依赖 Python3,配置太麻烦了,不兼容vim7。
  • Completor:一个全新的自动补全插件,作者是中国人 Wei Zhang,同时支持了关键词匹配和代码片段缩写匹配,不兼容vim7。
  • Zencoding:一个古董。

我的需求,第一,浮窗提示,第二,支持代码片段提示+展开,第三,优先选择关键词和词表匹配,第四,因为经常登录服务器,除了要支持 VIM7 以外,还要便于携带和安装,要纯 VimL 实现。最后,我不需要输入跟随提示(太干扰),我更习惯 Tab 提示。

Vim-EasyComplete + Vim-Dictionary 满足这些需求。

  • Vim-EasyComplete 只对 SnipMate 有依赖
  • 兼容 Linux 和 MacOS,暂不支持 CygWin

安装

可选 Pathogen、Vundle 等很棒的插件管理器:

- 基于 Pathogen.vim 安装(VIM7 & 8)

同时安装 EasyComplete、vim-dictionary、snipmate 和 jedi-vim(可选)

cd ~/.vim/bundle/
git clone https://github.com/tomtom/tlib_vim.git
git clone https://github.com/MarcWeber/vim-addon-mw-utils.git
git clone https://github.com/garbas/vim-snipmate.git
git clone https://github.com/honza/vim-snippets.git
git clone https://github.com/jayli/vim-easycomplete.git
git clone https://github.com/jayli/vim-dictionary.git
git clone https://github.com/davidhalter/jedi-vim.git

Python 语言的联想需要安装 Jedi

pip3 install jedi

- 基于 Vundle.vim 安装(VIM7 & 8)

在.vimrc中添加下面代码,进入vim后执行:PluginInstall

" SnipMate 携带的四个插件
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'

" Jedi
Plugin 'davidhalter/jedi-vim'

" EasyComplete 插件和 Dictionary 词表
Plugin 'jayli/vim-easycomplete'
Plugin 'jayli/vim-dictionary'

安装jedi:pip3 install jedi

- 也可以直接基于 VIM8 安装

执行如下脚本:

git clone https://github.com/jayli/vim-easycomplete.git \
    ~/.vim/pack/dist/start/vim-easycomplete
git clone https://github.com/jayli/vim-dictionary.git \
    ~/.vim/pack/dist/start/vim-dictionary
git clone https://github.com/MarcWeber/vim-addon-mw-utils.git \
    ~/.vim/pack/dist/start/vim-addon-mw-utils
git clone https://github.com/tomtom/tlib_vim.git \
    ~/.vim/pack/dist/start/tlib_vim
git clone https://github.com/garbas/vim-snipmate.git \
    ~/.vim/pack/dist/start/vim-snipmate
git clone https://github.com/honza/vim-snippets.git \
    ~/.vim/pack/dist/start/vim-snippets

最后安装jedi:pip3 install jedi

配置

使用 Tab 键呼出补全菜单,如果遇到 Tab 键在插入模式下不能输出原始 Tab,我个人习惯敲入 Shift-Tab 。这里以配置 Tab 键唤醒补全菜单为例:在.vimrc中加入:

imap <Tab>   <Plug>EasyCompTabTrigger
imap <S-Tab> <Plug>EasyCompShiftTabTrigger

这里起主要作用的是第一行,第二行 Shift-Tab 为可选,我这里将 Shift-Tab 也定义为了插入模式下前进一个 Tab。

弹窗样式配置,这里提供了两个默认样式配置,暗:dark,亮:light,通用:rider,在.vimrc里增加下面这行

let g:pmenu_scheme = 'dark'

不用针对 SnipMate 做额外配置,安装好就可以用了

帮助 Tags 生成(可选):安装完成后进入 VIM 执行:helptags ~/.vim/bundle/vim-easycomplete/doc,便可:help easycomplete来阅读文档

使用

EasyComplete 目前有四种常见用法:关键词补全、字典补全、文件路径补全和代码片段补全,除了代码片段补全之外,其他三种补全逻辑参照了 YCM 的实现,比如文件路径补全和关键词补全是解耦开的。

- 关键字补全和字典补全

和 VIM 自带的智能补全 C-X C-N 能力一致,从当前缓冲区和字典中解析出关键词匹配出来,速度也是最快的。单词输入时按 Tab 呼出补全菜单,字典配置方法set dictionary={你的字典文件},样例如下,用 Tab 和 Shift-Tab 键来切换下一个和上一个匹配词。

- 文件路径补全

VIM 自带 C-X C-F 来呼出文件路径匹配窗,也很好用,但补全窗口的起点是整个路径匹配的起点,占太多屏幕面积,这里参照 YCM 重写了路径匹配的逻辑。插件会判断你是否正在输入一个路径,尤其是当你输入./或者/,也可紧跟要匹配的文件名或者目录名片段,点击 Tab 呼出匹配项。

- 代码片段补全(基于 SnipMate)

支持的代码段来自于vim-snippets,可以在这里查看有哪些可用的代码片段。

代码片段内的占位符填充的动作和 SnipMate 保持一样,用 Tab 键切换下一个占位符。比如这个例子展示了代码补全的情形。

添加新评论