
コンテキスト
私は現在Vimを使ってLaTeXで研究記事を書いています。たとえば、私の記事にはbibtexキーがあり、\cite{smith2000sometopic}
サブフォルダにはほとんどの記事に対応するPDFバージョンがあります。~/lib
~/lib/topica/smith2000sometopic.pdf
目的
カーソルがbibtexキーの上にあるときにVimでキーを押すことができるようにしたいです。
bibtex-key
カーソルの下から抽出- 検索の実行
bibtex-key.pdf
- ファイルが見つかったら、PDFビューアでファイルを開きます。
- ファイルが見つからない場合
質問
- すでにこのようなことをした人はいますか?
- 学ぶのに役立つ例はありますか?
初期の考え
私は次のようなものを使用できると思います。
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>