Ich teile meine VIM-Konfigurationsdatei zwischen mehreren Computern. Ich möchte jedoch, dass einige Einstellungen für bestimmte Computer spezifisch sind.
Beispielsweise sollten sich die Schriftgrößen auf dem hochauflösenden Laptop von denen auf dem niedrigauflösenden Desktop unterscheiden. Und was noch wichtiger ist, ich möchte, dass sich gVIM unter Windows mehr als Windows und MacVim unter OSX mehr als MacCy verhält und dass sich gVIM unter Linux einfach so verhält, wie es immer der Fall ist. (Das mag ein seltsames Gefühl sein, aber ich bin es sehr gewohnt, beim Wechseln des Betriebssystems den mentalen Modus zu wechseln.)
Gibt es eine Möglichkeit, einige Einstellungen in der .vimrc
maschinen- oder betriebssystemabhängigen Umgebung vorzunehmen ?
quelle
has('gui_running')
wenn Sie zwischen dem tty-Modus und dem GUI-Modus unterscheiden müssen.has('mac')
dies für alle Macs oder nur für Macs vor OS-X gilt. Siehe:help feature-list
die vollständige Liste.has('unix')
. Mein Fehler.has("mac")
. Ich vermute, dass sie einen Patch verwendet haben, mit dem der Funktionstest tatsächlich funktioniert. Wenn Sie sich aufhas("mac")
test verlassen, führen Sie einen Test durch, um sicherzustellen, dass er von Ihrem vim unterstützt wird.Um für einen bestimmten Computer zu testen, können Sie die Ausgabe des
hostname
Befehls testen . Zum Beispiel,Sie können auch den Wert verfügbarer Umgebungsvariablen testen:
Die
$DISPLAY
Variable kann auch nützlich sein.quelle
system('hostname')
warmachine.mycompany.com\n
, also musste ich den Ersatzbefehl auf ändernsubstitute(system('hostname'), '\.\_.*$', '', '')
.Ich habe diesen Ausschnitt in meinem
vimrc
:Dies wird einfach ausgeführt,
source $HOME/.$HOSTNAME.vimrc
wenn es existiert. Ich habehostname()
und Verkettung verwendet, Sie könnten auch die prägnantere verwenden,expand('$HOME/.$HOSTNAME.vimrc')
wenn Sie wissen, dass$HOSTNAME
immer gesetzt ist.quelle
In der vorherigen Antwort zur Betriebssystemerkennung wurde OS X in MacVim für mich nicht erkannt (und es wird auch nicht so verwendet,
has("macunix")
wie es in der Dokumentation vorgeschlagen wird).Folgendes verwende ich, um zwischen Windows und OS X zu unterscheiden:
Beachten Sie, dass es
has("win32")
bei mir auch in 64-Bit-Vim unter 64-Bit-Windows funktioniert hat.Sie können auch ähnliche Tests
uname
innerhalb desif has("unix")
Blocks verwenden, um andere Unix-Varianten zu unterscheiden. Führen Sie einfachuname
oderuname -a
über die Befehlszeile aus, um zu sehen, was Sie vergleichen müssens:uname with
. Siehe auch,:h matchstr()
wenn Sie nur einen Teil der Ausgabe von uname vergleichen müssen.quelle
Bei vielen Rechnern
.vimrc
kann es mühsam werden, alle Hostnamen in aufzulisten. Unter Umständen ist es einfacher, zwischen verschiedenen Unix-Varianten zu unterscheiden:quelle
Sie können das betriebssystemspezifische Material einfach für jeden Computer in eine benutzerdefinierte GVIMRC-Datei einfügen und für alle Computer eine gemeinsame GVIMRC-Datei verwenden. Beide Dateien werden beim Start von GVim gelesen, nur .vimrc wird beim Start von Nicht-GUI-Vim gelesen.
quelle
In Bezug auf Trennung zwischen Linux und Windows - Sie einfach verschiedene Einstellungen in setzen kann
.vimrc
und_vimrc
dementsprechend.quelle