GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Memetakan Satu Perintah Vim Untuk Menjalankan Perintah Bash Berdasarkan Os?

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

Linux
  1. Cara Menghapus Riwayat Bash di Linux

  2. Bagaimana Perintah Su -c "..." Ini Tampaknya Melewati Dua Perintah, Bukan Satu?

  3. Bagaimana cara menjalankan perintah bash dengan hak sudo di Jawa?

  1. Cara menggunakan perintah riwayat Bash

  2. Bagaimana saya bisa menjalankan serangkaian perintah dalam subkulit bash sebagai pengguna lain menggunakan sudo?

  3. Cara mengatur waktu sekelompok perintah di Bash

  1. Bagaimana cara menjalankan perintah shell eksternal dari pengontrol laravel?

  2. Bagaimana cara menjalankan skrip bash?

  3. Bagaimana cara menambahkan perintah di editor vim?