A modular Vim/Neovim configuration

Home | About | Quick start guide | Documentation | Development | Community | Sponsors | 中文

Home » Layers » autocomplete


This layer provides auto-completion in SpaceVim.

The following completion engines are supported:

Snippets are supported via neosnippet.


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

  name = "autocomplete"


Completion engine

By default, SpaceVim will choose the completion engine automatically based on your vim version. But you can choose the completion engine to be used with the following variable:

here is an example:

    autocomplete_method = "deoplete"

Snippets engine

The default snippets engine is neosnippet, the also can be changed to ultisnips:

    snippet_engine = "ultisnips"

The following snippets repos have been added by default:

If the snippet_engine is neosnippet, the following directories will be used:

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.

If the snippet_engine is ultisnips, the following directories will be used:

Complete parens

By default, the parens will be completed automatically, to disabled this feature:

    autocomplete_parens = false

Layer options

You can customize the user experience of autocompletion 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. NOTE: This option should not has same value as escape_key_binding
  5. auto_completion_complete_with_key_sequence_delay is the number of seconds to wait for the autocompletion key sequence to be entered. The default value is 1 seconds. This option is used for vim’s timeoutlen option in insert mode.

The default configuration of the layer is:

  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 don’t use it already.

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 false.

  name = "autocomplete"
  auto_completion_enable_snippets_in_popup = false

Key bindings


Key bindings Description
Ctrl-n select next candidate
Ctrl-p select previous candidate
<Tab> based on auto_completion_tab_key_behavior
Shift-Tab select previous candidate
<Return> based on auto_completion_return_key_behavior


Key Binding Description
M-/ Expand a snippet if text before point is a prefix of a snippet
SPC i s List all current snippets for inserting
<Leader> f s Fuzzy find Ultisnips snippets if snippet_engine = "ultisnips" and the layer telescope is used. Thanks to telescope-ultisnips.nvim

NOTE: SPC i s requires that at least one fuzzy search layer be loaded. If the snippet_engine is neosnippet. The fuzzy finder layer can be leaderf, denite or unite. For ultisnips, you can use leaderf or unite layer.

Powered by Jekyll