如何使用 autocmd 将 PDF 文件转换为 TXT 文件?
How to convert a PDF file to a TXT file using an autocmd?
当我在 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 文件而不打开它。
我想要的是始终在同一目录中创建 TXT 文件"D:\temp",关闭 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 文件?
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
It converts the PDF and creates the TXT file on my disk
这不是 vim
的错,而是 pdftotext
的错。很长一段时间以来一直以这种方式行事。您需要通过附加 -
强制它写入标准输出,这意味着 "output file is stdout":
autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" -
当我在 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 文件而不打开它。
我想要的是始终在同一目录中创建 TXT 文件"D:\temp",关闭 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 文件?
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
It converts the PDF and creates the TXT file on my disk
这不是 vim
的错,而是 pdftotext
的错。很长一段时间以来一直以这种方式行事。您需要通过附加 -
强制它写入标准输出,这意味着 "output file is stdout":
autocmd BufReadPost *.pdf silent %!pdftotext -layout -q -eol unix "%" -