在 vim 中显示不可见的字符

在 vim 中显示不可见的字符

当我使用 Latex 编译源代码时,出现以下错误消息

Unicode 字符 \u8:未设置为用于 LaTeX。

现在我怀疑这是由于一个不可见的字符造成的。该命令:set list没有显示任何可疑内容,而且:set display+=uhex似乎对我不起作用。这篇文章让我假设我也遇到了一些可疑的事情。

有没有办法在 vim 中显示一切我的文件中有哪些不可打印的字符?我使用的是 MacVim 版本 7.3 (53)。

答案1

你可以:

:setlocal display=uhex

通过十六进制数显示非 ASCII 字符。你也可以尝试亮点不可打印字符:

:set hlsearch
/\(\p\|$\)\@!.

然后有一个isprint选项可以控制哪些字符是“可打印的”。

如果这没有帮助,您可能需要:%!xxd逐字节检查在遇到问题的位置周围是否存在“可疑”的东西。

答案2

Vim 通常显示某物对于文件中的每个字符,空格、制表符和行尾序列或字符除外。我不认为这是一个隐藏字符问题;我认为这是文件编码问题。我认为 Vim 使用 UTF-8 对文件中的某些字符进行编码,而 LaTeX 需要 ASCII 或 Latin1。(我几乎只使用 ASCII,所以我肯定不是其他编码方面的专家。)

要检查 Vim 使用的编码,请执行

:set enc?

我猜这会返回“utf-8”。一种解决方案可能是使用 Latin1 编码保存文件。为此,请执行

:set fenc=latin1
:w

如果你想要在文件中查找任何非 ASCII 字符并在需要时进行更改,请使用以下命令搜索 0x80 至 0xff 范围内的字符

/[\x80-\xff]

要了解有关 Vim 使用不同编码的更多信息,请参阅

:help enc
:help fenc
:help 45.3

答案3

使用 vim 的另一种方法是运行

tr -d '[a-zA-Z0-9!#@_?+ \t\n\\()"^~`%-]'\'{} < your_latex_file.tex | hexdump -c

这应该为您提供有关哪些字符不在正常可打印字符范围内的信息。

相关内容