Beralih antara dua konfigurasi vim yang berbeda?

9

Saya punya folder .vimrc dan .vim. Saya telah mengutak-atik untuk sementara waktu, tetapi pada mesin saya di pekerjaan baru, saya baru saja menginstal dotfiles ryanb (yang berisi file konfigurasi untuk vim, git, dan banyak lagi). Ada hal-hal yang saya sukai di setiap konfigurasi, jadi pada akhirnya saya ingin menggabungkannya menjadi konfigurasi pribadi baru. Sementara itu, saya ingin bisa bolak-balik.

Apakah ada perintah yang mudah untuk ini di vim - "gunakan direktori .vimrc dan .vim berikut" - atau apakah akan lebih mudah untuk menukar file sendiri ketika saya ingin beralih?

Nathan Long
sumber

Jawaban:

7

The -upilihan akan memungkinkan Anda untuk menentukan file konfigurasi selain ~ / vimrc, tapi tidak ada pilihan untuk menentukan alternatif ~ / direktori .vim. Namun, Anda dapat meminta Vim menggunakan direktori yang berbeda dengan memodifikasi opsi 'runtimepath' ('rtp') di setiap file konfigurasi Anda. Misalnya, Anda bisa menggunakan perintah ini

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

di salah satu file konfigurasi Anda untuk memberitahu Vim untuk menggunakan direktori ~ / .vim1 daripada direktori ~ / .vim.

garyjohn
sumber
Saya rasa saya bisa menggunakan ini untuk menyimpan semuanya di Dropbox :)
Michael Caron
1
@Michael Caron - Anda dapat menyimpan .vimrcdan di .vimmana pun Anda suka, selama Anda memiliki symlink di folder rumah Anda ke mana pun Anda meletakkannya. Secara pribadi, saya menggunakan trik ini untuk menyimpan semua konfigurasi saya di .dotfilesfolder, yang dapat saya sinkronkan ke Github.
Nathan Long
3

-u memberitahu vim untuk menggunakan file vimrc alternatif.

Ignacio Vazquez-Abrams
sumber
Baru-baru ini saya mengetahui bahwa vim -u "NONE"membuka vanilla vim, tanpa konfigurasi. Itu bisa bermanfaat jika Anda memiliki konfigurasi yang rumit dan ingin tahu apakah beberapa perilaku adalah asli Vim atau tidak. (Ini juga berfungsi untuk MacVim - Saya belum mencoba Gvim di Linux.)
Nathan Long
1

Toggle Config dengan Mengganti Symlink Direktori

Saya memiliki pengaturan berikut:

❯ 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

Jika Anda ingin mengubah ke konfigurasi yang berbeda, Anda cukup menjalankannya

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

Opsional: fungsi shell dengan tab lengkap untuk berpindah konfigurasi

Jika Anda ambisius, Anda bisa menulis fungsi shell minimal dengan pelengkapan otomatis untuk membuat ini super nyaman. Misalnya jika Anda menggunakan zsh, Anda bisa menggunakan

# 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
}

Ini sudah menyediakan penyelesaian tab dan bekerja di mana saja di sistem file Anda:

❯ 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

(nama fungsi dicuri dari https://github.com/dawsbot/swim )

Hotschke
sumber
Solusi yang bagus, saya sarankan untuk menambahkan alias untuk setiap konfigurasi seperti alias vimbasic="ln -snf ~/.vim-configs/basic/ ~/.vim && vim", sehingga Anda dapat mengubah konfigurasi Anda hanya mengetik alias seperti vimbasic.
ton
1

Vim Plugin Manager Volt

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

Instalasi pada macOS: $ brew install volt

Fitur "profil" menyimpan satu set plugin, vimrc, dan gvimrc.

Anda dapat mengganti kombinasi dengan satu perintah. Misalnya, Anda dapat beralih dari pengaturan pengembangan web ke plugin esensial + vimrc, atau vanilla vim.

Ini juga membantu menciptakan konfigurasi minimal ketika mengajukan pertanyaan pada jaringan stackexchange atau masalah pada github untuk plugin vim / vim.

Hotschke
sumber