Rxvt

是否可以讓“xrdb”忽略註釋行上的單引號?

  • January 14, 2021

我正在使用rxvt-unicode, version9.22作為終端仿真器,並使用文件對其進行配置~/.Xresources

當我修改配置文件時,為了立即看到效果,我執行命令:

xrdb ~/.Xresources

來自man xrdb

以驚嘆號 (!) 開頭的行將被忽略,並可用作註釋。

在我的機器上,使用xrdbversion 1.1.0,當註釋行包含奇數個單引號時,例如! it's a commentxrdb抱怨錯誤,例如:

/home/user/.Xresources:1:5: warning: missing terminating ' character
! it's a comment
    ^

目前,我將單引號加倍以避免此錯誤:

! it''s a comment

我想我也可以使用/* */, 而不是!, 因為它是 Vim 預設使用的註釋字元串(定義在 中$VIMRUNTIME/ftplugin/xdefaults.vim)。但我更喜歡使用!,因為我發現使用它的評論更具可讀性。

有沒有辦法要求xrdb忽略註釋行中的單引號~/.Xresources

這似乎是由於 GNU 的預設行為發生了變化cpp,它xrdb用作其預設預處理器。具體來說,根據The C Preprocessor: 10.1 Traditional lexical analysis

一般來說,在傳統模式中,開場白不需要有匹配的閉場報價。

但是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

引用自:https://unix.stackexchange.com/questions/373187