VIM:是否可以在分屏窗口中查看PDF文件?

7
我想在gVim中使用分割窗口查看pdf文件,有人知道这是否可能吗?如何实现?
一些细节:我最近才开始使用vim,并在阅读pdf时用它来做笔记。我写自己的笔记,但经常从pdf中复制文本,因此希望能够平滑地复制。目前,我需要按alt+tab切换到pdf查看器,然后使用鼠标或箭头键选择文本,复制,再次按alt+tab回到vim。当然,这不是一个巨大的任务,但使用vim时,我觉得可以不用鼠标,在“主键区”保持双手,并且不需要外部程序alt+tab。
理想情况下,我希望pdf以它应该显示的方式显示。如果不可能,我将尝试使用某个插件将pdf显示为文本表示。

我目前使用的是Linux Mint 13。虽然这已经不是个大问题了,但如果你知道答案,我很想听听。 - JoonasS
两种解决方法:您可以使用像 pandoc 这样的工具将 PDF 转换为文本。另一种方法是使用 zathura,这是一个带有 vim 类似界面的 PDF 阅读器。 - HRJ
虽然这篇文章有些旧了,但是如果你喜欢 vim 并且想要拥有最好的 PDF 笔记体验,那么你应该尝试一下使用 Spacemacs 和 pdf-tools。Vim 用户并不需要学习太多东西来使用它(虽然在 Windows 上让 PDF-tools 正常运行可能有些麻烦,在 GNU/Linux 和 Mac 上则很容易),但要享受完整的笔记功能,你可能需要学习一些 elisp。注释列表是可完全自定义的(参见 annot mode 和 tablist 文档)。还有一些像 org-noter 这样的扩展可以使用。 - dalanicolai
2个回答

6

Vim是一个文本编辑器,它只能编辑文本。因此,是的,您可以在二进制级别上编辑PDF文件,但不能按照原样查看PDF内容。您可以使用xpdf软件包先将PDF转换为文本,然后再查看,但结果并不完美。但是,在Vim中有一些有用的自动命令,允许您在“打开”非文本文件时使用其默认程序打开它们。我使用以下命令:

augroup nonvim
   au!
   au BufRead *.png,*.jpg,*.pdf,*.gif,*.xls* sil exe "!open " . shellescape(expand("%:p")) | bd | let &ft=&ft
   au BufRead *.ppt*,*.doc*,*.rtf let g:output_pdf = shellescape(expand("%:r") . ".pdf")
   au BufRead *.ppt*,*.doc*,*.rtf sil exe "!/usr/local/bin/any2pdf " . shellescape(expand("%:p"))
   au BufRead *.ppt*,*.doc*,*.rtf sil exe "!open " . g:output_pdf | bd | let &ft=&ft
augroup end

如果你使用的是Linux发行版,可以使用!xdg-open替换!open。其中any2pdf命令是我使用的一个脚本,它会在打开文件之前将这些文件转换为PDF格式。如果你只想用默认程序打开所有文件,可以编辑此选项。例如:

augroup nonvim
   au!
   au BufRead *.png,*.jpg,*.pdf,*.gif,*.xls*,*.ppt*,*.doc*,*.rtf sil exe "!open " . shellescape(expand("%:p")) | bd | let &ft=&ft
augroup end

你可能还想看看像dwmratpoison这样的窗口管理器,它们非常接近你所要求的。

1
谢谢回答,我想我暂时会继续使用外部的 PDF 阅读器。 - JoonasS

2

你可以安装一个插件,使你能够查看PDF中的文本,但是我不太熟悉gVim,所以我不知道这个维基页面是否适用于你。


1
这在gVim中可以工作,并将pdf显示为原始文本。虽然不如pdf好看,但我会继续使用我的外部pdf查看器。 - JoonasS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接