我使用rxvt-unicode
版本9.22
作为终端模拟器,并使用文件 对其进行配置~/.Xresources
。
当我修改配置文件时,为了立即看到效果我执行命令:
xrdb ~/.Xresources
从man xrdb
:
以感叹号 (!) 开头的行将被忽略,并且可以用作注释。
在我的机器上,使用xrdb
version 时1.1.0
,当注释行包含奇数个单引号时,例如! it's a comment
,xrdb
会抱怨以下错误:
/home/user/.Xresources:1:5: warning: missing terminating ' character
! it's a comment
^
目前,我将单引号加倍以避免此错误:
! it''s a comment
我想我也可以使用/* */
, 代替!
, 因为它是 Vim 默认使用的注释字符串(在 中定义$VIMRUNTIME/ftplugin/xdefaults.vim
)。但我更喜欢使用!
,因为我发现用它来注释更具可读性。
有没有办法要求xrdb
忽略注释行内的单引号~/.Xresources
?
答案1
这似乎是由于 GNU 用作默认预处理器的默认行为发生了cpp
变化xrdb
。具体来说,根据C 预处理器:10.1 传统词法分析:
一般来说,在传统模式下,开盘报价不需要有匹配的收盘报价。
但是cpp
提供了在传统模式下操作的命令行选项:
-traditional
-traditional-cpp
Try to imitate the behavior of pre-standard C preprocessors, as opposed to ISO
C preprocessors. See Traditional Mode.
whilexrdb
允许在命令行上显式定义预处理器:
-cpp filename
This option specifies the pathname of the C preprocessor pro‐
gram to be used. Although xrdb was designed to use CPP, any
program that acts as a filter and accepts the -D, -I, and -U
options may be used.
因此应该可以通过使用来抑制警告
xrdb -cpp "/usr/bin/cpp -traditional-cpp" ~/.Xresources
或者
xrdb -cpp "/usr/bin/cpp -traditional" ~/.Xresources
答案2
我通过在 .Xresources 注释中将单引号 (') 替换为 Unicode 撇号 (') 来解决该错误。
有其他Unicode 选项(如果撇号不适合您)。