Udostępniam plik konfiguracyjny VIM między kilkoma komputerami. Chcę jednak, aby niektóre ustawienia były specyficzne dla niektórych komputerów.
Na przykład rozmiary czcionek na laptopie o wysokiej rozdzielczości powinny być inne niż na pulpicie o niskiej rozdzielczości. A co ważniejsze, chcę, aby gVIM w systemie Windows zachowywał się bardziej windowsy, a MacVim w OSX, aby zachowywał się bardziej maccy, a gVIM w systemie Linux, aby zachowywał się tak jak zawsze. (To może być dziwny sentyment, ale jestem bardzo przyzwyczajony do przełączania trybów mentalnych podczas przełączania systemów operacyjnych)
Czy istnieje sposób na dokonanie kilku ustawień w .vimrc
zależności od komputera lub systemu operacyjnego?
źródło
has('gui_running')
jeśli potrzebujesz rozróżnić tryb tty i tryb GUI.has('mac')
dotyczy to wszystkich komputerów Mac, czy tylko komputerów Mac z wersją wcześniejszą niż OS-X. Zobacz:help feature-list
pełną listę.has('unix')
. Mój błąd.has("mac")
. Domyślam się, że użyli łatki, która faktycznie sprawia, że test funkcji działa. Jeśli polegasz nahas("mac")
teście, zrób test, aby upewnić się, że jest obsługiwany w twoim vimie.Aby przetestować konkretną maszynę, możesz przetestować dane wyjściowe
hostname
polecenia. Na przykład,Możesz również przetestować wartość dostępnych zmiennych środowiskowych:
$DISPLAY
Zmienna może być również użyteczne.źródło
system('hostname')
byłmachine.mycompany.com\n
taki, więc musiałem zmienić polecenie zastępcze nasubstitute(system('hostname'), '\.\_.*$', '', '')
.Mam ten fragment w moim
vimrc
:Wykonuje się
source $HOME/.$HOSTNAME.vimrc
to, jeśli istnieje. Użyłemhostname()
i konkatenacji, możesz również użyć bardziej zwięzłego,expand('$HOME/.$HOSTNAME.vimrc')
jeśli wiesz, że$HOSTNAME
to jest zawsze ustawione.źródło
Poprzednia odpowiedź na temat wykrywania systemu operacyjnego nie wykrywa dla mnie OS X w MacVimie (i nie używa tego,
has("macunix")
jak sugeruje to dokumentacja).Oto, czego używam do rozróżnienia między Windows a OS X:
Zauważ, że
has("win32")
działało dla mnie, nawet w 64-bitowym Vimie na 64-bitowym systemie Windows.Możesz również użyć podobnych testów
uname
wewnątrzif has("unix")
bloku, aby rozróżnić inne smaki Uniksa. Wystarczy uruchomićuname
lubuname -a
z wiersza polecenia, aby zobaczyć, co należy porównaćs:uname with
. Zobacz także,:h matchstr()
czy musisz porównać tylko część wyniku działania uname.źródło
Przy wielu maszynach wyświetlanie wszystkich nazw hostów
.vimrc
może być uciążliwe, łatwiej jest odróżnić różne odmiany uniksowe:źródło
Możesz po prostu umieścić elementy specyficzne dla systemu operacyjnego w niestandardowym pliku .gvimrc dla każdej maszyny i użyć wspólnego .vimrc na każdym z nich. Oba pliki są odczytywane podczas uruchamiania GVim, tylko .vimrc jest odczytywany, gdy uruchamia się Vim inny niż GUI.
źródło
Jeśli chodzi o separację między Linuksem a Windowsem - możesz po prostu wprowadzić różne ustawienia
.vimrc
i_vimrc
odpowiednio.źródło