2010-07-31 6 views
22

Załóżmy, że mam archiwum wszystkich moich konfiguracji vima - wszystko normalnie w ~/.vim (wtyczki, automatyczne ładowanie, kolory, wszystkie te rzeczy) i plik vimrc. Wyciągam to do jakiegoś katalogu. Tak więc w katalogu, w którym jestem ($ PWD), znajduje się folder "vim" i plik "vimrc". (uwaga: ten katalog będzie tylko do odczytu, więc vim nie powinien próbować go zapisywać).Jak mogę przesłonić ścieżki ~/.vim i ~/.vimrc (ale nie inne) w vim?

Jakie argumenty wiersza polecenia lub zmienne środowiskowe mogę podać vimowi, aby upewnić się, że wszystkie moje wtyczki, składnia itd. Są załadowane tak samo, jak vimrc, w takiej kolejności, w jakiej normalnie działałyby, gdyby znajdowały się w ~/.vim i ~/.vimrc

Jako bonus, chciałbym zignorować ~/.vimrc i ~/.vim komputera hosta, jeśli to możliwe (ale to nie jest obowiązkowe).

Jeśli zastanawiasz się, dlaczego nie podrzucam plików w ~/.vimrc i ~ /, vim, próbuję spakować swoją własną konfigurację vima i zabrać ją ze sobą. Nie chcę przejmować konfiguracji vim używanego komputera, chcę tylko rozpocząć sesję vim z moją konfiguracją.

+0

Użyłem w przeszłości następujących rzeczy, ale funkcje autoload nie działają (gdy są wywoływane z mojego vimrc): 'vim --cmd" zestaw runtimepath + = $ (dirname $ 0)/vim, $ VIMRUNTIME "-u" $ (dirname $ 0) "/ vimrc" $ @ "' – gfxmonk

Odpowiedz

28

mam przenośny .vim folder, dokładnie tak, jak opisano, to jak mam go ustawić:

  • Połóż przenośny .vimrc plik wewnątrz Twój folder .

  • Dodaj następujące wiersze na początku przenośnego .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) 
  • Vima za pomocą: vim -u /path/to/portable/vim/.vimrc.
+1

Wygląda na to, że brakuje '' w rozszerzeniu. Myślę, że powinno to być 'let s: portable = expand (': p: h')'. Dla mnie to zadziałało. Vim 7.3 – RedX

+0

zestaw nocompatible powinien być pierwszym wierszem. Wydaje się, że -u wyłącza ją jako domyślną. –

+0

Zamiast 's: portable' używam (na vim' 7.4') env.variable. – pevik

3

Na systemie Unix & Systemy Linux (a może Windows) Vim używa zmiennej środowiskowej $ HOME do zlokalizowania pliku .vimrc i katalogu .vim. Więc można CD do katalogu, w którym masz wersje niestandardowe i rozpocząć vim lub gvim tak:

HOME=. vim files.... 
+1

Dobry pomysł, ale jest kilka problemów: (1) powoduje to przerwanie otwierania plików za pomocą ~ (jak: e ~/Dokumenty/whatever.txt). (2) Zapomniałem o tym wspomnieć, ale katalog roboczy musi być tylko do odczytu (zaktualizuję pytanie). vim narzeka, gdy nie może pisać do ~/.viminfo, itp. – gfxmonk

+0

Rozwiązało to mój problem z uruchamianiem różnych wersji vima z różnych katalogów iz różnymi plikami vimrc. Dzięki! – tandrewnichols

0

Ten "vimrc File and Vim Runtime Directories" screencast może być przydatna, jak również vim documentation for 'runtimepath', który stanowi, co następuje:

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

dzięki. Naprawdę próbowałem ustawić runtimepath, ale nie działało to na ładowanie funkcji patogena (żyje w autoloadzie, co moim zdaniem powodowało problemy). Okazuje się, że był to po prostu bailing z innych powodów (tryb cp był włączony). Mój ostateczny skrypt ustawia $ VIM_BASE, a mój skelton vimrc dodaje $ VIM_BASE do runtimepath, a następnie źródła * real * vimrc. – gfxmonk

0

Moje rozwiązanie nie jest takie samo, ale można je łatwo dostosować.

Mam swoją konfigurację Vima na mojej stacji roboczej i jest ona udostępniana poprzez zwykłe udostępnianie plików Windows. Mam ten plik wsadowy, który mogę uruchomić z dowolnego innego komputera w budynku (i jest instalacja Vima na innym udziale sieciowym, ponieważ większość stacji roboczych nie ma nawet zainstalowanego Vima). Właśnie uruchomiłem ten plik wsadowy i jestem w moim szczęśliwym miejscu.

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

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

Więc w zasadzie adaptacja byłoby umieścić plik wsadowy, skrypt, lub inaczej do archiwum jesteś rozpakowaniu i uruchomieniu systemu vim z lokalnych plików.