Użyj innego użytkownika .vimrc i .vim /

6

Wiem, że mogę :source /path/to/some/.vimrczaładować mojego użytkownika, .vimrcgdy działa jako root, ale jak mogę również korzystać z całego .vim/katalogu? Czy jest dostępna opcja uruchamiania /home/user/.vim/, którą mogę skonfigurować jako alias?

I gdzie w świetnym podręczniku znalazłbym te informacje, gdybym wiedział, czego szukać. Prosta :help .vimlub :help .vimrcnie znalazłem informacji dotyczących korzystania z całej .vim/direcotry ( -Udotyczy tylko .vimpliku).

Dzięki.

dotancohen
źródło
:help vimruntimew tym przypadku.
Daniel Andersson,

Odpowiedzi:

1

użyj zmiennej środowiskowej, VIMINITaby wskazać w prawo .vimrci VIMRUNTIMEwskazać właściwy .vimkatalog. możesz to zrobić za pomocą env:

$> env VIMINIT=/home/user/.vimrc VIMRUNTIME=/home/user/.vim/ vim

$> VIMINIT='let $MYVIMRC = expand('\''~user'\'') . '\''/.vimrc'\''|source $MYVIMRC' vim -c 'set runtimepath=~user/.vim,/var/lib/vim/addons,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,/var/lib/vim/addons/after,~user/.vim/after'

jak zawsze: jeśli jest to zbyt długie, aby napisać, utwórz funkcję powłoki lub alias powłoki.

aby dowiedzieć się więcej o tym, jak vimuruchamia się i co dzieje się za kulisami, przeczytaj :help initialization.

akira
źródło
1
Dziękuję akira! Właśnie tego potrzebuję i dziękuję za odniesienie do strony podręcznika.
dotancohen
11

Wydaje się, że VIMINITi VIMRUNTIMEnie są używane, jak powiedział Akira.

VIMINITjest używane jako polecenie Ex, więc VIMINIT=/home/user/.vimrcspróbuje wyszukać i da błąd, taki jak:

search hit BOTTOM, continuing at TOP
Error detected while processing VIMINIT:
E486: Pattern not found: home

VIMRUNTIMEzwykle wskazuje lokalizację, w której są zainstalowane podstawowe pliki pomocnicze vima, na przykład /usr/share/vim/vim73, więc jeśli zostanie przekierowany do /home/user/.vim, vim straciłby wiele podstawowych funkcji, chyba że vim jest właśnie zainstalowany w /home/usr/.vim.


Zgodnie z :help -ui :help vimrc, -u vimrcopcja może określić .vimrcplik, ale pominie większość innych plików inicjujących, takich jak vimrc systemu, np. /etc/vimrc. Jeśli podany plik vimrc wykonuje prawie wszystkie zadania, wówczas zwarcie, jeśli tak się nazywa, jest banalne.

Zgodnie :help runtimepath, z pathes runtimepathbędzie szukał plików pomocniczych, dzięki czemu możemy poprzedzić /home/user/.vimi dołączyć /home/user/.vim/afterdo runtimepathwcześniej soucing pliku vimrc używając --cmdopcji podczas uruchamiania.

Podsumowując, możemy ustawić ten alias do używania ~ / .vimrc i ~ / vim:

alias vim='vim --cmd "set runtimepath^=/home/user/.vim" \
               --cmd "set runtimepath+=/home/user/.vim/after" \
               -u /home/user/.vimrc'

ps. Alternatywnie, dwa proste dowiązania symboliczne mogą również działać dla Ciebie.

mv /root/.vimrc{,.bak}
mv /root/.vim{,.bak}
ln -s /home/user/.vimrc /root/
ln -s /home/user/.vim /root/
Kropka Cink
źródło
Od jakiegoś czasu szukałem tego rozwiązania i jest to najbardziej ostateczna odpowiedź, na jaką się natknąłem.
Francis
2
Dziękuję za tę odpowiedź, miałem dokładny problem z błędem E486. Ale twoja odpowiedź skłoniła mnie do myślenia: czy nie da się tego ustawić VIMINIT=":source /home/user/.vimrc"i po prostu z tym zrobić? Przynajmniej wydaje mi się, że to działa ...
user43791
1
Jeszcze lepiej, można zmodyfikować runtimePath jak wskazano w tym samym poleceniem: VIMINIT=":set runtimepath^=/home/user.vim|:source /home/user/.vimrc". Dla mnie to działa jak urok! :)
user43791,
@ user43791 twoja metoda również działa dla mnie jak urok! :)
j5shi
1

Prawdopodobnie najlepsze rozwiązanie w historii.

export MYVIMRC="/xxx/.vimrc"
export VIMINIT=":set runtimepath+=/xxx/.vim|:source $MYVIMRC"

gdzie xxxjest dostosowana ścieżka.

j5shi
źródło