Alterna entre duas configurações diferentes do vim?

8

Eu tenho uma pasta .vimrc e .vim Eu estive tweaking por um tempo, mas na minha máquina em um novo trabalho, eu acabei de instalar os dotfiles de ryanb (que contém arquivos de configuração para o vim, git e mais). Há coisas que eu gosto em cada configuração, então, em última análise, quero combiná-las em uma nova configuração pessoal. Enquanto isso, gostaria de poder mudar de um lado para o outro.

Existe um comando fácil para isso no vim - "use o seguinte diretório .vimrc e .vim" - ou seria mais simples trocar os arquivos quando eu quiser mudar?

Nathan Long
fonte

Respostas:

6

o -u opção permitirá que você especifique um arquivo de configuração diferente de ~ / .vimrc, mas não há nenhuma opção para especificar uma alternativa para o diretório ~ / .vim. No entanto, você pode fazer com que o Vim use um diretório diferente, modificando a opção 'runtimepath' ('rtp') em cada um dos seus arquivos de configuração. Por exemplo, você poderia usar este comando

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

em um dos seus arquivos de configuração para dizer ao Vim para usar o diretório ~ / .vim1 ao invés do diretório ~ / .vim.

garyjohn
fonte
Eu estou supondo que eu possa usar isso para manter tudo no Dropbox :)
Michael Caron
1
@Michael Caron - você pode manter seu .vimrc e .vim em qualquer lugar que você goste, contanto que você tenha links simbólicos em sua pasta pessoal para onde quer que você os coloque. Pessoalmente, eu uso esse truque para manter todas as minhas configurações em um .dotfiles pasta, que eu posso sincronizar com o Github.
Nathan Long
3

-u diz ao vim para usar um arquivo vimrc alternativo.

Ignacio Vazquez-Abrams
fonte
Eu aprendi recentemente que vim -u "NONE" abre baunilha vim, sem configuração. Isso pode ser útil se você tiver uma configuração complexa e quiser saber se algum comportamento é nativo do Vim ou não. (Isso também funciona para o MacVim - eu não experimentei o Gvim no Linux.)
Nathan Long
0

Alternar configuração substituindo o link simbólico de diretório

Eu tenho seguinte configuração:

❯ 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

Se você quer mudar para uma configuração diferente, você simplesmente tem que executar

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

Opcional: função shell com aba completa para configuração de comutação

Se você é ambicioso, você poderia escrever uma função de shell mínima com autocompletion para torná-lo superconveniente. Por exemplo, se você usa zsh, você poderia 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
}

Ele já fornece conclusão de tabulação e funciona em todos os lugares no seu sistema de arquivos:

❯ 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

(nome da função roubado de https://github.com/dawsbot/swim )

Hotschke
fonte