最近的一个问题*让我想知道是否有文本编辑器可以让你看到文件的每个字符,即使它们是不可见的?具体来说,我会向我展示所有不可见的字符(不仅仅是常见的空格/换行符) . BOM marker只是一个例子,其他例如是mathematical invisibles或可能unsupported characters .
我不是在寻找一种文本编辑器,它只支持编码之间的各种文本编码/翻译 . 我遇到的所有文本编辑器都正确对待不可见的字符,即让它们不可见(或者只是在BOM标记的情况下在翻译中删除) .
我问这主要是出于学术兴趣,所以我并不特别关注任何特定的操作系统 . 我可以轻松地测试Linux和OSX解决方案,但是如果你推荐一个Windows编辑器,如果你包含编辑器如何处理除空白/换行之外的隐形,我将不胜感激 .
编辑:我开始确保我想要的行为可以通过自定义突出显示或通过乱搞字体本身在emacs / vim中实现 . 这种解决方案也是可以接受的 .
编辑2:看了几个选项后,我发现TextMate至少显示一个空白区域,文件中有一个不可见的UTF-8字符 . 对SO回答我的问题的能力略感失望 . Bounty去了VIM,因为这是解决方案最有可能的方向 .
*引发我这个问题的事件:我使用TextWrangler编写了一个perl脚本,并设法将编码更改为UTF8 BOM,它在文件的开头插入BOM标记 . Perl(或者更确切地说是操作系统)迅速错过了#!随之而来的是混乱 . 然后,由于大多数文本编辑器都没有显示BOM标记,即使打开了各种"show invisibles"选项,它也花了我一个下午的大部分时间来解决这个问题 . 现在我已经吸取了教训,并将立即使用 less
:-) .
9 回答
在Visual Studio的 Open File 对话框中,“打开”按钮旁边有一个向下箭头,可让您选择“打开方式...” . 结果对话框中的一个选项是 Binary Editor .
我偶尔使用它来发现一些看不见的字符或解决一些行结束问题 .
记事本岩石:
vim(在文本或图形模式下)如果你
:set list
可以显示所有控制字符 . BOM是一种特殊情况,由:set bomb
或:set nobomb
命令控制 .在EMACS中打开文件并执行M-X hexl-mode . 你会得到一个如下所示的显示:
我遇到了同样的限制 - 我的具体问题是需要能够显示U 200B(零宽度空间)和U 200C(零宽度非连接器)等字符 . (用于电子文本中使用像Khmer这样的语言,否则不会将单词与空格分开 . )与您不同,我需要一个Windows和Linux版本的编辑器,而Mac也是可取的 .
我没有找到任何可以让你在屏幕上显示它们的文本编辑器,虽然有些(很多?)会让你输入它们并将它们正确地视为可以剪切和粘贴的字符,并通过光标移动指示它们的存在 . (也就是说,如果屏幕显示“if”并且“i”和“f”之间有三个ZWSP,则必须按箭头键四次才能从“i”移动到“f” . )
TextPad 4.7.3是我选择的文本编辑器,但它在接受脚本时非常有限;而TextPad 5绝对不会显示这些隐形 .
我经常在OpenOffice.org Writer中打开我的文件,这些文件会在这些角色的位置显示灰色斜线并打开隐形,而Microsoft Word则显示此类隐形字符的双框(框内的框)字符 . 这个双框有宽度,并在屏幕上更改换行符,这不是一件容易的事,我在其他任何编辑器中都没有看到过 .
我更喜欢UltraEdit,即使它不是免费的 . 它非常能够显示隐藏的字符,包括强大的HEX查看模式 . (我不隶属于出版商,IDM . )
您还可以使用记事本来显示它们 . 这是一个例子,黑盒子是控制字符 .
我不确定,因为我有一段时间没有使用它,但我记得SciTE是一个很好的展示给我的"too much information"满足我的需求 .
Windows上的Programmer's Notepad可能有效 .
TextPad(这是nagware,在Windows上运行)
我不确定哪些会显示隐藏的角色,但它们都是为“书呆子”制作的,所以我认为它们会起作用,至少有一点点调整 . 我可以验证程序员的记事本是否显示“隐藏”字符 .
如果您运行的是32位版本的Windows,您可以在运行框中键入“编辑”,查看物料清单和其他不可见的字符,例如回车符或换行符,它们看起来像MS Dos编辑器中的音乐八分音符 . 或者从命令提示符 . 不幸的是,ms dos编辑器在64位系统上不可用:(