Stručně řečeno, mohou jednotlivé příkazy bash v terminálu obsahovat podmínky? Pokud ano, jak?
Mám ve svém vimrc (sdíleném napříč systémy) následující příkaz k otevření mého aktuálního dokumentu LaTeX ve formátu .pdf:map ,v :!gnome-open %<.pdf <CR> <CR>
Moje otázka zní, jaký je nejlepší způsob, jak nechat ,v spustit jednoduše „otevřít %<.pdf“, když jsem doma na svém počítači s OS X? Zde je můj odhad pseudokódu:
... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...
To se provádí jako jeden příkaz BASH. Jsou takové podmínky možné? Pokud ano, mohl by mi někdo pomoci se syntaxí? Pokud ne, lze to provést pomocí podmínek v souboru vimrc?
Přijatá odpověď:
Alternativou by bylo pouze vygenerování správného přiřazení mapy pro operační systém. Například:
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
Toto bylo testováno a zdá se, že to funguje, ale protože můj skript Vim je trochu nejistý a možná mi unikly některé detaily, jako je správné citování, pravděpodobně bych se více přiklonil k Janderovu přístupu a použil bych pouze obal, který jsem v psaní mnohem lepší. .
map ,v :!open.sh '%<.pdf'<CR><CR>
A v ~/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