2010-07-31 19 views
22

Digamos que tengo un archivo comprimido de todas mis configuraciones de vim, todo normalmente dentro de ~/.vim (complementos, carga automática, colores, todo eso) y un archivo vimrc. Extraigo esto en un directorio en alguna parte. Entonces en el directorio donde estoy ($ PWD), hay una carpeta "vim" y un archivo "vimrc". (nota: este directorio será de solo lectura, por lo que vim no debería intentar escribir en él).¿Cómo puedo anular las rutas ~/.vim y ~/.vimrc (pero no otras) en vim?

Qué argumentos de línea de comandos o variables de entorno puedo dar a VIM para asegurar que todos mis plugins, sintaxis, etc. se carga así como el vimrc, en el mismo orden en que normalmente serían si estuvieran ubicados en ~/.vim y ~/.vimrc

Como extra, me gustaría ignorar el ~/.vimrc de la computadora host y ~/.vim si es posible (pero esto no es obligatorio).

Si se está preguntando por qué no solo tiro los archivos en ~/.vimrc y ~ /, vim, estoy tratando de empaquetar mi propia configuración de vim y llevármela. No quiero destruir la configuración vim de la computadora que estoy usando, solo quiero iniciar una sesión vim con mi configuración.

+0

He usado lo siguiente en el pasado, pero las funciones de autocarga parecen no funcionar (cuando se llaman desde mi vimrc): 'vim --cmd" set runtimepath + = $ (dirname $ 0)/vim, $ VIMRUNTIME "-u" $ (dirname $ 0) "/ vimrc" $ @ "' – gfxmonk

Respuesta

28

tengo un portátil .vim carpeta exactamente como usted la describe, esta es la forma en que he configurarlo:

  • Ponga su portátil .vimrc archivo dentro de su carpeta .vim.

  • añadir las siguientes líneas al inicio de su portátil .vim/.vimrc:

 
" set default 'runtimepath' (without ~/.vim folders) 
let &runtimepath = printf('%s/vimfiles,%s,%s/vimfiles/after', $VIM, $VIMRUNTIME, $VIM) 

" what is the name of the directory containing this file? 
let s:portable = expand('<sfile>:p:h') 

" add the directory to 'runtimepath' 
let &runtimepath = printf('%s,%s,%s/after', s:portable, &runtimepath, s:portable) 
  • inicio vim utilizando: vim -u /path/to/portable/vim/.vimrc.
+1

Parece que falta un '' en expandir. Creo que debería ser 'let s: portable = expand (': p: h')'. Solo funcionó así para mí. Vim 7.3 – RedX

+0

conjunto no compatible debe ser la primera línea. Parece que -u lo desactiva por defecto. –

+0

En lugar de 's: portable' yo uso (en vim' 7.4') env.variable. – pevik

3

En Unix & sistemas Linux (y tal vez Windows) Vim usa la variable de entorno $ HOME para localizar el archivo .vimrc y el directorio .vim. Para que pueda entrar al directorio donde tiene sus versiones personalizadas y empezar a vim o gVim así:

HOME=. vim files.... 
+1

buena idea, pero hay un par de problemas: (1) esto rompe la apertura de archivos utilizando ~ (como: e ~/Docs/whatever.txt). (2) Olvidé mencionar esto, pero el directorio de trabajo tiene que ser de solo lectura (actualizaré la pregunta). vim se queja cuando no puede escribir en ~/.viminfo, etc. – gfxmonk

+0

Esto resolvió mi problema de ejecutar diferentes versiones de vim desde diferentes directorios y con diferentes archivos vimrc. ¡Gracias! – tandrewnichols

0

Este "vimrc File and Vim Runtime Directories" screencast podría ser útil, así como la vim documentation for 'runtimepath', que establece lo siguiente:

This is a list of directories which will be searched for runtime files: 
     filetype.vim filetypes by file name |new-filetype| 
     scripts.vim filetypes by file contents |new-filetype-scripts| 
     autoload/ automatically loaded scripts |autoload-functions| 
     colors/ color scheme files |:colorscheme| 
     compiler/ compiler files |:compiler| 
     doc/  documentation |write-local-help| 
     ftplugin/ filetype plugins |write-filetype-plugin| 
     indent/ indent scripts |indent-expression| 
     keymap/ key mapping files |mbyte-keymap| 
     lang/  menu translations |:menutrans| 
     menu.vim GUI menus |menu.vim| 
     plugin/ plugin scripts |write-plugin| 
     print/ files for printing |postscript-print-encoding| 
     spell/ spell checking files |spell| 
     syntax/ syntax files |mysyntaxfile| 
     tutor/ files for vimtutor |tutor| 

    And any other file searched for with the |:runtime| command. 

    The defaults for most systems are setup to search five locations: 
    1. In your home directory, for your personal preferences. 
    2. In a system-wide Vim directory, for preferences from the system 
     administrator. 
    3. In $VIMRUNTIME, for files distributed with Vim. 

          *after-directory* 
    4. In the "after" directory in the system-wide Vim directory. This is 
     for the system administrator to overrule or add to the distributed 
     defaults (rarely needed) 
    5. In the "after" directory in your home directory. This is for 
     personal preferences to overrule or add to the distributed defaults 
     or system-wide settings (rarely needed). 
+0

gracias. De hecho, había intentado configurar Runtimepath, pero no parecía funcionar para cargar funciones de patógenos (vive en autocarga, lo que pensé que estaba causando problemas). Resultó que solo estaba rescatando por otros motivos (el modo cp estaba activado). Mi script final establece $ VIM_BASE, y mi skelton vimrc agrega $ VIM_BASE a runtimepath y luego fuentes el * real * vimrc. – gfxmonk

0

Mi solución no es exactamente la misma, pero podría adaptarse bastante fácilmente.

Tengo mi configuración de Vim en mi estación de trabajo y se comparte mediante el uso compartido habitual de archivos de Windows. Tengo este archivo por lotes que puedo abrir desde cualquier otra computadora en el edificio (y hay una instalación de Vim en otra red compartida, ya que la mayoría de las estaciones de trabajo ni siquiera tienen instalado Vim). Simplemente ejecuto este archivo por lotes y estoy en mi lugar feliz.

set MYWORK=\\my_pc\work 
set RCBASE=%MYWORK%\personal\utilities\tom. 

start \\server\software\vim\vim73\gvim.exe -u %RCBASE%vimrc -U %RCBASE%gvimrc 

Así que, básicamente, la adaptación pondría el archivo por lotes, shell script, o de otra manera en el archivo que estás desembalar y poner en marcha el sistema de vim con sus archivos locales.

Cuestiones relacionadas