Comment puis-je faire en sorte que Vim fasse une tabulation normale (semblable à Bash) pour les noms de fichiers?


289

Lorsque j'ouvre un nouveau fichier dans Vim et que j'utilise la complétion de tabulation, il complète le nom de fichier complet au lieu de faire la correspondance partielle comme le fait Bash. Existe-t-il une option pour que cet achèvement de l'onglet de nom de fichier fonctionne plus comme Bash?


10
Techniquement parlant, je suis quasiment sûr que "bash" ne fait aucune complétion de tabulation. C'est la ligne de lecture qui fait ça.
Maxy-B

2
Nous parlons de personnaliser le comportement de la fonction ^ X ^ F?
BrunoJCM

Réponses:


413

J'utilise personnellement

set wildmode=longest,list,full
set wildmenu

Lorsque vous tapez la première touche de tabulation, elle se termine autant que possible. La deuxième tabulation fournira une liste. Le troisième onglet et les onglets suivants feront défiler les options d'achèvement afin que vous puissiez compléter le fichier sans autres touches.

Bash-like serait juste

set wildmode=longest,list 

mais le plein est très pratique.


1
Je souhaite que ce soit le comportement par défaut dans vim. Je pensais qu'il n'y avait aucun moyen de terminer la tabulation complète jusqu'à ce que je voie ce message.
Neha Karanjkar

6
@NehaKaranjkar Je recommande de maintenir une archive dotfiles pour faciliter le déploiement dans de nouveaux environnements
michael

2
Existe-t-il un moyen de commencer complètement uniquement s'il y a peu de résultats? quelque chose comme set wildmode=longest,5full,list. Avec beaucoup de résultats pleins est inutile mais très pratique avec peu. Ce sera parfait avec quelque chose comme "afficher plein uniquement si l'achèvement tient sur un écran de ligne"
albfan

1
Cela fonctionnait autrefois (gVim / ubuntu) mais maintenant ce n'est plus le cas (macvim8.x / macOS). Voir l' exemple . Des idées?
Paschalis

1
Après avoir toléré l'achèvement de l'onglet d'origine pendant 2 mois, je pense qu'il doit y avoir un moyen de le simplifier. Je vous remercie.
ramwin

23

Le comportement le plus proche de l'achèvement de Bash devrait être

set wildmode=longest:full,full

Avec quelques caractères tapés, appuyer une fois sur tabulation donnera toutes les correspondances disponibles en wildmenu. Ceci est différent de la réponse de Michael qui ouvre une fenêtre de type quickfix sous la ligne de commande.

Ensuite, vous pouvez continuer à taper le reste des caractères ou appuyer à nouveau sur tab pour compléter automatiquement la première correspondance et l'entourer.


Je pense que je préfère cette façon.
Eddy Ekofo

8

Si vous ne souhaitez pas définir le menu wild, vous pouvez toujours appuyer sur Ctrl+ Llorsque vous souhaitez ouvrir un fichier. Ctrl+ Lcomplètera le nom de fichier comme l'achèvement de Bash.


Ctrl-L n'agit pas comme la saisie semi-automatique bash. Il ne parcourt pas toutes les options possibles.
raine

2
Mon bash n'agit comme ça. complète la chaîne actuelle autant que possible sans ambiguïté (comme dans Vim) et affiche une liste de correspondances possibles (comme dans Vim). <Tab>CTRL-L<Tab><Tab>CTRL-D
glts

8

Hormis le wildmode / wildmenu suggéré, Vim offre également la possibilité d'afficher toutes les complétions possibles en utilisant Ctrl+ D. Cela pourrait être utile pour certains utilisateurs qui tombent sur cette question lors de la recherche de différentes options de saisie semi-automatique dans Vim comme je l'ai fait.


4

Je suppose que vous utilisez la saisie semi-automatique dans Vim via Ctrl+ Npour rechercher dans le tampon actuel. Lorsque vous utilisez cette commande, vous obtenez une liste de solutions; répétez simplement la commande pour passer à l'élément suivant de la liste. Il en va de même pour toutes les commandes de saisie semi-automatique. Pendant qu'ils remplissent le mot entier, vous pouvez continuer à parcourir la liste jusqu'à ce que vous arriviez à celui que vous souhaitez utiliser.

Cela peut être une commande plus utile: Ctrl+ P. La seule différence est que Ctrl+ Precherche en arrière dans le tampon tandis que Ctrl+ Nrecherche en avant ... En réalité, ils fourniront tous les deux une liste avec les mêmes éléments, et ils peuvent simplement apparaître dans un ordre différent.


0

Essayez d'utiliser :set wildmenu. En dehors de cela, je ne sais pas exactement ce que vous essayez.

Oh, oui, et peut-être essayez ce lien: lien

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.