2010-08-12 28 views
16

En un directorio de trabajo dado, si lo hago¿Cómo hago que vim abra todos los archivos que coincidan con un patrón en diferentes pestañas?

:tabe **/test*.py 

vim se queja con E77: Too many file names. ¿Qué sucede si quiero que se abra cada archivo coincidente en una pestaña separada? Debe haber una forma de hacerlo, pero no puedo encontrarlo.

+1

Esto pertenece a SuperUser. – Incognito

+0

Relacionado: [¿Cómo puedo abrir varias pestañas a la vez?] (Http://vi.stackexchange.com/questions/2108/how-can-i-open-multiple-tabs-at-once) en Vim SE – kenorb

Respuesta

28

Se puede utilizar la lista args y argdo así:

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

Sin embargo, el evento de sintaxis está desactivado de argdo (para acelerar el caso de uso normal), por lo que los archivos se cargan sin sintaxis primero. Puede hacer un seguimiento con :syntax on para forzar el evento de sintaxis en todos los búferes cargados. Comprimida en una línea (necesita para envolver argdo en execute por lo que no absorbe la siguiente |):

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

alternativa, puede abrir vim desde la línea de comandos a través de:

vim -p **/test*.py 

Pero eso alcanzará un máximo de 10 pestañas.

+1

gracias ¡mucho! ahora, ¿cómo podría hacer que el patrón sea un parámetro para poder asignar la secuencia de comandos a un nuevo comando y puedo hacerlo, por ej. ': tabeall **/test * .py'? –

+0

'set tabpagemax = 100' permitirá a vim abrir 100 pestañas. – sixtyfootersdude

1

hacer un mapa

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

Pero aún así, lista de archivos muestra, hay que pulsar introducir varias veces (dependiendo del número de archivos).

+0

O 'nmap : args **/*. Tpl^M argdo tabe%^sintaxis M en^M' Utilice Control-Q para escribir el carácter^M (literal nueva). Aún así, muestra la lista de archivos. –

7

Usted puede usar la siguiente:

:next **/test*.py 

Se abre todos los archivos.

Cuestiones relacionadas