オペレーティングシステムベースのbashコマンドを実行するためにvimコマンドをマッピングする方法は?

オペレーティングシステムベースのbashコマンドを実行するためにvimコマンドをマッピングする方法は?

つまり、端末の単一のbashコマンドに条件を含めることができますか?それでは、どうすればいいですか?

vimrc(システム間共有)で、次のコマンドを使用して現在のLaTeX文書を.pdf形式で開きます。 map ,v :!gnome-open %<.pdf <CR> <CR>

私の質問は、私が家にOS Xコンピュータにいるときにvに「%<.pdfを開く」を実行させる最善の方法は何ですか?私の疑似コードの推測は次のとおりです。

... if [$OSTYPE == "darwin*"] then open %<.pdf else gnome-open %<.pdf ...

これは単一のBASHコマンドで実行されます。そのような条件は可能ですか?それでは、誰でも構文を助けることができますか?それ以外の場合は、vimrcファイルの条件を介して実行できますか?

ベストアンサー1

別のアプローチは、オペレーティングシステムに合わせてマップキーバインディングを正しく生成することです。たとえば、

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

これはテストされ、うまくいくようですが、私のVimスクリプトが少し奇妙で正しい引用のようないくつかの詳細を見逃している可能性があるため、Janderのアプローチに従うことができ、シェルラッパーを使用することもできます. 。

map ,v :!open.sh '%<.pdf'<CR><CR>

そして~/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

おすすめ記事