2012-01-06 16 views
5

Siempre trabajo en proyectos múltiples al mismo tiempo. El desglose de la cantidad de archivos que tengo es el siguiente¿Hay algún complemento/forma de administrar proyectos múltiples en Vim?

Project | Files 
-------------------------- 
    Thesis   20 
    Simulator  50 
    Plots   30 
    Graphs   30 
    Website  500+ 

Tener todos estos archivos en una ventana es engorroso. Hay varias opciones, y discutiré sus drawbracks, o me atrevería a decir su talón de Aquiles.

  1. división de Windows que podría dividir en 5 vim ventanas, una para cada proyecto, pero que también podría ser la codificación a través de un agujero de alfiler. En realidad, nunca me gustaron las ventanas divididas, excepto en los casos en los que constantemente comparas y editas dos archivos relacionados. Además, no encuentro la navegación en dos dimensiones tan perfecta como en la dirección horizontal solamente.

  2. aquí Tablatura, o más bien las ventanas gráficas tontamente llamados pestañas, parecen ser exactamente para este tipo de problema, pero que no proporcionan restricciones para los tampones a utilizar. Por ejemplo, si estoy en mi pestaña Thesis, quiero navegar solo por esos 20 búferes, no todos los más de 500 buffers relacionados con el sitio web. Como estoy guardando estos como sesiones, podría ocasionar problemas si cambio accidentalmente a un buffer website en mi pestaña Thesis, salgo, luego al ingresar tengo dos pestañas website. Esto es aún más problemático porque he establecido directorios locales (:lcd) para cada pestaña.

  3. Terminal aquí Uso de las fichas de terminales asegura que los tampones que en cada pestaña siendo independiente. Sin embargo, cada sesión de vim ya no puede compartir información. No puedo arrastrar el texto de una terminal a la otra (supongo que podría ingresar al registro +). Tampoco puedo usar :buffdo en todos los buffers. Además, me gusta el hecho de que puedo guardar todas mis pestañas vim en una sola sesión.

sé SO es anatema para la discusión pública, así que en vez voy a preguntar si existe una manera de lograr la funcionalidad estoy esforzando.

EDIT Una buena manera de resumir lo que necesito es decir que quiero "sub-buffers".

EDIT Lo que quiero sacar de las pestañas en vim es la capacidad de usarlas más efectivamente como lo que realmente son: viewports. Quiero poder tener una pestaña exclusivamente para mi sección Tesis. En esta sección, cambiaré el directorio local para reflejarlo. Además, quiero filtrar los almacenamientos intermedios en esa tabla para que sean solo un subconjunto de todos los almacenamientos intermedios. De manera similar, en la pestaña Simulador, quiero usarlo exclusivamente para mis archivos Simulator.

Básicamente lo que quiero es la capacidad, a través de pestañas, para ejecutar múltiples sesiones independientes de vim, pero aún con algunas de las ventajas añadidas (es decir. El intercambio registra para poder dar un tirón)

+5

No es realmente una "solución de Vim", pero ¿por qué no utiliza un espacio de trabajo y una instancia de vim por proyecto? Para alternar entre proyectos, simplemente cambie a otro espacio de trabajo donde todo esté configurado de la manera que desee para ese proyecto. – beta

+0

Muchas veces tomo los resultados de las tramas y los pongo en Tesis, luego tomo las fórmulas de Tesis y las pongo en el Simulador. Lo que quiero son subtampones. – puk

+1

No llamaría "mucha gente" a 3 personas. De hecho, no entiendo nada de tu flujo de trabajo. ¿Por qué siempre 'cd'? ¿Por qué no alias tus scripts '* .py' o agregas su directorio a tu' $ PATH'? ¿O tal vez hacer todo en una ventana de Vim y asignar su secuencia de comandos a '' o lo que sea? – romainl

Respuesta

4

Encontré una manera de hacer esto. Las pestañas vim son casi inútiles. En cambio, utilicé las pestañas de los terminales Gnome.

  1. registros globales Para simular el uso de registros globales, con el fin de ser capaz de copiar y pegar a través de diferentes instancias de vim, 'tubería' el portapapeles del sistema y el registro no identificado en conjunto mediante la adición de la línea set clipboard=unnamedplus a tu. archivo vimrc. Esto tiene el efecto de todas las operaciones yank/delete ... que se copian en el portapapeles del sistema. A partir de ahí, otras instancias de vim tendrán acceso a él. De forma similar, cualquier copia que pegue fuera de vim se almacenará ahora en el registro sin nombre.

  2. Gnome Terminal Tab accesos directos Los accesos directos predeterminados para ir a las pestañas siguientes y anteriores son CtrlPág y CtrlPg Dn. Desde que uso Shiftk y Shiftj para mis memorias intermedias siguiente y anterior, Me asignan Ctrlk y Ctrlj para ir a mis pestañas siguiente y anterior. Basta con ir a la terminal de Gnome> Edición> Atajos de teclado

  3. Gnome Terminal aquí escribir un script de shell para lanzar cada instancia vim como una pestaña nueva terminal. See here for instructions

  4. instancias Vim Por último, para cada instancia vim guardar un archivo de sesión :mksession fileName

No es perfecto (por ejemplo, registros mencionados no se pueden copiar en los terminales), sino que es, en mi opinión, mucho más representativa de lo que debería hacer una ventana gráfica (aquí llamada 'pestañas').


EDITAR De hecho, me he vuelto a usar pestañas vim.Aprendí script de Vim, y se asigna mis llaves para ShiftJ y ShiftK mapa para próximas memorias intermedias anteriores/y CtrlJ y CtrlK mapa para pestañas anterior/siguiente. Luego descargué el script tabname para poder establecer nombres de pestañas significativos, luego modificar la creación de sesiones vim para guardar nombres de pestañas (ver here), luego cambiar de gVim a Vim para poder usar el modo de pantalla completa. Fue un viaje largo y arduo, pero me gustaría pensar que valió la pena.

1

Estoy de acuerdo con ehamberg .

Los buffers de Vim son globales, por lo que cualquier agrupación o división solo funcionará durante unos minutos y se romperá en la primera ocasión.

En su lugar, utilice una instancia de Vim para cada proyecto. Si realmente necesita compartir algo, siempre puede usar el portapapeles del sistema.Pruebe set clipboard+=unnamedplus para sincronizar el registro predeterminado de Vim con el portapapeles del sistema.

pero me pregunto si su forma de gestión de proyectos es racional:

  • En el punto 3 se escribe "También ya no puede utilizar: buffdo en todos los tampones.". ¿Por qué usaría un comando que funciona en todos los búferes abiertos en múltiples proyectos diferentes?

  • ¿Tiene realmente más de 500 buffers abiertos al mismo tiempo? Sé que Vim probablemente pueda manejarlo, pero ¿por qué abres tantos buffers? Hago desarrollo web para ganarme la vida y rara vez trabajo en más de una docena de archivos en un día determinado, incluso en proyectos "grandes".

+0

wrt viñeta 1: están en esa zona gris donde están algo relacionados: mi tesis genera resultados que están trazados, entonces tomo algunos de los código de prueba de esas parcelas y volver a conectarlo a mi tesis, del mismo modo, utilizo el código de mi tesis en mi simulador – puk

+0

virt bala 2: calculé que mi computadora puede manejarlo = P Pero reconsideraré mi enfoque. – puk

+0

Lo que quiero es que en cada pestaña (excepto en la pestaña del sitio web) pueda ': bn' (mapeado a' Shift + J') para recorrer los archivos en lugar de recorrer 600+ archivos – puk

1

El complemento BufExplorer puede agrupar almacenamientos intermedios por ficha. El plugin CtrlP puede reutilizar el buffer desde otra pestaña.

+0

También hay vimscript hecho en casa https://github.com/DXist/dotvim/blob/master/after/plugin/lighthouse.vim que utilizo para agrupar proyectos por pestañas. Maneja el proyecto para cada pestaña y buffer. Los proyectos se configuran en el archivo .vim/projects.vim. –

1

Estaba usando varias instancias de vim para trabajar simultáneamente con diferentes proyectos pero no fue satisfactorio. Terminé teniendo muchas pestañas abiertas en mi terminal.

He estado usando vim-rooter, que es un complemento simple que cambiará automáticamente el directorio de trabajo a la raíz del proyecto del búfer que abra, siempre que haya un directorio .git en la raíz del proyecto. Solo se activará al abrir archivos con ciertas extensiones, pero esa lista se puede personalizar. Funciona con ctrlp y cualquier otro plugin.

1

Tengo este mismo problema durante mucho tiempo, trabajando al mismo tiempo con varios proyectos.

Para resolver parcialmente esta frustración, he usado este plugin https://github.com/xolox/vim-session.

vim-session facilitan la navegación entre sesiones y en cada sesión tenemos un proyecto. Después de usar esto algunas semanas, me sentí frustrado porque necesita cada vez que necesita cambiar, todos los cambios de los archivos de la sesión actual deben guardarse.

La mejor solución para mí ahora es Spacemacs con el modo Vim. Me gusta mucho el espíritu de edición que ofrece Vim y la experiencia es la misma con Spacemacs + mejor manejo de proyectos + mejor integración de git.

Cuestiones relacionadas