我想将选定的文件所有者和当前目录权限(以 的形式drwxrwxrwx
)放在 表单中Owner:{owner}|Updir:{perms}
。
事实证明这很棘手,涉及宏和内部函数,所以我分享了解决方案。
答案1
将其添加到vifmrc
:
set statusline=Owner:%u\|Updir:"%{system('stat --printf=%A '.expand('%d'))}"
%u
是一个扩展到所选文件所有者的宏,如“状态行”部分所述帮助文件。\|
是管道字符。它需要转义,因为 Vifm 将未转义的形式视为命令连接。
现在到了棘手的部分:要以所需的形式检索权限,应该stat --printf=%A {directory}
由 shell 进行评估。因此,
%{expr}
首先,需要使用评估表达式语法并用引号括起来,因为结果应该是一个字符串。然后,使用
system({command})
在系统shell下调用该命令。stat --printf=%A
传递给 shell 的命令是与目录名连接(注意尾随空格)的结果。目录名使用 Vifm 宏检索%d
,需要使用 进行扩展expand({macro})
,连接由字符完成.
。