He examinado la posibilidad de utilizar pestañas en Vim (con :tabe
, :tabnew
, etc.) como un reemplazo para mi práctica actual de tener muchos archivos se abren en la misma ventana en tampones ocultos.
Me gustaría que cada archivo distinto que he abierto esté siempre en su propia pestaña. Sin embargo, hay algunas cosas que se interponen en el camino de esto. ¿Cómo soluciono esto?
Cuando los comandos les gusta
gf
y^]
saltan a una ubicación en otro archivo, el archivo se abre en un nuevo búfer en la pestaña actual. ¿Hay alguna manera de hacer que todos estos tipos de comandos abran el archivo en una nueva pestaña o cambien a la pestaña existente con el archivo si ya está abierto?Al cambiar buffers puedo usar
:b <part of filename><tab>
y completará los nombres de archivos en buffers existentes.<part of filename>
incluso puede ser el medio de un nombre de archivo en lugar del principio. ¿Hay un equivalente para cambiar de pestaña?
Llegué un poco tarde a la fiesta, pero me sorprendió no haber visto lo siguiente en esta lista:
:tab sball
- Esto abre una nueva pestaña para cada búfer abierto.:help switchbuf
- esto controla el comportamiento de cambio de búfer, intente:set switchbuf=usetab,newtab
. Esto debería significar cambiar a la pestaña existente si el búfer está abierto o crear uno nuevo si no.fuente
switchbuf
-set switchbuf=useopen
es grande para evitar el comportamiento molesto de:make
,:vimgrep
y comandos similares que cambia las memorias intermedias en el diseño de la ventana, incluso cuando ya se ha mostrado el búfer.:se switchbuf=usetab,newtab
, cuando se usabn
para cambiar el búfer, ¿aún abre el archivo del búfer en la pestaña actual en lugar de cambiar a la pestaña existente? ¿Hay algo mal?Vim
:help window
explica bastante bien la confusión "pestañas vs amortiguadores".La apertura de múltiples archivos se logra en vim con buffers . En otros editores (por ejemplo, notepad ++) esto se hace con pestañas, por lo que la pestaña de nombre en vim puede ser engañosa.
Windows tiene el propósito de dividir el espacio de trabajo y mostrar múltiples archivos (buffers) juntos en una pantalla. En otros editores, esto podría lograrse abriendo múltiples ventanas GUI y reorganizándolas en el escritorio.
Finalmente, en esta analogía, las páginas de pestañas de vim corresponderían a múltiples escritorios, es decir, diferentes reordenamientos de ventanas.
Como
help: tab-page
explica vim , se puede usar una página de pestañas cuando se desea editar temporalmente un archivo, pero no se desea cambiar nada en el diseño actual de ventanas y buffers. En tal caso, se puede usar otra página de pestañas solo para editar ese archivo en particular.Por supuesto, debe recordar que mostrar el mismo archivo en muchas páginas de pestañas o ventanas daría lugar a mostrar la misma copia de trabajo (búfer).
fuente
buffer
= objeto ,window
= panel ytab
= ventana . Puedo moverme por la habitación y mirar desde diferentes ventanas (tabs
). Las diferentes ventanas pueden tener diferentes números, arreglos y tamaños de paneles . El mismo objeto se puede ver simultáneamente desde diferentes paneles en diferentes ventanas .vim
uso. Al principio solo había una ventana . Los gestores de ventanas le permitieron dividir las ventanas en paneles (mosaico WM) o en paneles superpuestos (WM flotante), pero todavía se referían a cada panel como una ventana. Ahora agregue el concepto de un espacio de trabajo donde el panel se puede mostrar en múltiples espacios de trabajo. Entonces, en este paradigma,buffer
= aplicación ,window
= ventana ytab
= espacio de trabajo .Al contrario de algunas de las otras respuestas aquí, digo que puedes usar pestañas como quieras. vim fue diseñado para ser versátil y personalizable, en lugar de obligarlo a trabajar de acuerdo con parámetros predefinidos. Todos sabemos cómo a nosotros los programadores nos encanta imponer nuestra "ética" a todos los demás, por lo que este logro es sin duda una característica principal.
<C-w>gf
es la pestaña equivalente delgf
comando de los buffers .<C-PageUp>
y<C-PageDown>
cambiará entre pestañas. (En Byobu, estos dos comandos nunca funcionan para mí, pero funcionan fuera de Byobu / tmux. Las alternativas songt
ygT
.)<C-w>T
Moverán la ventana actual a una nueva pestaña.Si prefiere que vim use una pestaña existente si es posible, en lugar de crear una pestaña duplicada, agréguela
:set switchbuf=usetab
a su archivo .vimrc. Puede agregarnewtab
a la lista (:set switchbuf=usetab,newtab
) para forzar que los comandos QuickFix que muestran errores de compilación se abran en pestañas separadas. Prefiero ensplit
cambio, que abre los errores de compilación en una ventana dividida.Si tiene habilitado el soporte para mouse
:set mouse=a
, puede interactuar con las pestañas haciendo clic en ellas. También hay un+
botón por defecto que creará una nueva pestaña.Para la documentación en pestañas, escriba
:help tab-page
en modo normal. (Después de hacer eso, puede practicar mover una ventana a una pestaña usando<C-w>T
). Hay una larga lista de comandos. Algunos de los comandos de la ventana tienen que ver con pestañas, por lo que es posible que también desee ver esa documentación a través de:help windows
.Adición: 2013-12-19
Para abrir varios archivos en vim con cada archivo en una pestaña separada, use
vim -p file1 file2 ...
. Si eres como yo y siempre olvidas agregar-p
, puedes agregarlo al final, ya que vim sigue las reglas normales de análisis de opciones de línea de comando. Alternativamente, puede agregar una asignación de alias bashvim
avim -p
.fuente
vim -p
sin embargo, tenga en cuenta que solo se mostrarán hasta 10 pestañas de forma predeterminada. Los archivos adicionales se cargan en buffers, pero no se muestran en su propia pestaña.tabpagemax
configuraciónTuve el mismo problema. Quería que las pestañas funcionaran como buffers y nunca logré conseguirlas. ¡La solución que finalmente decidí fue hacer que los buffers se comporten como pestañas!
Eche un vistazo al complemento llamado Mini Buffer Explorer , una vez instalado y configurado, podrá trabajar con los buffers de la misma manera que las pestañas sin perder ninguna funcionalidad.
fuente
Esta es una respuesta para aquellos que no están familiarizados con Vim y que provienen de otros editores de texto (en mi caso, Sublime Text).
Leí todas estas respuestas y aún no estaba claro. Si los lees lo suficiente, las cosas comienzan a tener sentido, pero me llevó horas ir y venir entre preguntas.
Lo primero es, como otros han explicado:
Las páginas de pestañas , se parecen mucho a las pestañas , actúan como pestañas y se parecen mucho a las pestañas en la mayoría de los otros editores de GUI, pero no lo son. Creo que es un mal modelo mental construido en Vim, que desafortunadamente nubla el poder extra que tienes dentro de una página de pestañas.
La primera descripción que entendí fue de la respuesta de @ crenate es que son equivalentes a múltiples escritorios. Cuando se lo ve en ese sentido, solo tendrá un par de escritorios abiertos, pero tendrá muchas ventanas GUI abiertas dentro de cada uno.
Yo diría que son similares a otros editores / navegadores:
Cuando los ve así, se da cuenta del poder de ellos de que puede agrupar fácilmente conjuntos de archivos (buffers) juntos, por ejemplo, sus archivos CSS, sus archivos HTML y sus archivos JS en diferentes páginas de pestañas. Lo que en realidad es bastante asombroso.
Otras descripciones que encuentro confusas
Viewport
Esto no tiene ningún sentido para mí. Una ventana gráfica que, aunque tiene un término de diccionario definido , solo he oído referirse a las ventanas de Vim en el
:help window
documento. Viewport no es un término que haya escuchado con respecto a editores como Sublime Text, Visual Studio, Atom, Notepad ++. De hecho, nunca había oído hablar de eso para Vim hasta que comencé a intentar usar páginas con pestañas.Si ve páginas con pestañas como varios escritorios, entonces, hacer referencia a un escritorio como una sola ventana parece extraño.
Espacios de trabajo
Posiblemente esto tenga más sentido, la definición del diccionario es:
Entonces es como un lugar donde almacena un grupo de buffers.
Inicialmente no parecía el concepto de Sublime Text de un espacio de trabajo que es una lista de todos los archivos que tienes abiertos en tu proyecto:
Sin embargo, pensando más en esto, esto realmente está de acuerdo. Si considera una página de pestaña Vim como un proyecto de Sublime Text, entonces parecería extraño tener solo un archivo abierto en cada proyecto y seguir cambiando entre proyectos. Por lo tanto, es extraño usar una página de pestañas para abrir solo un archivo.
Colección de ventanas
Se
:help window
refiere a las páginas de pestañas de esta manera. Además, muchas otras respuestas usan el mismo concepto. Sin embargo, hasta que entiendas lo que es una ventana vim, entonces no sirve de mucho, como construir un castillo en la arena.Como mencioné anteriormente, una ventana vim es lo mismo que una ventana gráfica y silenciosa, excelentemente explicada en este artículo de linux.com :
Me resulta extraño que una página de pestañas se denomine una colección de ventanas en lugar de una colección de buffers. Pero supongo que puede tener dos páginas de pestañas separadas, cada una con múltiples ventanas, todas apuntando al mismo búfer, al menos eso es lo que entiendo hasta ahora.
fuente
Mirando: pestañas de ayuda no parece que vim quiera trabajar como tú ...
Los buffers se comparten entre pestañas, por lo que no parece posible bloquear un buffer determinado para que aparezca solo en una pestaña determinada.
Sin embargo, es una buena idea.
Probablemente podría obtener el efecto que desea utilizando un terminal que admita pestañas, como terminal multi-gnomo, y luego ejecute instancias vim en cada pestaña de terminal. Aunque no es perfecto ...
fuente
Puede asignar comandos que normalmente manipulan los búferes para manipular pestañas, como he hecho con gf en mi .vimrc:
Estoy seguro de que puedes hacer lo mismo con [^
No creo que vim sea compatible con esto para pestañas (todavía). Uso gt y gT para pasar a las pestañas siguiente y anterior, respectivamente. También puede usar Ngt, donde N es el número de la pestaña. Una molestia que tengo es que, por defecto, el número de la pestaña no se muestra en la línea de la pestaña. Para solucionar esto, puse un par de funciones al final de mi archivo .vimrc (no pegué aquí porque es largo y no se formateó correctamente).
fuente
<c-w>gf
abrirá el nombre del archivo debajo del cursor en una nueva pestañaUso buffers como pestañas, usando el plugin BufExplorer y algunas macros:
Con BufExplorer no tienes una barra de pestañas en la parte superior, pero por otro lado ahorra espacio en tu pantalla, además puedes tener un número infinito de archivos / buffers abiertos y la lista de búferes se puede buscar ...
fuente
Si desea que los búferes funcionen como pestañas, consulte el complemento de tabulación .
Utiliza una sola ventana y agrega una línea en la parte superior para simular las pestañas (solo muestra la lista de buffers). Esto salió hace mucho tiempo cuando las pestañas solo eran compatibles con GVim pero no en la línea de comando vim. Como solo funciona con buffers, todo se integra bien con el resto de vim.
fuente