Si yo uso:
:tabedit file1 file2
Yo obtengo:
E172: Only one file name allowed
¿Hay alguna forma de usar :tabedit
con múltiples nombres de archivo? ¿O otra forma de abrir varias pestañas a la vez?
tabbed-user-interface
Martin Tournoij
fuente
fuente
:args *.c | tab all
. La otra pregunta es más popular que esta, por lo que es bueno vincularla también.Respuestas:
Dados los problemas y la complejidad en mi otra respuesta usando la forma "incorporada" modificando la lista de argumentos, agregué por propia función pequeña para hacer esto:
Ahora puedes usar
:Tabedit *.vim
. Esta función expandirá todos los patrones globales y se ejecutará:tabedit <f>
para cada archivo. Puede agregar tantos nombres de ruta como desee, por ejemplo, todo esto funciona:Bueno, y así sucesivamente ...
Pongo esto en un pequeño globedit.vim plugin, que también contiene comandos para
:Edit
,:Split
, etc.fuente
[<f-args>]
lugar de"<args>"
- de esa manera, elpattern
parámetro será una Lista (matriz) y no tendrá que lidiar con la división manual de la cadena. (2) Pase un valor distinto de cero como tercer argumento paraglob()
que devuelva una Lista. Entonces puede evitar dividirse manualmente allí también. Tendrá que pasar0
como segundo argumento para omitir sin afectar el comportamiento:glob(l:p, 0, 1)
.Hasta donde sé, la única forma integrada de hacer esto es:
Primero,
:args
reemplazará la lista de argumentos. La lista de argumentos enumera los archivos con los que abrió Vim; por lovim file1 file2
medios que contiene la lista de argumentosfile1
efile2
.Podemos modificar esto en tiempo de ejecución, y Vim abrirá un búfer para cada nueva entrada en la lista de argumentos.
Ver
:help argument-list
para más información.El
:all
comando abre una ventana para cada entrada en la lista de argumentos, el:tab
comando ejecuta un comando y abre una nueva pestaña cuando el comando dado abriría una nueva ventana.Advertencias
Hay algunas advertencias a este método.
En primer lugar, no hay verificación de duplicados, por lo que puede terminar con 2 o más pestañas para el mismo búfer.
Pero el mayor problema es que reemplaza todas sus pestañas con lo que está en la lista de argumentos; entonces perdiste todas las pestañas existentes.
Puede eludir esto un poco usando
:argadd *.vim
para agregar a la lista de argumentos, en lugar de reemplazarlo; pero comandos como:edit
o:tabedit
no , no altera la lista de argumentos, y se perderá esas pestañas menos que se agregan a la lista de argumentos (que todavía tiene en la lista de amortiguamiento, sin embargo). También es posible que no desee abrir todo en su lista de argumentos en una pestaña, tal vez solo quiera abrir 2 archivos como una pestaña adicional.Quizás podría mejorar esto un poco agregando primero agregar todas las pestañas abiertas actualmente a la lista de argumentos (que realmente no puedo poner a trabajar), pero esto aún está lejos de ser perfecto. Si una pestaña tiene 2 o más ventanas, aún las modificará ...
fuente
:argdo tabedit %
, lo que abre una nueva pestaña para cada argumento. Comenzar con una pestaña y abrir n nuevas naturalmente te dejaría con n + 1 pestañas.:tab all
Es una solución mucho mejor.Puede usar el
:next
comando en su lugar, por ejemplo:o:
fuente
:args *.vim
? Al menos, se comporta igual, y lo:help next_f
documenta como el mismo ...Desde la línea de comandos puedes usar:
Y si olvidó usar
-p
todavía puede usarPor cierto, no olvides que la variable
tabpagemax
(valor predeterminado 10) limita cuántas pestañas puedes abrir de esta manera.fuente
En realidad, puede abrir nuevas pestañas y mantener sus pestañas actuales sin escribir nuevas funciones (consulte esta respuesta en Desbordamiento de pila ):
Es posible que desee abrir una nueva pestaña vacía (
:tabe
) antes de hacerlo, porque el primer archivo se abrirá en la pestaña actual. Además, una pestaña vacía adicional se dejará abierta (vea:help argdo
para entender por qué).fuente
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
Debe presionar Entrar para borrar el mensaje y escribir:close
para eliminar el último ( vacío) ... es una gran cantidad de tipeo, y solo vale la pena si está abriendo muchas pestañas (para 2 o 3 archivos, solo usar:tabe
dos veces sería más rápido).