whitespace-mode 只是简单的将 ?\t
和 [?» ?\t]
做了映射。也就是说,屏幕上的每个 \t
都被替换成 »\t
显示。因为 \t
宽度是动态的,所以只要原始占用宽度大等于 2 就没问题。
例如当 tab-width
为 4 的时候,以下字符串占用的宽度是相同的:
Original | Whitespace mode |
---|---|
\t |
»\t |
\s\t |
\s»\t |
\s\s\t |
\s\s»\t |
一旦 \t
原始占用宽度小于 2,必然放不下 »\t
,自然而然后面这个 \t
就被推到下一个位置。
这可能要该底层的 c 代码,当原始占用宽度等于 1 的时候只插入»
。
我暂时没找到在哪里修改。