En bref, les commandes bash uniques du terminal peuvent-elles contenir des conditions ? Si oui, comment ?
J'ai dans mon vimrc (partagé entre les systèmes) la commande suivante pour ouvrir mon document LaTeX actuel au format .pdf :map ,v :!gnome-open %<.pdf <CR> <CR>
Ma question est, quelle est la meilleure façon d'avoir ,v exécuter simplement "open %<.pdf" quand je suis chez moi sur ma machine OS X ? Voici ma supposition de pseudo-code :
... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...
Ceci est exécuté comme une seule commande BASH. De tels conditionnels sont-ils possibles ? Si oui, quelqu'un pourrait-il m'aider avec la syntaxe? Sinon, cela peut-il être fait via des conditions dans le fichier vimrc ?
Réponse acceptée :
Une alternative serait simplement de générer correctement le raccourci clavier de la carte pour le système d'exploitation. Par exemple :
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
Cela a été testé et semble fonctionner, mais comme mon script Vim est un peu fragile et que j'ai peut-être manqué certains détails comme la citation appropriée, j'irais probablement plus avec l'approche de Jander et j'utiliserais simplement un shell wrapper que je suis de loin supérieur en écriture .
map ,v :!open.sh '%<.pdf'<CR><CR>
Et dans ~/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