由于换行符,无法将翻译资源传递给 -xrm

由于换行符,无法将翻译资源传递给 -xrm

通过在命令行中附加 -xrm 参数,可以将资源传递给 X 应用程序。因此,如果我希望 Xmessage 背景为灰色,我可以发出xmessage Hi -xrm "xmessage*background: grey".

如果我想修改事件翻译,事情就会变得棘手。在我的.Xresouces,这个

Xmessage*Translations:#override\
    <Key>F10:exit(-1) \n\
    <Key>q:exit(-1)

设置成功F10q键退出任何 Xmessage 窗口,但我在命令行中使用 -xrm 时遇到困难,当然是因为换行符和转义反斜杠。

我尝试了以下三个命令,但没有成功。

xmessage Hi -xrm "xmessage*Translations:#override <Key>s:exit(4)
    <Key>r:exit(3)
    <Key>p:exit(2)"

xmessage Hi -xrm "xmessage*Translations:#override\
    <Key>s:exit(4)\n\
    <Key>r:exit(3)\n\
    <Key>p:exit(2)"

xmessage Hi -xrm "xmessage*Translations:#override <Key>s:exit(4)" \
-xrm "xmessage*Translations:#override <Key>r:exit(3)" \
-xrm "xmessage*Translations:#override <Key>p:exit(2)"

第三条命令仅成功分配最后一个键。其他的失败了,尽管我希望第一个能够工作,因为它在之后插入了一个换行符退出(4)退出(3),通过回显命令来确认。

我缺少什么以及如何纠正它?

答案1

您需要放入单引号:

xmessage Hi -xrm 'xmessage*Translations:#override\
    <Key>F10:exit(-1) \n\
    <Key>q:exit(-1)'

否则,换行符就会丢失。

相关内容