문맥
저는 현재 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>