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

121 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "SpaceVim autocomplete layer"
description: "This layer provides auto-completion to SpaceVim"
---
# [SpaceVim Layers:](https://spacevim.org/layers) autocomplete
<!-- vim-markdown-toc GFM -->
- [Description](#description)
- [Install](#install)
- [Configuration](#configuration)
- [Key bindings](#key-bindings)
- [Snippets directories](#snippets-directories)
- [Show snippets in auto-completion popup](#show-snippets-in-auto-completion-popup)
- [LSP supported](#lsp-supported)
- [Key bindings](#key-bindings-1)
- [auto-complete](#auto-complete)
- [Neosnippet](#neosnippet)
<!-- vim-markdown-toc -->
## Description
This layer provides auto-completion to SpaceVim.
The following completion engines are supported:
- [neocomplete](https://github.com/Shougo/neocomplete.vim) - vim with `+lua`
- [neocomplcache](https://github.com/Shougo/neocomplcache.vim) - vim without `+lua`
- [deoplete](https://github.com/Shougo/deoplete.nvim) - neovim with `+python3`
- [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) - disabled by default, to enable ycm, see `:h g:spacevim_enable_ycm`
Snippets are supported via [neosnippet](https://github.com/Shougo/neosnippet.vim).
## Install
To use this configuration layer, add it to your custom configuration file.
```vim
call SpaceVim#layers#load('autocomplete')
```
## Configuration
### 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`
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
3. `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.
4. `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:
```vim
call SpaceVim#layers#load('autocomplete', {
\ 'auto-completion-return-key-behavior' : 'nil',
\ 'auto-completion-tab-key-behavior' : 'smart',
\ '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](https://github.com/Shougo/neosnippet-snippets) : neosnippet's default snippets.
- [honza/vim-snippets](https://github.com/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.
```vim
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 |