Vimでbibtexキーに対応するPDFを開くスクリプト

Vimでbibtexキーに対応するPDFを開くスクリプト

コンテキスト

私は現在Vimを使ってLaTeXで研究記事を書いています。たとえば、私の記事にはbibtexキーがあり、\cite{smith2000sometopic}サブフォルダにはほとんどの記事に対応するPDFバージョンがあります。~/lib~/lib/topica/smith2000sometopic.pdf

目的

カーソルがbibtexキーの上にあるときにVimでキーを押すことができるようにしたいです。

  1. bibtex-keyカーソルの下から抽出
  2. 検索の実行bibtex-key.pdf
  3. ファイルが見つかったら、PDFビューアでファイルを開きます。
  4. ファイルが見つからない場合

質問

  • すでにこのようなことをした人はいますか?
  • 学ぶのに役立つ例はありますか?

初期の考え

私は次のようなものを使用できると思います。

 gnome-open `find ~/lib/ -iname "smith2000sometopic.pdf" | head -1`

次に、いくつかのVimscriptを使用して対話を細かく調整します。例や提案がある場合は非常に感謝します。

答え1

投稿する前にもう少し待つ必要があるかもしれませんが、改善のための提案は依然として非常に歓迎されています。

ついに私はこれを見つけましたvimtipsの役に立つドキュメント

これは私が書いたVim関数です:

function! OpenBibtexPDF()
    let s:word = expand("<cword>")
    let s:cmd = "!gnome-open `find ~/lib/ -iname '" . s:word . ".pdf' | head -1`"
    execute s:cmd
endfunction 
map <silent> <leader>bb :call OpenBibtexPDF()<cr>

答え2

Jerome Anglimの答えに基づいて彼のコードのいくつかを修正しました。

これはgnomeなしで動作し、「zenity」を使用してエラーを表示し、zathuraをPDFビューアとして表示します(必要に応じて変更するだけです)。また、単語をダブルクリックするためのマッピングを追加しました(vimモードではなくマウスを使用しても)。

function! OpenBibtexPDF()
    let s:word = expand("<cword>")
    let s:cmd = 'silent !pathfile=$(find ~/lib -iname "' . s:word . '*.pdf" -print -quit 2>/dev/null); [ -z "$pathfile" ] && zenity --info --width=250 --text="Pdf related to this this entry is not found" || zathura "$pathfile" >/dev/null &'
    execute s:cmd | redraw!
endfunction 
map <silent> <leader>bb :call OpenBibtexPDF()<cr>
map <silent> <2-LeftMouse> :call OpenBibtexPDF()<cr>

関連情報