加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在vim下使用外部PDF阅读器在光标下打开pdf文件(使用’gf’)

发布时间:2020-12-15 21:57:12 所属栏目:安全 来源:网络整理
导读:当前的gf命令将打开* .pdf文件作为ascii文本.我想用外部工具(如okular,foxitreader等)打开pdf文件.我尝试使用autocmd来实现它: au BufReadCmd *.pdf silent !FoxitReader % "open file under cursor with FoxitReaderau BufEnter *.pdf Ctrl-O "since we do
当前的gf命令将打开* .pdf文件作为ascii文本.我想用外部工具(如okular,foxitreader等)打开pdf文件.我尝试使用autocmd来实现它:

au BufReadCmd *.pdf silent !FoxitReader % & "open file under cursor with FoxitReader
au BufEnter *.pdf <Ctrl-O> "since we do not really open the file,go back to the previous buffer

但是,第二个autocmd无法按预期工作.我无法找到一种方法来执行< Ctrl-o>以autocmd方式命令.

任何人都可以给我一个如何< Ctrl-O>的提示在autocmd中,还是直接建议用gf打开pdf文件的更好方法?

谢谢.

解决方法

那是因为autocmd之后的是一个ex命令(那些开始
用冒号).要模拟正常模式命令的执行,请使用
:normal命令.问题是你不能传递< C-O> (并不是
< Ctrl-O>)直接到:normal,它将被视为文字字符(<,
那么C,然后是r)这不是一个非常有意义的正常命令.你有两个
选项:

1.插入文字^ O字符

使用controlvcontrolo获取一个:

au BufEnter *.pdf normal! ^O

2.使用:execute构建命令

这样,您可以使用转义序列获得更可读的结果:

au BufEnter *.pdf exe "normal! &;c-o>"

无论如何,这不是最合适的命令. c为C-O>只是跳到了
跳转列表中的上一个位置,因此缓冲区保持打开状态.我会做
就像是:

au BufEnter *.pdf bdelete

代替.我还有另一个解决方案.

用地图创建另一个命令,比如说gO.然后使用您的PDF阅读器
如果您使用的是MacOS X或Darwin,则可以直接使用或打开实用程序(不确定是否
其他Unix系统拥有它,以及如何调用它.就像双击一样
作为参数传递的文件图标,因此它将打开您的默认PDF阅读器
或配置为默认打开任何文件的任何其他应用程序,如图像或
所以.

:nnoremap gO :!open <cfile><CR>

这个< cfile>将被扩展到光标下的文件.所以,如果你想
在Vim中打开文件,使用gf.如果要使用默认值打开它
应用,使用gO.

如果您没有此命令或更喜欢仅使用PDF的解决方案,请创建一个地图
您的首选命令:

:nnoremap gO :!FoxitReader <cfile> &<CR>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读