Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用autocmd将PDF文件转换为TXT文件?_Pdf_Vim_Pdftotext - Fatal编程技术网

如何使用autocmd将PDF文件转换为TXT文件?

如何使用autocmd将PDF文件转换为TXT文件?,pdf,vim,pdftotext,Pdf,Vim,Pdftotext,当我在VIM选项卡中拖动PDF文件时,我想使用pdftotext将其转换为TXT文件。我已在磁盘上安装了pdftotext 为此,我在vimrc中添加了以下命令: autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" 在vim 7.4中,它运行良好。它以TXT格式打开了PDF文件。 现在在vim 8.1中,它并没有像预期的那样工作。它转换PDF并在同一个PDF目录中的我的磁盘上创建TXT文件,而不打开它 我想

当我在VIM选项卡中拖动PDF文件时,我想使用pdftotext将其转换为TXT文件。我已在磁盘上安装了pdftotext

为此,我在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文件?

我认为,更合理的做法是简单地替换缓冲区内容

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

在我看来,简单地替换缓冲区内容更有意义

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
它转换PDF并在我的磁盘上创建TXT文件

这不是维姆的错,是pdftotext的错。很长一段时间以来,人们一直在这样做。您需要通过添加-这意味着输出文件是stdout来强制它写入stdout:

autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" -
它转换PDF并在我的磁盘上创建TXT文件

这不是维姆的错,是pdftotext的错。很长一段时间以来,人们一直在这样做。您需要通过添加-这意味着输出文件是stdout来强制它写入stdout:

autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" -

对非常感谢你!对非常感谢你!