2010-08-12 10 views
16

In una data directory di lavoro, se lo faccioCome posso fare in modo che vim apra tutti i file che corrispondono a un modello in diverse schede?

:tabe **/test*.py 

vim lamenta con E77: Too many file names. Cosa succede se voglio che apra tutti i file corrispondenti in una scheda separata? Ci deve essere un modo per farlo, ma non riesco a trovarlo.

+1

Questo appartiene a SuperUser. – Incognito

+0

Correlati: [Come posso aprire più schede contemporaneamente?] (Http://vi.stackexchange.com/questions/2108/how-can-i-open-multiple-tat-once) a Vim SE – kenorb

risposta

28

Si potrebbe utilizzare l'elenco args e argdo in questo modo:

:args **/test*.py 
:argdo tabe % 

Tuttavia, l'evento di sintassi è disattivata per argdo (per accelerare il normale caso d'uso), in modo che i file verranno caricati senza sintassi All'inizio. È possibile seguirlo con un :syntax on per forzare l'evento di sintassi su tutti i buffer caricati. Compresso in una sola riga (necessità di avvolgere argdo in execute in modo che non assorbe il seguente |):

:args **/test*.py | execute 'argdo tabe %' | syntax on 

In alternativa, è possibile aprire vim dalla riga di comando tramite:

vim -p **/test*.py 

Ma questo uscirà al massimo a 10 schede.

+1

grazie Un sacco! ora, come posso rendere il pattern un parametro così posso mappare lo script a un nuovo comando e posso farlo, ad es. ': tabeall **/test * .py'? –

+0

'set tabpagemax = 100' consentirà a vim di aprire 100 schede. – sixtyfootersdude

1

di creare una mappa

nmap <c-d> :args **/*.tpl<bar>execute 'argdo tabe %'<bar>syntax on<cr> 

Ma ancora visualizza l'elenco dei file, è necessario premere Invio paio di volte (a seconda del numero di file).

+0

Oppure 'nmap : args **/*. Tpl^M argdo tabe%^M sintassi su^M' Utilizzare Control-Q per digitare il carattere^M (letterale newline). Mostra comunque la lista dei file, comunque. –

7

È possibile utilizzare il seguente:

:next **/test*.py 

Si apre tutti i file.

Problemi correlati