首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在注释行上使` `xrdb` `忽略单引号?

是否可以在注释行上使` `xrdb` `忽略单引号?
EN

Unix & Linux用户
提问于 2017-06-24 21:32:50
回答 2查看 735关注 0票数 6

我使用rxvt-unicode版本9.22作为终端仿真器,并使用文件~/.Xresources对其进行配置。

当我修改配置文件时,要立即看到效果,请执行以下命令:

代码语言:javascript
复制
xrdb ~/.Xresources

来自man xrdb

以感叹号(!)开头的行将被忽略,并可用作注释。

在我的机器上,使用xrdb版本的1.1.0,当注释行包含奇数单引号(例如! it's a comment )时,xrdb会发出一个错误,例如:

代码语言:javascript
复制
/home/user/.Xresources:1:5: warning: missing terminating ' character
 ! it's a comment
     ^

目前,为了避免此错误,我将单引号加倍:

代码语言:javascript
复制
! it''s a comment

我认为我也可以使用/* */,而不是!,因为它是Vim默认使用的注释字符串(在$VIMRUNTIME/ftplugin/xdefaults.vim中定义)。但是我更喜欢使用!,因为我发现它的注释更易读。

有没有办法让xrdb忽略~/.Xresources注释行中的单引号?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-06-24 22:09:54

这似乎是由于GNU cpp的默认行为发生了变化,xrdb将其用作其默认的预处理器。具体来说,根据C预处理: 10.1传统词法分析

一般来说,在传统的模式下,开场白不必有一个匹配的收尾报价。

但是,cpp提供了一个命令行选项,可以在传统模式下操作:

代码语言:javascript
复制
-traditional
-traditional-cpp
    Try to imitate the behavior of pre-standard C preprocessors, as opposed to ISO 
    C preprocessors. See Traditional Mode.

xrdb允许在其命令行上显式地定义预处理器:

代码语言:javascript
复制
-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.

因此,应该可以通过使用

代码语言:javascript
复制
xrdb -cpp "/usr/bin/cpp -traditional-cpp"  ~/.Xresources

代码语言:javascript
复制
xrdb -cpp "/usr/bin/cpp -traditional"  ~/.Xresources
票数 7
EN

Unix & Linux用户

发布于 2021-01-14 02:14:09

我通过在.Xresources注释中用Unicode撇号(')替换单引号(‘)来解决这个错误。

如果撇号不适合您,则有其他 Unicode选项。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/373187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档