2010-10-15 17 views
14

Cuando se trata de .vimrc archivos de configuración en Linux y Windows (dos sistemas que he estado usando hasta ahora) y tratando de mantener configuraciones multi-plataforma, he encontrado principalmente dos soluciones:Pros y contras para cada solución multiplataforma vimrc?

  1. crear un nuevo carpeta para archivos vim en /home/user, por lo que ambos sistemas tienen el mismo nombre de directorio vim (en lugar del predeterminado .vim en Linux y vimfiles en Windows), y usan set runtimepath para obtener esta nueva carpeta;

    conjunto runtimepath = ~/vim_local, $ VIMRUNTIME source ~/vim_local/vimrc

    Source

  2. Crear un grupo de condiciones del sistema operativo (como has("32")) en .vimrc cuando sea necesario, basado en la plataforma o capabilities , pero manteniendo los nombres originales de Unix y creando enlaces simbólicos en la carpeta principal de Windows a los archivos originales (vimfiles a .vim en algún lugar, tal vez un directorio .vim en Windows home, o incluso una carpeta de Dropbox). (No he probado este enfoque en versiones anteriores de Windows como XP).

¿Qué solución prefiere y por qué? ¿Cuáles son las desventajas de cada solución? ¿Qué otras soluciones tienes? (Puede publicar su propio .vimrc aquí también para discutir.)

Si utiliza algún control de código fuente en sus archivos de configuración .vimrc, también puede versionar sus archivos de complemento (por lo que cuando "implementa" su configuración en las computadoras, solo haga un checkout/clon desde su repositorio)? Mucha gente usa pathogen y mantiene cada complemento dentro de su propia carpeta (generalmente un repositorio gitub de gitub). ¿Tiene sentido controlar la versión de un complemento que ya es un repositorio de otro lugar?

Respuesta

8

Uso algo que se aproxima a la opción 2, pero probablemente sea la opción 3. Guardo todo en una sola carpeta llamada ~/.vim o c:\vim\vimfiles. Estas son versiones controladas con Bazaar y almacenadas en un servidor con acceso sftp. Al instalar vim en una nueva máquina de Windows (con Bazar), lo puse en c:\vim\vim73 y hago:

bzr co sftp://<username>@<server>/path/to/vimfiles 
copy vimfiles\vimrc_linker.vim _vimrc 

en máquinas Linux que hago:

cd 
bzr co sftp://<username>@<server>/path/to/vimfiles .vim 
ln -s .vim/vimrc_linker.vim .vimrc 

vimrc_linker.vim contiene una línea:

runtime vimrc 

que abre el archivo llamado vimrc que se almacena en .vim (o vimfiles en Windows). Esto me permite mantener mi vimrc bajo el mismo control de versión que el resto del directorio .vim. Como normalmente uso cygwin Bazaar en Windows, guardo todos los complementos con terminaciones de línea Unix para evitar problemas de compatibilidad (tanto Windows & vims de Linux hacen frente a terminaciones de línea de Unix en complementos, pero a Linux no le gustan los finales de línea de Windows).

El uso del control de versiones me permite mantener todas las PC que utilizo sincronizadas muy fácilmente y si instalo un plugin y no me gusta, puedo revertir el cambio sin tener que pensar en qué archivos fueron instalados por ese complemento (el VCS me dice).

En cuanto a las condiciones del os, utilizo has("win32") etc. para diferenciarme. Sin embargo, hay muy pocas situaciones que requieran esta diferenciación, por lo que es un inconveniente menor. Mi vimrc es de 1000 líneas de largo (que tiene un buen número de funciones que nunca he regresado a dividir a cabo en plugins) y sólo alrededor del 10-15 se encuentran dentro de los bloques: has

  • configuración de fuentes
  • Path a ctags/cscope ya que tengo un ejecutable de Windows en vimfiles para la facilidad de conseguir que funcione en múltiples PCs sin un montón de instalar
  • Deshacer ubicación dir
  • un mapeo (,x) para maximizar la ventana GVim: esto se hace de manera diferente en Windows & Linux
  • En Windows, algunas asignaciones para vimtweak.dll para pasar a pantalla completa (sin barra de título ni nada). No he encontrado un equivalente para Linux.
+0

Gracias por compartir su configuración. Hay algunos enfoques interesantes aquí. –

+0

Uso el mismo enfoque y funciona muy bien. –

6

pongo esto en mi .vimrc:

set runtimepath^=~/.vim "Use instead of "vimfiles" on windows 

por lo que el nombre del directorio .vim estancias en ambas plataformas. Podría usar una condición de os para ejecutar esto solo en Windows.

He encontrado que es mejor ser lo más unixy posible, incluso en Windows. Yo uso de Unix el fin de línea por defecto (que no quiere un CR en la configuración de vim, sobre todo):

set fileformats=unix,dos,mac 

y las fuentes específicas de la plataforma:

set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12 

También estoy usando la versión control (git/github) para dotfiles/config/etc en mi directorio de inicio, y funciona muy bien. El único truco fue configurar los archivos ignorados correctamente para que no se me informara constantemente de todos los archivos allí. No quiero la versión (tuve que usar .git/info/exclude porque .gitignore en la carpeta de inicio tiene un significado especial).

+1

"He descubierto que es mejor ser lo más unico posible, incluso en Windows". Enfoque interesante, eso es lo que creo también. –

+1

Es mejor anteponer "~/.vim", de lo contrario "call pathogen # helptags()" falla al buscar el directorio doc (dado un ~/vimfiles/doc vacío/obsoleto). – blueyed

+0

@blueyed, gracias. Solucionado (en la pregunta y mi configuración local) –