我希望能够在游侠文件管理器通过输入如下内容:
:newcmd myarg
并用它运行任意代码。
命令定义还应该能够访问程序的状态,例如当前目录和选定的文件。
有没有办法做到这一点?
免责声明:由于缺乏关于此主题的优质资料,我创建了此问题并自行回答。非常欢迎提供其他答案。
答案1
编辑~/.config/ranger/commands.py
以包含类似内容:
from ranger.api.commands import *
class newcmd(Command):
def execute(self):
if not self.arg(1):
self.fm.notify('Wrong number of arguments', bad=True)
return
# First argument. 0 is the command name.
self.fm.notify(self.arg(1))
# Current directory to status line.
self.fm.notify(self.fm.thisdir)
# Run a shell command.
self.fm.run(['touch', 'newfile')
现在您可以输入:
:newcmd myarg
运行定义的命令。
然后,您可以更进一步为其定义一个地图,例如:添加到~/.config/ranger/rc.conf
:
map ,n console newcmd
map ,m newcmd default-arg
现在您只需输入:
,n
在状态行上写入newcmd
,并准备让用户输入第一个参数,m
并使用默认参数立即运行命令
在 ranger 1.6.1 上测试。