![Vim pdf 查看器阻塞终端](https://linux22.com/image/422636/Vim%20pdf%20%E6%9F%A5%E7%9C%8B%E5%99%A8%E9%98%BB%E5%A1%9E%E7%BB%88%E7%AB%AF.png)
当我在 Vim 上调用命令command ViewPdf !okular %:r.pdf
(在 .vimrc 中)时,终端被阻止,我无法继续编写文档。我该如何调整此 vim 命令以打开我的 pdfviewer 并让我在 vim 中编写文本?我已经尝试过此选项:
command ViewPdf !okular %:r.pdf &
command ViewPdf !okular %:r.pdf & disown
command ViewPdf !okular %:r.pdf && disown
[编辑-1]:我不想使用插件来做到这一点。我的机器很烂,所以如果可能的话,我想避免在运行时添加东西
[编辑-2]: 我的.vimrc 文件:
command ViewPdf execute "!okular %:r.pdf &" | redraw
command CompileXelatex !xelatex -interaction=nonstopmode %
command CompileLatex !latexmk -pdfxe %
答案1
诀窍是让读者默默地进入后台并在 VIM 中重新绘制:
:command ViewPdf execute "silent !okular %:r.pdf&" | redraw!
这样使用时execute
只有感叹号后的引号中的内容才会传递给 shell,并由| redraw!
VIM 进行解释。
可能redraw
并不总是必要的(我实际上不确定什么时候才是必要的),所以
:command ViewPdf silent !okular %:r.pdf&
也可能有效。
或者,您也可以使用映射来解决这个问题,例如,
:nmap <leader>s :silent ! okular %:r.pdf&<cr> :redraw!<cr>
<leader>s
这将定义在正常模式下为您打开 okular的组合键。使用存储在(默认情况下为反斜杠,例如,您可以使用逗号代替)<leader>
中的键。mapleader
:let mapleader = ","