在纯文本文件中显示制表符/空格的最佳方式是什么

在纯文本文件中显示制表符/空格的最佳方式是什么

不幸的是,我有一个文件同时包含制表符和空格。

如何显示它们以便我知道特定空间实际上是制表符还是空格?

答案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 尾随空白通过面孔可视化。仅当(见上文)存在于 中时
    它才有效。facewhitespace-style

  • tabs TAB 通过面孔可视化。仅当(见上文)存在于 中时
    它才有效 。 facewhitespace-style

  • spaces 空间和硬空间通过面孔来可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • lines 超出列的线 whitespace-line-column 通过面突出显示。
    整行突出显示。
    它优先于lines-tail(见下文)。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • lines-tail 超出列的线 whitespace-line-column通过面突出显示。
    但仅限于行超出列的部分whitespace-line-column 。仅当(见上文)不存在于 中 并且如果(见上文)存在于 中时,
    它才有效。 lineswhitespace-stylefacewhitespace-style

  • newline 换行符通过面孔可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • empty 缓冲区开头和/或结尾的空行通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • indentation::tab 行首的 8 个或更多空格通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • indentation::space 行首的制表符通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • indentationindent-tabs-mode如果(which see)非零,则 行首的 8 个或更多空格被可视化;否则,行开头的 TAB 将通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-after-tab::tab TAB 后的 8 个或更多空格通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-after-tab::space 当 TAB 之后出现 8 个或更多空格时,TAB 通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-after-tabindent-tabs-mode 如果(which see) 非零, 则 TAB 后的 8 个或更多空格被可视化;否则,选项卡通过面孔可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-before-tab::tab TAB 之前的空格通过面进行可视化。仅当中存在(见上文)
    时才有效。 facewhitespace-style

  • space-before-tab::space当空格出现在 TAB 之前时,TAB 通过面可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-before-tabindent-tabs-mode如果(which see) 不为零, 则 TAB 之前的空格被可视化 ;否则,选项卡通过面孔可视化。仅当(见上文)存在于 中时
    它才有效。 facewhitespace-style

  • space-mark 空间和硬空间通过显示表进行可视化。

  • tab-mark TAB 通过显示表进行可视化。

  • newline-mark 换行符通过显示表可视化。

相关内容