1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-23 20:00:05 +08:00
SpaceVim/docs/layers/autocomplete.md

5.7 KiB
Raw Blame History

title description
SpaceVim autocomplete layer Autocomplete code within SpaceVim, fuzzy find the candidates from multiple completion sources, expand snippet before cursor automatically

Available Layers >> autocomplete

Description

This layer provides auto-completion to SpaceVim.

The following completion engines are supported:

Snippets are supported via neosnippet.

Install

To use this configuration layer, add following snippet to your custom configuration file.

[[layers]]
  name = "autocomplete"

Configuration

Choose which completion engine to be used

You can choose the completion engine (among the supported ones) to be used with the following variable:

  • g:spacevim_autocomplete_method: the possible values are:
    • ycm: for YouCompleteMe
    • neocomplcache
    • coc: Note that coc.nvim is also a language server protocol client. See lsp layer for more information.
    • deoplete
    • asyncomplete
    • completor

Key bindings

You can customize the user experience of auto-completion with the following layer variables:

  1. auto-completion-return-key-behavior set the action to perform when the Return/Enter key is pressed, the possible values are:
    • complete completes with the current selection
    • smart completes with current selection and expand snippet or argvs
    • nil By default it is complete.
  2. auto-completion-tab-key-behavior set the action to perform when the TAB key is pressed, the possible values are:
    • smart cycle candidates, expand snippets, jump parameters
    • complete completes with the current selection
    • cycle completes the common prefix and cycle between candidates
    • nil insert a carriage return By default it is complete.
  3. auto-completion-delay is a number to delay the completion after input in milliseconds, by default it is 50 ms.
  4. auto-completion-complete-with-key-sequence is a string of two characters denoting a key sequence that will perform a complete action if the sequence as been entered quickly enough. If its value is nil then the feature is disabled.
  5. auto-completion-complete-with-key-sequence-delay is the number of seconds to wait for the auto-completion key sequence to be entered. The default value is 0.1 seconds.

The default configuration of the layer is:

[[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

jk is a good candidate for auto-completion-complete-with-key-sequence if you dont use it already.

Snippets directories

The following snippets or directories are added by default:

  • Shougo/neosnippet-snippets : neosnippet's default snippets.
  • honza/vim-snippets : extra snippets
  • ~/.SpaceVim/snippets/ : SpaceVim runtime snippets.
  • ~/.SpaceVim.d/snippets/ : custom global snippets.
  • ./.SpaceVim.d/snippets/ : custom local snippets (project's snippets)

You can provide additional directories by setting the variable g:neosnippet#snippets_directory which can take a string in case of a single path or a list of paths.

Show snippets in auto-completion popup

By default, snippets are shown in the auto-completion popup. To disable this feature, set the variable auto-completion-enable-snippets-in-popup to 0.

call SpaceVim#layers#load('autocomplete', {
        \ 'auto-completion-enable-snippets-in-popup' : 0
        \ })

LSP supported

Key bindings

auto-complete

Key bindings Description
<C-n> select next candidate
<C-p> select previous candidate
<Tab> base on auto-completion-tab-key-behavior
<S-Tab> select previous candidate
<Return> base on auto-completion-return-key-behavior

Neosnippet

Key Binding Description
M-/ Expand a snippet if text before point is a prefix of a snippet
SPC i s List all current yasnippets for inserting