Coc.nvim: Problème en appuyant sur la tabulation à la fin d'un mot

Créé le 16 mars 2019  ·  5Commentaires  ·  Source: neoclide/coc.nvim

J'utilise l'exemple vimrc donné dans README.md.

La question est, lorsqu'il n'y a pas de candidat pour l'achèvement et que le curseur est à la fin d'un mot, le fait d'appuyer sur l'onglet ne donne rien.

À mon avis, le comportement idéal pour ce cas devrait être de déplacer le curseur vers la prochaine position de tabulation, autre que la recherche de candidats à l'achèvement dans une liste vide.

Je crois que cela est causé par

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

dans une configuration vimrc donnée

Comment puis-je le corriger sans modifier le comportement normal lorsque la liste des candidats à l'achèvement n'est pas vide ? Merci!

question

Commentaire le plus utile

devrait déplacer le curseur à la position de tabulation suivante.

Que signifie la position de l'onglet suivant ?

Cela signifie insérer un caractère de tabulation.

J'utilise l'exemple vimrc donné dans README.md.
Je crois que cela est causé par
...

En effet. Consultez cette page wiki : https://github.com/neoclide/coc.nvim/wiki/Completion-with-sources#improve -completion-experience

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

Le code ci-dessus devrait le faire fonctionner comme vous le souhaitez.
Lorsque je commente cette ligne dans vimrc, j'obtiens le comportement que vous avez décrit. Il remappe l'onglet sur l'onglet lorsqu'aucune fenêtre d'achèvement n'est ouverte.

Tous les 5 commentaires

devrait déplacer le curseur à la position de tabulation suivante.

Que signifie la position de l'onglet suivant ?

Le curseur est à la fin d'un mot ne signifie pas que la demande d'achèvement renverrait des résultats vides, c'est parfois le cas.

devrait déplacer le curseur à la position de tabulation suivante.

Que signifie la position de l'onglet suivant ?

Cela signifie insérer un caractère de tabulation.

J'utilise l'exemple vimrc donné dans README.md.
Je crois que cela est causé par
...

En effet. Consultez cette page wiki : https://github.com/neoclide/coc.nvim/wiki/Completion-with-sources#improve -completion-experience

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

Le code ci-dessus devrait le faire fonctionner comme vous le souhaitez.
Lorsque je commente cette ligne dans vimrc, j'obtiens le comportement que vous avez décrit. Il remappe l'onglet sur l'onglet lorsqu'aucune fenêtre d'achèvement n'est ouverte.

L'exemple dans Readme concerne la complétion du déclencheur lorsqu'il y a un caractère de mot avant, mais ce dont vous avez besoin n'est pas de déclencher la complétion, vous devez donc créer votre propre keymap pour <Tab> .

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

Le code ci-dessus devrait le faire fonctionner comme vous le souhaitez.
Lorsque je commente cette ligne dans vimrc, j'obtiens le comportement que vous avez décrit. Il remappe l'onglet sur l'onglet lorsqu'aucune fenêtre d'achèvement n'est ouverte.

Cela marche. Merci @DzKaki !

Cette page vous a été utile?
0 / 5 - 0 notes