Skip to content

4. 使用方法(useage)

lijing00333 edited this page Aug 21, 2025 · 2 revisions

基本用法(basic useage)

  • 补全触发(trigger):默认情况下,匹配菜单会自动跟随输入字符弹出。并通过 Tab 来选择下一个匹配项,Shift-Tab 选择上一个匹配项。
  • 选择匹配项(completion):弹出补全菜单时,可以通过上下方向键来选择,也可以通过c-nc-p来上下选择,也可以自定义选择键
  • 定义跳转(define jumping):Ctrl-] 跳转到定义处,Ctrl-t跳回(和 tags 跳转快捷键一致)。
  • 错误跳转(lint jumping):使用Ctrl-N/Shift-Ctrl-N 跳转到下一个/上一个错误提示位置。Ctrl-E关闭匹配菜单。
  • Lint提示(lint message):为了避免输入干扰,插件只在离开 Insert 模式时自动显示行尾的提醒,但在行前 sign 部分的提示符会始终显示。
  • Hover提示(hover information):Shift-K 展开更多信息(和默认的查看帮助的快捷键一致)
  • 重命名(rename)::EasyCompleteRename来打开重命名窗口,通常绑定rn
  • 返回源位置(jump back):当跳转离开后返回原位置可以用Ctrl-t逐次返回,也可以用:BackToOriginalBuffer一次性返回,通常绑定gb
  • 跳转到引用(reference jumping)::EasyCompleteReference 跳转到引用,通常绑定 gr
  • 关闭补全菜单(close pum):默认Ctrl-E关闭补全菜单,也可以绑定其他快捷键:<Plug>EasycompleteClosePum
  • 代码片段(snippets):回车选中代码片段时,自动会展开片段,输入过程中可以通过 TabShift-Tab来切换位置
  • cmdline: /?: 进入 cmdline 后自动给出匹配菜单。

更多用法(More useage)

选择匹配项(complete potion)

设置pum_noselect = 1来禁止默认选中第一项,默认为0

pum_noselect = 1

通过c-nc-p或者上下键来选择匹配项时,不会自动把单词写入行内,按回车写入行内

设置pum_noselect=0可以默认选中第一项:

Snippets

插件默认提供了好用的 snippets 集合,无须另外安装,如果你有自己的 snippets,可以通过custom_snippet="..."来添加。默认支持两类snippets:

  • vscode 格式:根目录下必须要包含package.json
  • snipmate 格式:只需制定根目录即可,目录中包含类似java.snippets的代码片段文件。
custom_snippet = "path to your snippets root dir"

当配置了自定义的 snippets,插件默认的 snippets 将不会被加载。

函数参数展开(snippets expand)

对于特定语言,插件也做了函数参数的片段展开,这里需要依赖 luasnip 或者 ultisnips。

诊断提示的跳转(lint jumping)

默认通过 ctrl-nshift-ctrl-n 来跳转上一个和下一个 (jump to next and prev lint position)。

我比较讨厌满屏的诊断提示,所以这里只实现了光标停留位置的行尾诊断提示,而且只限制了当前行,如果空间太小显示不下,则显示在 cmdline 里补充显示完整信息。

跳转到定义处(defination jumping)

gd 跳转到定义处

通常用ctrl-t来返回原来的位置。

重命名(rename)

'rn' 执行重命名

函数参数解释(signature)

进入函数参数位置时,会自动弹出函数参数的解释信息:

Hover

默认 Shift-k 查看 hover 信息。

Path 匹配

输入相对目录时自动弹出匹配菜单

cmdline

进入 cmdline 后自动弹出 cmdline 菜单

补全菜单样式定义(beautify pum)

补全菜单已经能很好的兼容 colorscheme,但还是支持了样式的自定义。

Nerd font 和 menu 缩写

开启 Nerd fonts(插件默认不开启 Nerd font,需要手动配置一下):

nerd_font = 1

定义 menu 缩写,menu 字段显示 lsp 的名称简写,比如[TS][VIM]

menu_abbr = 1

定义menu_abbr = 0则 menu 字段显示单词属性全称,比如functionkeywords

开启和关闭nerd_font 以及 menu_abbr的效果:

enable nerd_font disable nerd_font
image image

样式定义 highlight groups

补全菜单的样式定义:

  • EasyFuzzyMatch: 匹配字符高亮. 默认 link 到 "PmenuMatch"
  • EasyPmenu: Pmenu 菜单样式. 默认 link 到 "Pmenu".
  • EasyPmenuKind: PmenuKind 样式. 默认 link 到 "PmenuKind".
  • EasyPmenuExtra: PmenuExtra 样式. 默认link到 "PmenuExtra".
  • EasyFunction: Function 图标样式. 默认link到 "Conditional".
  • EasySnippet: Snippet 图标样式. 默认link到 "Keyword".
  • EasyTabNine: TabNine 图标样式. 默认link到 "Character".
  • EasySnippets: 行内补全样式. 默认link到 "LineNr"
  • EasyNormal: 默认图标样式,默认link到 Normal.
  • EasyKeyword: 默认Keyword图标,默认link 到 "Define".
  • EasyModule: 默认Module 图标. 默认link到"Function".

winborder 设置为 1. Pmenu 匹配菜单的背景色会自动设置成和文档背景色一致。如果你不想被自动设置 pum 背景色,可以这样关掉: pum_pretty_style = 0

所以只要 PmenuMatch、Pmenu、PmenuKind、PmenuExtra、PmenuSbar、PmenuThumb、PmenuSel 等基础样式是完整的,菜单样式就是没问题的。

补全菜单 border 的样式和 FloatBorder 保持一致。border 线条样式默认 single.

Kind(图标)字段配置 (kind icons)

Kind 字段通过 kind_icons 配置:

kind_icons = {
   buf = "b",
   snip = "s",
   dict = "d",
   class = "c",
   ["function"] = "f"
   --...
},

这里是支持的属性列表:

列1 列2 列3 列4
buf snip dict tabnine
cmdline class constant enum
snippet field folder interface
text variable event const
let operator local method
color constructor enummember file
function keyword struct typeparameter
module var alias parameter
property

Menu(文案)字段配置 (menu configure)

LSP 返回的结果自带 menu 文案属性,如果menu_abbr=1,则只显示 lsp 的名称,否则显示全称。不依赖 lsp 返回的内置插件的 menu 文案通过menu_skin配置:

menu_skin = {
  cmdline = {
    kind = "c",
    menu = "[cmd]"
  },
  buf = {
    kind = "b",
    menu = "[buffer]"
  },
  tabnine = {
    kind = "t",
    menu = "[tabnine]"
  },
  snip = {
    kind = "s",
    menu = "[snippet]"
  },
  dict = {
    kind = "d",
    menu = "[dict]"
  }

支持的类型有:cmdline、buf、tabnine、snip、dict

补全浮窗背景色自适应

通常情况下 Normal 背景色和 Pmenu 的背景色不一致,如果配置了 winborder = 1,显示不协调,因此插件提供了pum_pretty_style = 1来让浮窗底色和编辑器背景色一致:

pum_pretty_style = 1

配置前后的效果:

pum_pretty_style = 0 pum_pretty_style = 1
image image

光标停留单词的高亮 hold highlight

用过一些光标停留高亮的插件,主要是已有高亮的搜索词的情况下不好用。因为这个需求太常用了,所以我简单实现了这个功能,当开启cursor_word_hl=1时,就可以让光标处的单词加上下划线。这里特别过滤了搜索高亮的情况,避免不必要的闪烁。cursor_word_hl 默认是关闭的,需要手动开启:

cursor_word_hl = 1

开启后的效果:

Snippets 源的选择 (snippet sources)

vim-easycomplete 兼容了两个 snippet 插件 LuaSnip 和 ultisnips:

  • L3MON4D3/LuaSnip:只支持 nvim,速度快,支持多种 snippets 格式 snipmate 和 vscode 格式基于目录载入,lua 格式的源手动代码载入
  • SirVer/ultisnips:支持 vim/nvim,依赖 python3,主要支持 snipmate。

snippets 源:vim-easycomplete 自带了常用的 snipmate 格式的源,默认即可加载。其他自定义的 snippets 源需要通过custom_snippet="..."给定路径来配置,一旦设置了自定义的源,插件原有的代码片段库将不会被加载。

关闭补全源 (disable sources)

通过全局配置来关闭特定的补全源:

  • tabnine_enable=0:关闭 tabnine 源
  • path_enable=0:关闭 path 源
  • snips_enable=0:关闭 snippet 源
  • cmdline = 0: 关闭 cmdline 源

查看当前安装的 lsp (check current lsp servers)

执行命令::EasyCompleteCheck

image
Clone this wiki locally