我使用 ranger 作为我的终端文件管理器,现在我了解了基础知识,我想更深入地自定义 rc 以达到我的目的。我喜欢做的一件事是将命令映射到键绑定,将模板复制到当前文件夹中,然后在文件上启动rename_append
命令(通常使用 keybind 调用)。a
这是一个例子:
map NS shell cp ~/.templates/bash.sh . ; rename_append
问题是,无论我如何调用该命令,它都会将模板复制到当前目录中,但不会启动重命名过程。当我退出 Ranger 时,错误消息显示rename_append
未找到该文件,但在 Ranger-config 中,使用相同的命令在附录之前重命名文件。我的理论是,由于我使用的是 shell,该命令会尝试rename_append
在我的程序中查找。我不知道如何在我的 Ranger 配置中链接命令,其中一个是 shell 命令,而下一个不是。
目前,我必须在第一个键绑定之后使用第二个键绑定,并且我只想使用一个键绑定并在复制文件后自动进入重命名模式。
我希望,我的问题是可以理解的。
答案1
您需要该chain
命令来执行多个命令。
chain <command1>; <command2>; ...
这部分可能不再相关,但对于复制和重命名任务,我想出了这个解决方案:
map NS chain shell cp ~/.templates/bash.sh .; console shell mv bash.sh%space
可以通过按 NS,键入新文件名,然后按 Enter 键来使用此绑定。
该解决方案不使用,rename_append
因为它在当前选择上执行命令,并且我无法更改选择。
答案2
我一直在遇到同样的问题(没有 shell 组件):我尝试映射D
来执行什么操作.d.!
,即隐藏目录。
在默认配置中
.d
映射到filter_stack type d
.!
映射到filter_stack not
D
所以我尝试通过这样的映射来链接两者:
map DD filter_stack add type d ; filter_stack add not
'type'
当我尝试这个时,我在控制台输出中看到红色。
在这两种情况下,似乎都;
没有正确解释,但是在您的 shell 情况下, the 的含义存在歧义;
(是 shell 命令的结束还是 Ranger 映射命令的结束?),在我的情况下应该没有含糊不清。
尽管如此,似乎后面添加的任何内容type d
都会被解释为类型的延续d
,并且会生成错误,我猜是因为生成了错误的类型(“ d
”和“ d;
”都不是有效类型)。