不幸的是,我有一个文件同时包含制表符和空格。
如何显示它们以便我知道特定空间实际上是制表符还是空格?
答案1
几种选择:
POSIX:
$ printf 'a b\tc \n' | sed -n l
a b\tc $
$ printf 'a b\tc \n' | od -A n -t cx1
a b \t c \n
61 20 62 09 63 20 0a
相当便携:
$ printf 'a b\tc \n' | cat -vte
a b^Ic $
(某些cat
实现有-A
的别名-vte
)。 如果您只关心制表符而不关心尾随空格,则仅使用-vt
或-T
与 GNU 一起使用。cat
请注意,转换的字符列表cat
因实现而异。
在vi
或 中view
,输入:set list
以使制表符和行尾变得可见。
答案2
假设您的编辑器是 Emacs 的相当现代的版本,那么这whitespace-mode
就是您正在寻找的。您可以通过变量自定义要突出显示的有问题的空格whitespace-style
:
whitespace-style
是定义在 中的变量whitespace.el
。其值为
(face tabs spaces trailing lines space-before-tab newline indentation empty space-after-tab space-mark tab-mark newline-mark)
文档:指定可视化的空白类型。
它是一个包含以下部分或全部值的列表:
face
通过面孔启用所有可视化(见下文)。
trailing
尾随空白通过面孔可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
tabs
TAB 通过面孔可视化。仅当(见上文)存在于 中时
它才有效 。face
whitespace-style
spaces
空间和硬空间通过面孔来可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
lines
超出列的线whitespace-line-column
通过面突出显示。
整行突出显示。
它优先于lines-tail
(见下文)。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
lines-tail
超出列的线whitespace-line-column
通过面突出显示。
但仅限于行超出列的部分whitespace-line-column
。仅当(见上文)不存在于 中 并且如果(见上文)存在于 中时,
它才有效。lines
whitespace-style
face
whitespace-style
newline
换行符通过面孔可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
empty
缓冲区开头和/或结尾的空行通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
indentation::tab
行首的 8 个或更多空格通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
indentation::space
行首的制表符通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
indentation
indent-tabs-mode
如果(which see)非零,则 行首的 8 个或更多空格被可视化;否则,行开头的 TAB 将通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-after-tab::tab
TAB 后的 8 个或更多空格通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-after-tab::space
当 TAB 之后出现 8 个或更多空格时,TAB 通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-after-tab
indent-tabs-mode
如果(which see) 非零, 则 TAB 后的 8 个或更多空格被可视化;否则,选项卡通过面孔可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-before-tab::tab
TAB 之前的空格通过面进行可视化。仅当中存在(见上文)
时才有效。face
whitespace-style
space-before-tab::space
当空格出现在 TAB 之前时,TAB 通过面可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-before-tab
indent-tabs-mode
如果(which see) 不为零, 则 TAB 之前的空格被可视化 ;否则,选项卡通过面孔可视化。仅当(见上文)存在于 中时
它才有效。face
whitespace-style
space-mark
空间和硬空间通过显示表进行可视化。
tab-mark
TAB 通过显示表进行可视化。
newline-mark
换行符通过显示表可视化。