pegar - vim insertar linea
¿Por qué los expertos de Vim prefieren los tampones a las pestañas? (9)
Agregue estos a su
.vimrc
y comience a amar los buffers:
:nnoremap <Tab> :n<cr>
:nnoremap <S-Tab> :N<cr>
De esa manera, puede avanzar / retroceder en modo normal a través de Tab / Shift Tab .
No entiendo los amortiguadores. Cuando abro 3 archivos en la misma pestaña y cierro mi ventana, generalmente me molesta descubrir la próxima vez que abro uno de esos archivos que hay archivos de intercambio extraños que persisten y me dan mensajes molestos. Pero una y otra vez leí que estas cosas son el nirvana de productividad que me estoy perdiendo y que las pestañas fueron hechas para que las plebeyas las usaran.
Entonces, le pregunto, el experto de Vim: ¿cuáles son las ventajas de usar tampones sobre pestañas?
No veo cómo la diferencia podría ser profundamente diferente, pero me consideraría solo en el nivel principiante-intermedio en el funcionamiento de Vim.
¿Es
:ls
:b#
realmente mucho más rápido que moverse?
Siento que debe ir más profundo que esto.
Cargo buffers "seleccionados" como pestañas para alternar rápidamente (TAB / S-TAB) entre ellos. El marco de los espacios de trabajo encaja aquí, ya que para mí, las pestañas VS pestañas es principalmente lo de la visibilidad. Puedo abrir archivos importantes / de trabajo en ventanas y pestañas y ocultar los que actualmente no necesito utilizar en segundo plano sobre la marcha sin tener que recordar rutas o tomar tiempo para buscarlas y cargarlas nuevamente una vez que surja la necesidad. Esto permite manejar varias tareas o proyectos en una sesión de VIM, supongo que esto solía ser importante en máquinas con poca memoria, pero también es bueno para concentrar todas las tareas de edición en un marco de aplicación. También tengo atajos de cambio de búfer configurados en Ctrl-Derecha / Izquierda para que también pueda cambiar rápidamente a través de varios búferes.
En pocas palabras, solo se puede dividir en algunas ventanas para sus usos tanto como el estado de la pantalla, pero se pueden mantener múltiples configuraciones de ventanas en varias pestañas, expandiendo así el espacio de trabajo y mejorando el flujo de trabajo permitiendo la división conveniente de tareas complicadas que giran en más de un archivo .
Para los archivos de intercambio, puede decirle a VIM que los mantenga en una carpeta de su designación.
Para este uso
:set directory
.
Como dijo ZyX en #vim, esta pregunta suena como "¿Por qué los expertos de Vim prefieren sabroso antes que caliente?" .
Los "expertos de Vim" no prefieren los buffers en lugar de las pestañas: usan buffers como los archivos proxy que son y las páginas de pestañas como los espacios de trabajo que son. Los buffers y las páginas de pestañas tienen diferentes propósitos, por lo que preferir uno a otro no tiene ningún sentido.
El problema con los tampones y las pestañas es de confusión , causado por una combinación de hechos independientes.
-
La mayoría de los editores de texto e IDE "modernos" usan una metáfora de tabulación para representar los archivos cargados. Esa metáfora actúa como un sistema de información, muestra al usuario qué archivos se abren y su estado, y como dispositivo interactivo, le permite manipular (reordenar, seleccionar, cerrar ...) esos archivos abiertos. A pesar de sus muchas limitaciones, las pestañas están en todas partes y las personas están acostumbradas a ellas y las esperan en todas partes.
-
Vim introdujo páginas de pestañas en 7.0 como una forma para que sus usuarios creen "espacios de trabajo" ad-hoc. Nada en sus funciones, sus opciones específicas, sus comandos específicos o sus secciones de
:help
sugiere que las páginas de pestañas podrían o deberían usarse como archivos proxy.Nada, excepto el nombre y la apariencia de las "páginas de pestañas", por supuesto, lo que genera mucha confusión.
-
Sin
:set hidden
, que está deshabilitado de forma predeterminada y no es muy fácil de encontrar, Vim hace que sea imposible cambiar a otro búfer sin escribir el actual o abandonar sus cambios. Los nuevos usuarios, que desconocen esa opción, no tienen más remedio que recurrir al uso de ventanas pesadas o a la función "similar a una pestaña" más cercana que pueden encontrar: páginas de pestañas.
La "página de pestañas" es una elección de nombre desafortunada para esa función, especialmente en una era dominada por la idea de que leer la documentación es una pérdida de tiempo.
En Vim, las páginas con pestañas son una abstracción construida en la parte superior de las ventanas, en sí mismas una abstracción construida en la parte superior de los buffers. Cada nuevo nivel agrega funciones útiles pero restringe su flujo de trabajo.
La "forma de amortiguación"
Con un flujo de trabajo basado en búfer, los archivos con los que está trabajando se distribuyen a lo largo de una sola dimensión. Puede desplazarse por sus buffers, puede acceder a un buffer específico escribiendo parte de su nombre (con finalización) o su número, puede alternar entre buffers, puede orientarlos con bastante facilidad. Básicamente no hay fricción.
Los buffers son los archivos proxy de Vim. Si piensa en términos de archivos, piensa en términos de buffers.
El "camino de la ventana"
Con un flujo de trabajo basado en ventanas, sus "archivos" se distribuyen a lo largo de la misma dimensión "virtual" como lo harían si solo utilizara buffers y otras dos dimensiones "físicas". Pero los espacios cartesianos en los que se encuentran esas dimensiones están casi completamente separados: moverse a otro búfer todavía significa "moverse a otro archivo", pero no a otra ventana. El búfer que corresponde al archivo deseado puede mostrarse en esa ventana, pero también puede mostrarse en otra, tal vez en otra página de pestañas, o en absoluto.
Con Windows, navegar entre archivos abiertos se vuelve demasiado complejo o demasiado simplista, incluso con
''switchbuf''
y
:sb
.
Principalmente porque se ve obligado a usar dos conjuntos de comandos para lo que es esencialmente lo mismo: acceder a un búfer.
Las ventanas tienen su uso, como se describe a continuación, pero no tienen lo necesario para reemplazar las memorias intermedias en el flujo de trabajo de nadie.
Aquí estoy trabajando en un esquema de colores Vim. Las dos ventanas son vistas diferentes del mismo búfer: la superior sirve como referencia, con una tabla de los códigos de color utilizados en el esquema de colores, y la inferior es donde trabajo:
Windows no está diseñado como archivos proxy y no se puede convertir en uno: son "contenedores" o "vistas" diseñados para ofrecerle una vista en un búfer. Ni mas ni menos.
La "forma de tabulación"
Con un flujo de trabajo basado en pestañas, esencialmente intenta imitar la experiencia del usuario a la que está acostumbrado desde su editor anterior, mientras ignora por completo la naturaleza misma de las páginas de pestañas de Vim. Si olvidamos por un momento que esta estrategia generalmente es muy improductiva, también es imposible, al igual que con Windows, obligar a Vim a adherirse a ese paradigma de "un archivo = una pestaña" sin perder mucha flexibilidad.
Aún trabajando con los mismos archivos que el anterior, la tabla ocupa un espacio significativo para prácticamente ningún beneficio.
Todos mis archivos y todas mis pestañas se llaman
javascript*.vim
así que no puedo hacer
3gt
y estoy seguro de que terminaré en el lugar correcto y es imposible llegar a una pestaña específica por nombre.
Agregue a eso el hecho de que su etiqueta puede ser muy inútil pero perfectamente lógica
[Quickfix List]
... Dado que no hay una forma práctica de vincular un archivo / búfer a una página de pestañas, básicamente le queda una sola forma práctica de navegar entre páginas de pestañas / buffers / archivos: ciclismo.
Y sí, mi línea de pestañas está cubierta con solo 8 pestañas, ¡imagínese si tuviera 20!
-
Ocho buffers abiertos en ocho páginas de pestañas (incorrecto)
-
Dos pestañas para dos tareas específicas (derecha)
Las páginas con pestañas son "contenedores" o "viewports" diseñados para contener una o más ventanas, también "contenedores" diseñados para contener buffers.
En conclusión
Los "expertos de Vim" (supongamos que puedo hablar como si fuera uno) no prefieren los tampones a las pestañas: solo usan Vim como fue diseñado y se sienten perfectamente cómodos con ese diseño:
-
Los "expertos de Vim" tienen 2, 30 o 97 buffers cargados y están muy contentos de no tener que lidiar con la distribución espacial;
-
cuando necesitan comparar dos archivos o trabajar en una parte del búfer actual mientras mantienen otro como referencia, los "expertos de Vim" usan ventanas porque así es como deben usarse;
-
cuando necesitan trabajar durante un tiempo en una parte separada del proyecto sin meterse con su vista actual, los "expertos de Vim" cargan una nueva página de pestañas.
La desventaja de las pestañas es que solo puede ver el contenido de una a la vez. Entonces, si los usa como en un navegador, está perdiendo la vista de múltiples buffers uno al lado del otro, o incluso viendo partes separadas del mismo archivo en divisiones. Por lo tanto, muchos recomiendan usar pestañas solo para segregar diferentes espacios de trabajo (por ejemplo, tener uno para un proyecto Java, otro para una lista de tareas pendientes, un tercero para piratear un script en el lateral).
Los problemas que describe hacen que parezca que está usando Vim incorrectamente.
O bien (en su mayoría) una única instancia dedicada.
Luego, los buffers que se ocultan simplemente "reaparecerán" si los vuelve a editar (y ahora puede usar la lista de buffer para recuperarlos), y no habrá mensajes de intercambio de archivos.
O bien, use instancias de Vim separadas por proyecto / archivo / sesión de edición, pero luego acostúmbrese a hacerlo completamente
:quit
cada instancia cuando haya terminado con el archivo.
Me gustaría sugerir una implementación brillante de hace un buen número de años: tabman . Aclara lo siguiente:
- Uno puede tener tantos buffers que están cuidadosamente ocultos, en algún lugar;
-
Por diseño, las pestañas están destinadas a mostrar bufferes de manera creativa.
- Con algún complemento de tabulación adecuado, se pueden mostrar todos los buffers ocultos en la fila superior (tabline);
- Según mi experiencia con vim-airline , la pestaña mostrará muy poca información relevante cuando cree una pestaña nueva.
- Dos etiquetas ocuparán la ranura de la tabla, lado a lado, desperdiciando el resto de los espacios horizontales
- Peor aún, ya no tengo idea de cuáles son los búferes que están ocultos.
Ha sido un maravilloso redescubrimiento de este complemento mágico, que también debería haber permanecido en mi configuración de Vim durante un buen número de años. Si bien seguiría buscando algo que también muestre todos los búferes ocultos, TabMan es mi superhombre cuando se trata de tener una vista panorámica de cómo se organizaron los búferes en diferentes pestañas.
Otro consejo, cuando se usa el nombre del búfer como argumento para: búfer, no tiene que especificar nombres completos. Sin embargo, si más de un búfer coincide con el argumento dado, los búferes no se cambiarán.
Cualquier fragmento del nombre del búfer se puede usar para hacer coincidir.
Por ejemplo, si tiene los buffers
queue_manager.java
y
queue_manager.java
entonces
:buffer que
o
:b que
coincide con ambos, pero cambiará a queue_manager.java como coincide al principio.
Solía mantener cada búfer en una pestaña separada, pero me cansé de tener constantemente g t y g T en todas partes.
También sentí que las memorias intermedias eran demasiado difíciles de manejar.
Aquí hay algunas técnicas que cambiaron totalmente mi opinión anterior:
-
Gestión de la memoria intermedia
:b
. Te vuelves sorprendentemente rápido en esto. Ver vim, cambiar rápidamente entre archivos usando Vanilla Vim (sin complementos) - Saltar / Cambiar listas ( ctrl o / iyg ; )
- Archivo alternativo ( ^ )
- tpope de tpope . Mapeos convenientes para volar a través de sus buffers (entre otros).
Aquí está mi flujo de trabajo típico:
-
Abra Vim y use
:e
(generalmente con una expresión regular como:e src/**/F*Bar.js
) para abrir un búfer -
Date cuenta de que necesito abrir otro archivo.
Use
:e
para eso también. Si quiero alternar entre este búfer y el búfer abierto actualmente,:vsp
:sp
o:vsp
para abrirlo en una ventana separada. - Repita hasta que tenga los 3-5 archivos que cambiaré usando las técnicas en la lista con viñetas anterior para volar entre sus buffers.
- Si quiero "comenzar de nuevo" con mis buffers, simplemente cierre Vim y vuelva a abrir.
Sentí que después de una semana de forzar estos nuevos patrones, se hizo mucho más fácil visualizar qué buffers había abierto y cómo llegar a cualquiera de ellos con solo unos pocos trazos automáticos.
Tabs y Buffers son dos estándares diferentes en Vi. Lea estas tres definiciones:
A buffer is the in-memory text of a file
A window is a viewport on a buffer.
A tab page is a collection of windows.
Lea este artículo para obtener más https://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/
Utilizo pestañas, sesiones Ctrl - P y Vim en mi flujo de trabajo y tengo desde hace más de un año:
-
Tengo ) y ( asignado a "ir a la pestaña siguiente" e "ir a la pestaña anterior" respectivamente. T n abre una pestaña nueva. También utilizo la pestaña para ayudar a mantener las cosas organizadas.
-
Utilizo sesiones de Vim para grupos de archivos relacionados con la historia / error actual en el que estoy trabajando, generalmente por categoría. Estas sesiones se sobrescriben durante el curso del proceso.
-
Todavía tengo que encontrar algo mejor que Ctrl - P , pero toma un poco procesar todos los archivos para encontrarlos.