Singkatnya, dapatkah perintah bash tunggal di terminal berisi persyaratan? Jika demikian, bagaimana?
Saya memiliki di vimrc saya (dibagikan di seluruh sistem) perintah berikut untuk membuka dokumen LaTeX saya saat ini dalam bentuk .pdf:map ,v :!gnome-open %<.pdf <CR> <CR>
Pertanyaan saya adalah, apa cara terbaik untuk menjalankan ,v hanya dengan "buka %<.pdf" ketika saya di rumah menggunakan mesin OS X saya? Ini tebakan pseudo-code saya:
... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...
Ini dieksekusi sebagai perintah BASH tunggal. Apakah persyaratan seperti itu mungkin? Jika demikian, dapatkah seseorang membantu saya dengan sintaks? Jika tidak, dapatkah ini dilakukan melalui persyaratan di file vimrc?
Jawaban yang Diterima:
Alternatifnya adalah dengan hanya menghasilkan pengikatan kunci peta dengan benar untuk OS. Misalnya:
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
Ini telah diuji dan tampaknya berfungsi, tetapi karena skrip Vim saya sedikit goyah dan saya mungkin melewatkan beberapa detail seperti kutipan yang tepat, saya mungkin akan lebih menggunakan pendekatan Jander dan hanya menggunakan pembungkus Shell yang saya jauh lebih unggul dalam menulis .
map ,v :!open.sh '%<.pdf'<CR><CR>
Dan di ~/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