如何从zathura获取当前文档目录路径

如何从zathura获取当前文档目录路径

在 zathura 中使用$FILE(或%) 我可以运行另一个查看器(例如 Okular)来打开当前文档,如下所示:

:exec okular $FILE

我想要同样的东西,但对于目录。我想在我的默认资源管理器中打开包含文档的文件夹:

:exec ranger $DIR

但这行不通。我找不到获取目录路径的方法。我也尝试过,:exec ranger % | sed 's|\(.*\)/.*|\1|'但这不起作用。能够在 exec 中使用管道可能会解决这个问题。

ps 作为我可以使用的解决方法exec nemo $FILE,nemo 使用文件名来选择它。但这只是一个解决方法。

答案1

看着源代码,看起来无论如何都没有办法做到这一点。 Zathura 只是在执行命令之前将$FILE和替换为文件路径。%

所以无论如何你都必须使用解决方法。也许是这样的:

exec sh -c 'xdg-open $(dirname $FILE)'

或者:

exec xterm -e 'ranger $(dirname $FILE)'

这里确实需要更多的引用,但我不知道 Zathura 的解析器在处理引用方面有多好。

答案2

根据 @muru 的回答并记录解决方案,我也提出了这个解决方法。我在我的文件中创建了一个 bash 脚本~/bin/selectInRanger,我只是从 zathura 调用它来逃避其命令行限制:

#!/bin/bash
address=$1;
urxvt -e sh -c "ranger --selectfile='$address'"

这更好,因为它可以处理名称中带有空格的目录并且更灵活。它还会$FILE在打开的文件资源管理器中选择传递给它的文件。

为了将其映射到 zathura 的组合键,~/.config/zathura/zathurarc我添加了这一行:

map <C-o> feedkeys ":exec selectInRanger $FILE<Return>"

PS 这非常有用,特别是使用 Zotero pdf 管理器,您可以轻松导航到存储目录中适当的 pdf,等等。

相关内容