En resumen, ¿pueden los comandos bash individuales en la terminal contener condicionales? Si es así, ¿cómo?
Tengo en mi vimrc (compartido entre sistemas) el siguiente comando para abrir mi documento LaTeX actual en formato .pdf:map ,v :!gnome-open %<.pdf <CR> <CR>
Mi pregunta es, ¿cuál es la mejor manera de hacer que ,v ejecute simplemente "abrir %<.pdf" cuando estoy en casa en mi máquina OS X? Aquí está mi suposición de pseudocódigo:
... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...
Esto se ejecuta como un solo comando BASH. ¿Son posibles tales condicionales? Si es así, ¿alguien podría ayudarme con la sintaxis? Si no, ¿se puede hacer esto a través de condicionales en el archivo vimrc?
Respuesta aceptada:
Una alternativa sería simplemente generar la combinación de teclas del mapa correctamente para el sistema operativo. Por ejemplo:
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
Esto fue probado y parece funcionar, pero como mi secuencia de comandos de Vim es un poco inestable y es posible que me haya perdido algunos detalles como las citas adecuadas, probablemente seguiría más el enfoque de Jander y solo usaría un contenedor de shell que soy muy superior en escritura. .
map ,v :!open.sh '%<.pdf'<CR><CR>
Y en ~/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