Alternar entre dos configuraciones vim diferentes?

9

Tengo una carpeta .vimrc y .vim que he estado ajustando durante un tiempo, pero en mi máquina en un nuevo trabajo, acabo de instalar los archivos de puntos de ryanb (que contiene archivos de configuración para vim, git y más). Hay cosas que me gustan en cada configuración, por lo que, en última instancia, quiero combinarlas en una nueva configuración personal. Mientras tanto, me gustaría poder cambiar de un lado a otro.

¿Hay un comando fácil para esto en vim - "usar el siguiente directorio .vimrc y .vim" - o sería más sencillo intercambiar los archivos ellos mismos cuando quiero cambiar?

Nathan Long
fuente

Respuestas:

7

La -uopción le permitirá especificar un archivo de configuración que no sea ~ / .vimrc, pero no hay ninguna opción para especificar una alternativa al directorio ~ / .vim. Sin embargo, puede hacer que Vim use un directorio diferente modificando la opción 'runtimepath' ('rtp') en cada uno de sus archivos de configuración. Por ejemplo, podría usar este comando

let &rtp = substitute(&rtp, '\.vim\>', '.vim1', 'g')

en uno de sus archivos de configuración para decirle a Vim que use el directorio ~ / .vim1 en lugar del directorio ~ / .vim.

garyjohn
fuente
Supongo que puedo usar esto para mantener todo en Dropbox :)
Michael Caron
1
@Michael Caron: puedes guardar tu .vimrcy .vimdonde quieras, siempre que tengas enlaces simbólicos en tu carpeta de inicio a donde los pongas. Personalmente, utilizo este truco para mantener todas mis configuraciones en una .dotfilescarpeta, que puedo sincronizar con Github.
Nathan Long
3

-u le dice a vim que use un archivo vimrc alternativo.

Ignacio Vazquez-Abrams
fuente
Hace poco aprendí que se vim -u "NONE"abre vanilla vim, sin configuración. Eso puede ser útil si tiene una configuración compleja y desea saber si algún comportamiento es nativo de Vim o no. (Esto también funciona para MacVim, no he probado Gvim en Linux)
Nathan Long,
1

Alternar configuración reemplazando el enlace simbólico del directorio

Tengo la siguiente configuración:

❯ tree -L  2 ~/.vim-configs
~/.vim-configs
├── nathanl
│   ├── .git
│   ├── gvimrc
│   ├── pack
│   └── vimrc
├── ryanb
│   ├── autoload
│   ├── ...
│   └── vimrc
└── minimal
    ├── autoload
    ├── cache
    ├── doc
    ├── plugin
    └── vimrc

❯ ls -l ~/.vim
lrwxr-xr-x  1 hotschke  staff  42 Apr  3 16:35 .vim -> /Users/hotschke/.vim-configs/minimal

Si desea cambiar a una configuración diferente, simplemente tiene que ejecutar

❯ ln -snf ~/.vim-configs/configX ~/.vim

Opcional: función de shell con pestaña completa para cambiar la configuración

Si eres ambicioso, podrías escribir una función de shell mínima con autocompletado para hacer que este sea muy conveniente. Por ejemplo, si usa zsh, podría usar

# Swim - Switch Vim Configs
compdef '_path_files -/ -W ~/.vim-configs' swim
function swim {
  if [ $# -eq 0 ]
  then
    zmodload zsh/stat
    active=$(stat +link "$HOME/.vim")
    echo "Swimming with ${${active}:t}"
    echo "$HOME/.vim -> $active"
    zmodload -u zsh/stat
  else
    echo "Swimming with $1"
    ln -snfv ~/.vim-configs/$1 ~/.vim
  fi
}

Ya proporciona la finalización de pestañas y funciona en todas partes en su sistema de archivos:

❯ pwd
<somewhere in your filesystem not necessarily $HOME or $HOME/.vim>
❯ swim <Tab>
-- directory --
minimal/  nathanl/  ryanb/
❯ swim minimal
Swimming with minimal
/Users/hotschke/.vim -> /Users/hotschke/.vim-configs/minimal
❯ swim
Swimming with minimal
/Users/hotschke/.vim -> /Users/hotschke/.vim-configs/minimal

(nombre de función robado de https://github.com/dawsbot/swim )

Hotschke
fuente
Buena solución, sugiero agregar un alias para cada configuración alias vimbasic="ln -snf ~/.vim-configs/basic/ ~/.vim && vim", para que pueda cambiar su configuración simplemente escribiendo el alias vimbasic.
tonelada
1

Vim Plugin Manager Volt

https://github.com/vim-volt/volt

Instalación en macOS: $ brew install volt

La función "perfil" guarda un conjunto de complementos, vimrc y gvimrc.

Puede cambiar combinaciones con un comando. Por ejemplo, puede cambiar de una configuración de desarrollo web a complementos esenciales + vimrc o vanilla vim.

Esto también es útil para crear configuraciones mínimas al hacer preguntas sobre la red stackexchange o problemas en github para los complementos vim / vim.

Hotschke
fuente