状态行中的 Shell 命令输出:函数和宏

状态行中的 Shell 命令输出:函数和宏

我想将选定的文件所有者和当前目录权限(以 的形式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 进行评估。因此,

  1. %{expr}首先,需要使用评估表达式语法并用引号括起来,因为结果应该是一个字符串。

  2. 然后,使用system({command})在系统shell下调用该命令。

  3. stat --printf=%A传递给 shell 的命令是与目录名连接(注意尾随空格)的结果。目录名使用 Vifm 宏检索%d,需要使用 进行扩展expand({macro}),连接由字符完成.

相关内容