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>

관련 정보