Uma alternativa seria apenas gerar a associação de teclas do mapa corretamente para o sistema operacional. Por exemplo:
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
Isso foi testado e parece funcionar, mas como o meu script Vim é um pouco instável e eu poderia ter perdido alguns detalhes como uma cotação apropriada, eu provavelmente iria mais com a abordagem do Jander e usaria um wrapper shell que eu estou longe superior por escrito.
map ,v :!open.sh '%<.pdf'<CR><CR>
E em ~/bin/open.sh
:
#!/bin/sh
if echo "$OSTYPE" | grep "^darwin" >/dev/null 2>&1; then
open "$@" &
elif type gnome-open &>/dev/null; then
gnome-open "$@" &
fi