2012-03-01 10 views
32

Sono un po 'confuso sull'uso dei menu di vim. Ho set wildmenu e set wildmode=list:longest,full ma non capisco per la vita di me come invocare e utilizzare la funzione di completamento. Questa funzione è utile? Perché e come? Che tipo di completamento fa esattamente questo? (in altre parole, ciò che determina il contenuto della lista di completamento)Come utilizzare VIM in modo efficace: wildmenu

Sarebbero graditi suggerimenti ed esempi di utilizzo.

+0

Ho 'set wildmenu'. E lo trovi abbastanza utile. Non devo pagare molto se l'articolo non viene mostrato nella barra dei suggerimenti. –

risposta

39

wildmenu e wildmode vengono utilizzati per il completamento della riga di comando. Il modo più semplice per provarlo sarebbe con :color <Tab>: la riga di comando è "espansa" verticalmente con un elenco di tutti i colori disponibili sulla macchina visualizzati nelle colonne e una striscia orizzontale che è possibile navigare con <Tab> (avanti) e <S-Tab> (all'indietro).

Il comportamento del completamento della riga di comando e wildmenu dipende dallo wildmode.

Vedere :help wildmode e :help wildmenu per ulteriori dettagli.

+1

Quindi quello che sto ottenendo è il completamento automatico dei comandi di Vim! Il che ha più senso. È in grado di andare oltre? Forse il rilevamento della sintassi per completare automaticamente i nomi di funzioni/variabili all'interno di, ad esempio, i file .cpp? – skippr

+1

No la combo 'wildmode' /' wildmenu' non può fare nulla oltre il completamento della riga di comando. Vim ha un altro meccanismo per il completamento del codice chiamato "omni-completion". Leggi ': help omni-completion' per maggiori informazioni. – romainl

4

:set wildmode=list:longest consente di espandere wildmenu

:set wildmenu consente di utilizzare <Left> o <Righ> per navigare attraverso le liste compoetion.

+0

C'è un modo in cui se premi la scheda, puoi scorrere gli elenchi di completamento? – hlin117

+1

just ': imposta wildmenu = list: full' invece. –

+0

Linh: Questo è così vicino a quello che voglio; Potrei non essere stato chiaro con la mia domanda precedente. C'è un modo per scorrere attraverso il ** wildmenu espanso **? Questa funzionalità è simile a zsh: http://i.stack.imgur.com/GvC4A.png – hlin117

25

Prolly la soluzione più comoda, almeno per me è:

set wildmenu 
set wildmode=longest:full,full 

Ciò significa che al primo <Tab> si completerà alla più lunga stringa di comune e richiamerà wildmenu (un piccolo menu orizzontale e unobstructive). Il prossimo <Tab> completerà il primo altenativo e inizierà a scorrere il resto. Puoi andare avanti e indietro rispettivamente con <Tab> e <S-Tab>.

Un esempio impressionante di come wildmenu è molto utile è quello di completare i buffer, utilizzare il conf ho postato e quindi provare:

:b<Tab>

+0

Puoi spiegare come funziona? La pagina di aiuto non dice nulla su ':'. – saga

+0

È descritto nella guida di vim: http://vimdoc.sourceforge.net/htmldoc/options.html#'wildmode '(ma devi cercare 'wildmode', e non' wildmenu') –

9

Il mio preferito è

set wildmenu 
set wildmode=longest:list,full 

prima scheda completerà alla stringa più lunga e mostra l'elenco delle corrispondenze, quindi la seconda scheda verrà completata per la prima corrispondenza completa e verrà aperto il menu Wild.

Problemi correlati