当我在VIM选项卡中拖动PDF文件时,我想使用pdftotext将其转换为TXT文件。 (我已经在磁盘上安装了pdftotext)
为此,我将此cmd添加到vimrc中:
autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%"
在vim 7.4中,它运行良好。它以TXT格式打开PDF文件。
现在在vim 8.1中,它无法按预期工作。它会转换PDF并在我的磁盘上(同一PDF目录中)创建TXT文件,而无需打开它。
我想要的是始终在同一目录“ D:\ temp”中创建TXT文件,关闭PDF文件并打开TXT文件。
我尝试过但没有成功:
autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" | :let myfile = "D:\\temp\\".expand("%:r").".txt" | :bd | :exe "tabe ".myfile
错误:文件名,目录名或卷标语法不正确
如何在“ D:\ temp”中创建TXT文件,关闭PDF并在新选项卡中打开创建的TXT文件?
答案 0 :(得分:3)
IMO,仅替换缓冲区内容就更有意义了。
let g:Pdf2Txt = 'pdftotext -layout -q -eol unix %:p:S -'
augroup Pdf2Txt | au!
autocmd BufReadCmd *.pdf execute expandcmd('silent read ++edit !'..g:Pdf2Txt)
autocmd BufReadCmd *.pdf 1delete_
autocmd BufReadCmd *.pdf setfiletype text
autocmd BufReadCmd *.pdf setlocal buftype=nowrite
augroup end
答案 1 :(得分:1)
它将转换PDF并在我的磁盘上创建TXT文件
这不是vim
的错,是pdftotext
的错。相当一段时间以来,这种方式一直存在。您需要通过附加-
来强制它写入stdout,这意味着“输出文件是stdout”:
autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" -