1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-25 07:00:04 +08:00
SpaceVim/docs/cn/layers/autocomplete.md
Lin Kun 61279a289e Doc: translate <C-e> to Ctrl-e etc. (#2605)
* Doc: fix typos.

* Doc: make the translation more accurate.

* Doc: update documentations.

* Doc: translate <C-e> to Ctrl-e etc.

* Doc: fix typos.

* Doc: fix typos.
2019-02-19 21:54:05 +08:00

5.4 KiB
Raw Blame History

title description lang
SpaceVim autocomplete 模块 这一模块为 SpaceVim 提供了自动补全的框架,包括语法补全等多种补全来源,同时提供了代码块自动完成等特性。 cn

可用模块 >> autocomplete

模块描述

这一模块为 SpaceVim 提供了代码自动补全的框架,同时提供了代码块自动完成的特性。默认情况 下根据当前 Vim 所具备的特性,自动选择补全引擎:

  • deoplete - neovim/Vim 具备 +python3 特性,并且安装了 neovim 的 python-client
  • neocomplete - 需要 Vim 具备 +lua 特性
  • neocomplcache - 当都不具备以上特性时
  • YouCompleteMe - 默认 Ycm 是不会自动启用的,可通过 SpaceVim 选项 enable_ycm 来启用

代码块自动完成框架默认为neosnippet,可通过 SpaceVim 选项 snippet_engien 设置为 ultisnips

启用模块

这一模块是默认启用的,当然为了稳妥,可以再配置文件里加入以下代码块:

[[layers]]
  name = "autocomplete"

模块配置

自动补全模块的配置,主要包括两个部分,自动补全快捷键的设置、代码块模板以及 使用体验的优化

快捷键设置

为了提升用户体验,可以通过使用如下的模块选项来定制自动补全:

  1. auto-completion-return-key-behavior 选项控制当按下 Return/Enter 键时的行为, 默认为 complete,可用的值包括如下 3 种:
    • complete 补全模式,插入当前选中的列表选项
    • smart 智能模式,插入当前选中的列表选项,若当前选择的时 snippet则自动展开代码块。
    • nil 当设为 nil 时,则采用 Vim 默认的按键行为,插入新行
  2. auto-completion-tab-key-behavior 选项控制当按下 Tab 键时的行为,默认为 complete,可用的值包括如下 4 种:
    • smart 智能模式,自动循环补全列表、展开代码块以及跳至下一个代码块的锚点
    • complete 补全模式,插入当前选中的列表选项
    • cycle 循环模式,自动再补全列表之间循环
    • nil 当设为 nil 时,该行为和 Tab 的默认行为一致
  3. auto-completion-delay 设置自动补全延迟时间,默认 50 毫秒
  4. auto-completion-complete-with-key-sequence 设置一个手动补全的由两个字符构成的按键序列,如果你按下这个序列足够快,将会启动补全;如果这一选项的值是 nil ,这一特性将被禁用。
  5. auto-completion-complete-with-key-sequence-delay 设置手动补全按键序列延迟时间,默认是 0.1

自动补全模块默认载入状态如下:

[[layers]]
  name = "autocomplete"
  auto-completion-return-key-behavior = "nil"
  auto-completion-tab-key-behavior = "smart"
  auto-completion-delay = 200
  auto-completion-complete-with-key-sequence = "nil"
  auto-completion-complete-with-key-sequence-delay = 0.1

通常会建议将 auto-completion-complete-with-key-sequence 的值设为 jk,如果你不用 这一组按键的话。

代码块的设置

默认情况下,会自动载入以下代码块仓库和文件夹的代码块模板:

  • Shougo/neosnippet-snippetsneosnippet 的默认代码块模板
  • honza/vim-snippets:额外的代码块模板
  • ~/.SpaceVim/snippets/SpaceVim 内置代码块模板
  • ~/.SpaceVim.d/snippets/:用户全局代码块模板
  • ./.SpaceVim.d/snippets/:当前项目本地代码块模板

同时,可以通过修改 bootstrap 方法来设置 g 的值,进而设置自定义的代码块模板路径,该值 可以是一个 string表示单个目录也可以是一个 list每一个元素表示一个路径。

默认情况下,代码块模板缩写词会在补全列表里面显示,以提示当前输入的内容为一个代码块模板的缩写, 如果需要禁用这一特性,可以设置 auto-completion-enable-snippets-in-popup 为 false。

[[layers]]
  name = "autocomplete"
  auto-completion-enable-snippets-in-popup = false

快捷键

自动补全相关快捷键

快捷键 功能描述
Ctrl-n 选择下一个列表选项
Ctrl-p 选择上一个列表选项
<Tab> 依据 auto-completion-tab-key-behavior
Shift-<Tab> 选择上一个列表选项
<Return> 依据 auto-completion-return-key-behavior

代码块模板相关快捷键

快捷键 功能描述
M-/ 如果光标前的词语为一代码块模板缩写,则展开该代码块
SPC i s 列出所有可用的代码块模板,选择后并插入