Cuando abro vim
con varios archivos ( vim f1 f2 ...
), ¿cómo puedo hacer que los abra en pestañas directamente, sin usar -p
?
Estoy buscando separar el comportamiento de shell del comportamiento vim, eliminar los vim
alias basados en etc. Por eso preferiría no usar alias, etc. (por lo tanto, no -p
).
Estoy bastante seguro de que este se ha preguntado en algunos sitios de SE (como en SO ). Sin embargo, no estoy en condiciones de juzgar cuál sería la mejor manera de hacer esto, así que también espero una nota sobre por qué un método sugerido es bueno.
Para la publicación SO particular vinculada:
la respuesta aceptada sí
tabpagemax=9999
. Llámalo sesgo personal, pero veo que se establece un límite en un gran número y creo que hay algo mal (como me sentiría si lo vierachmod 777
).:au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
la otra respuesta lleva a que se abra una pestaña vacía adicional, mientras que es mucho más conciso.
:autocmd VimEnter * argdo tabedit
Espero una respuesta que no tenga una pestaña adicional abierta y no establezca un límite a un valor grande (o explique por qué eso no es algo malo).
:qa
por la fuerza del hábito. Si esa es la única ventaja, iría con la otra, ya que parece más simple.Respuestas:
Después de experimentar un poco, he encontrado que esta es la mejor manera; debería comportarse igual que
vim -p
:Primero,
tab all
abre todas las entradas en la lista de argumentos (:args
) en una pestaña. La lista de argumentos es una lista de archivos que le pasó a Vim en el inicio. Ytabfirst
se asegura de que la primera pestaña esté enfocada en lugar de la última (esto es opcional).No hacemos nada de esto si
&diff
está configurado; si es así, estamos usandovimdiff
ovim -d
, donde queremos tener 2 ventanas, y no 2 pestañas.En esta respuesta también he escrito un poco sobre la lista de argumentos y
tab all
cuáles pueden ser de interés.Algunas notas sobre las otras soluciones:
tab ball
abre una pestaña para cada entrada en la lista de búfer , no la lista de argumentos. El "problema" es que la lista de búfer puede guardarse en el archivo viminfo al salir y restaurarse al inicio (si%
está dentro'viminfo'
, no está habilitado de forma predeterminada). Entonces, si solo escribevim
, se abrirán esos archivos. Considero que esto no es deseado, aunque puedo imaginar que algunas personas lo encuentren útil; así que usa lo que prefieras.set tabpagemax=9999
no es requerido; el valor predeterminado es10
, y esto debería estar bien. Puede aumentar esto en su vimrc si quiere más, pero9999
es un número tonto. Si lo usa-p
, también obtendrátabpagemax
pestañas. Entonces esto debería respetar eso. Recuerde que esto abrirá (leerá) un búfer al inicio, por lo que es bastante lento.autocmd VimEnter * argdo tabedit
es la misma forma de decirtab all
. Sin embargo, el búfer inicial no se borra, por lo que te queda esa pestaña adicional (tab all
reemplaza todas las pestañas). Para solucionar esto, necesita la solución en la respuesta de Josh Petrie.fuente
Creo que agregar algo como esto
.vimrc
puede resolver sus problemas (tenga en cuenta, sin embargo, que en realidad no uso esto y solo he realizado pruebas mínimas, puede hacer cosas extrañas en algunos casos):Como notó,
argdo tabedit
le dejará una pestaña adicional vacía. Entonces, simplemente puede cerrar esa pestaña automáticamente. Sin embargo, no puede invocar simplementetabclose
sin marcar, o vim le dará un error cuando lo inicie sin argumentos o un solo archivo ("no puede cerrar la última pestaña"). En cambio, verifique si el número total de pestañas es mayor que uno (eso es lo que$
hacetabpagenr
que regrese) y solo entonces necesita cerrar la última pestaña.Dicho esto, siento que vale la pena señalar que las pestañas de vim no son como las pestañas de otros editores , y eso es algo a tener en cuenta al considerar cómo usar las pestañas en su flujo de trabajo (parece que lo sabe, pero yo desea destacar el beneficio de futuros lectores que no lo hagan para que puedan tomar sus propias decisiones).
fuente