Come posso fare in modo che Vim esegua il normale completamento della scheda (simile a Bash) per i nomi dei file?


289

Quando apro un nuovo file in Vim e utilizzo il completamento della scheda, completa l'intero nome del file invece di fare la corrispondenza parziale come fa Bash. Esiste un'opzione per fare in modo che il completamento di questa scheda nome file funzioni più come Bash?


10
Tecnicamente parlando, sono abbastanza sicuro che "bash" non compie alcun completamento. È readline che lo fa.
Maxy-B

2
Stiamo parlando di personalizzare il comportamento della funzione ^ X ^ F?
BrunoJCM,

Risposte:


413

Io personalmente uso

set wildmode=longest,list,full
set wildmenu

Quando si digita la prima hit della scheda, verrà completata il più possibile. La seconda hit della scheda fornirà un elenco. La terza e le schede successive scorreranno tra le opzioni di completamento in modo da poter completare il file senza ulteriori chiavi.

Bash-like sarebbe giusto

set wildmode=longest,list 

ma il pieno è molto utile.


1
Vorrei che questo fosse il comportamento predefinito in vim. Pensavo che non ci fosse modo di completare il completamento della scheda completa fino a quando non ho visto questo post.
Neha Karanjkar,

6
@NehaKaranjkar Raccomando di mantenere un archivio dotfiles per facilitare la distribuzione in nuovi ambienti
michael

2
C'è un modo per iniziare a pieno solo quando ci sono pochi risultati? qualcosa del genere set wildmode=longest,5full,list. Con molti risultati completi è inutile ma molto utile con pochi. Sarà perfetto con qualcosa come "mostra pieno solo se il completamento si adatta allo schermo di una riga"
albfan

1
In passato funzionava (gVim / ubuntu) ma ora non funziona (macvim8.x / macOS). Vedi esempio . Qualche idea?
Paschalis,

1
Dopo aver tollerato il completamento della scheda dell'origine per 2 mesi, penso che ci debba essere un modo per semplificarlo. Grazie.
Ramwin,

23

Il comportamento più vicino al completamento di Bash dovrebbe essere

set wildmode=longest:full,full

Con pochi caratteri digitati, premendo una volta tab si daranno tutte le partite disponibili in wildmenu. Ciò è diverso dalla risposta di Michael che apre una finestra simile a una correzione rapida sotto la riga di comando.

Quindi puoi continuare a digitare il resto dei caratteri o premere di nuovo tab per completare automaticamente con la prima corrispondenza e girarci attorno.


Penso di preferire in questo modo.
Eddy Ekofo,

8

Se non si desidera impostare il menu Wild, è sempre possibile premere Ctrl+ Lquando si desidera aprire un file. Ctrl+ Lcompleterà il nome del file come il completamento di Bash.


Ctrl-L non funziona come il completamento automatico di bash. Non scorre tutte le opzioni possibili.
raine,

2
Il mio bash si comporta così. <Tab>completa la stringa corrente per quanto è inequivocabilmente possibile (come CTRL-Lin Vim) e <Tab><Tab>mostra un elenco di possibili corrispondenze (come CTRL-Din Vim).
inizia il

8

Oltre al wildmode / wildmenu suggerito, Vim offre anche la possibilità di mostrare tutti i possibili completamenti usando Ctrl+ D. Questo potrebbe essere utile per alcuni utenti che si imbattono in questa domanda durante la ricerca di diverse opzioni di completamento automatico in Vim come ho fatto io.


4

Suppongo che tu stia utilizzando il completamento automatico in Vim tramite Ctrl+ Nper cercare nel buffer corrente. Quando si utilizza questo comando, viene visualizzato un elenco di soluzioni; basta ripetere il comando per passare all'elemento successivo nell'elenco. Lo stesso vale per tutti i comandi di completamento automatico. Mentre compilano l'intera parola, puoi continuare a spostarti nell'elenco finché non arrivi a quello che desideri utilizzare.

Questo potrebbe essere un comando più utile: Ctrl+ P. L'unica differenza è che Ctrl+ Pcerca all'indietro nel buffer mentre Ctrl+ Ncerca in avanti ... Realisticamente, entrambi forniranno un elenco con gli stessi elementi e potrebbero apparire in un ordine diverso.


0

Prova a usare :set wildmenu. A parte questo, non sono sicuro di cosa stai provando esattamente.

Oh, sì, e forse prova questo link: link

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.