Kurz gesagt, können einzelne Bash-Befehle im Terminal Bedingungen enthalten? Wenn ja, wie?
Ich habe in meinem vimrc (systemübergreifend geteilt) den folgenden Befehl, um mein aktuelles LaTeX-Dokument in .pdf-Form zu öffnen:map ,v :!gnome-open %<.pdf <CR> <CR>
Meine Frage ist, was ist der beste Weg, um ,v einfach „open %<.pdf“ auszuführen, wenn ich zu Hause auf meinem OS X-Rechner bin? Hier ist meine Pseudo-Code-Vermutung:
... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...
Dies wird als einzelner BASH-Befehl ausgeführt. Sind solche Bedingungen möglich? Wenn ja, könnte mir jemand bei der Syntax helfen? Wenn nicht, kann dies über Bedingungen in der vimrc-Datei erfolgen?
Akzeptierte Antwort:
Eine Alternative wäre, einfach die Tastenkombination der Karte korrekt für das Betriebssystem zu generieren. Zum Beispiel:
if executable("cmd.exe")
map ,v :!cmd.exe /C start "" "%<.pdf"<CR><CR>
elseif $OSTYPE =~ "darwin.*"
map ,v :!open '%<.pdf'<CR><CR>
elseif executable("gnome-open")
map ,v :!gnome-open '%<.pdf'<CR><CR>
endif
Dies wurde getestet und scheint zu funktionieren, aber da mein Vim-Skript etwas wackelig ist und ich möglicherweise einige Details wie das richtige Zitieren übersehen habe, würde ich wahrscheinlich mehr mit Janders Ansatz gehen und einfach einen Shell-Wrapper verwenden, der mir beim Schreiben weit überlegen ist .
map ,v :!open.sh '%<.pdf'<CR><CR>
Und in ~/bin/open.sh
:
#!/bin/sh
if echo "$OSTYPE" | grep "^darwin" >/dev/null 2>&1; then
open "[email protected]" &
elif type gnome-open &>/dev/null; then
gnome-open "[email protected]" &
fi