最近的一个问题*让我想知道是否有文本编辑器可以让你看到文件的每个字符,即使它们是不可见的?具体来说,我不是在寻找十六进制编辑功能,我对一个文本编辑器很感兴趣,它会向我显示所有不可见的字符(不仅仅是常见的空格/换行符)。 BOM marker只是一个例子,其他例如是mathematical invisibles或可能unsupported characters。
我不是在寻找一种文本编辑器,它只支持编码之间的各种文本编码/翻译。我遇到的所有文本编辑都正确对待不可见的字符,即让它们不可见(或者只是在BOM标记的情况下在翻译中删除)。
我这主要是出于学术兴趣,所以我并不特别关注任何特定的操作系统。我可以轻松地测试Linux和OSX解决方案,但是如果你推荐一个Windows编辑器,如果你包含编辑器如何处理除空白/换行之外的隐形,我将不胜感激。
编辑:我开始确定我想要的行为可以通过自定义突出显示或通过乱搞字体本身在emacs / vim中实现。这种解决方案也是可以接受的。
EDIT2:在查看了几个选项之后,我找到了TextMate,它至少显示了一个空白区域,文件中有一个不可见的UTF-8字符。对SO回答我的问题的能力略感失望。 Bounty去了VIM,因为这是解决方案最有可能的方向。
*引发我这个问题的事件:我使用TextWrangler编写了一个perl脚本,并设法将编码更改为UTF8 BOM,它在文件的开头插入BOM标记。 Perl(或者更确切地说是操作系统)迅速错过了#!随之而来的是混乱。然后,由于大多数文本编辑器都没有显示BOM标记,即使打开了各种“show invisibles”选项,它也花了我一个下午的大部分时间来解决这个问题。现在我已经吸取了教训,并立即使用less
: - )。
答案 0 :(得分:18)
:set list
, vim(在文字或图形模式下)可以显示所有控制字符。 BOM是一种特殊情况,由:set bomb
或:set nobomb
命令控制。
答案 1 :(得分:9)
在Visual Studio的打开文件对话框中,打开按钮旁边有一个向下箭头,可让您选择打开方式... 。结果对话框中的一个选项是二进制编辑器。
我偶尔使用它来发现一些隐形字符或解决一些行结束问题。
答案 2 :(得分:7)
Notepad ++ rocks:
答案 3 :(得分:5)
在EMACS中打开文件并执行M-X hexl-mode。您将看到如下显示:
87654321 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789abcdef 00000000: 2320 2020 2020 2020 2020 2020 2020 2020 # 00000010: 2020 2020 2020 2020 2020 2020 2020 2020 00000020: 2020 2020 2020 2020 2020 2020 2020 2020 00000030: 2d2a 2d20 4175 746f 636f 6e66 202d 2a2d -*- Autoconf -*- 00000040: 0a23 2050 726f 6365 7373 2074 6869 7320 .# Process this 00000050: 6669 6c65 2077 6974 6820 6175 746f 636f file with autoco 00000060: 6e66 2074 6f20 7072 6f64 7563 6520 6120 nf to produce a 00000070: 636f 6e66 6967 7572 6520 7363 7269 7074 configure script 00000080: 2e0a 2320 4f72 6465 7220 6973 206c 6172 ..# Order is lar 00000090: 6765 6c79 2069 7272 6576 656c 6c61 6e74 gely irrevellant 000000a0: 2c20 616c 7468 6f75 6768 2069 7420 6d75 , although it mu 000000b0: 7374 2073 7461 7274 2077 6974 6820 4143 st start with AC 000000c0: 5f49 4e49 5420 616e 6420 656e 6420 7769 _INIT and end wi 000000d0: 7468 2041 435f 4f55 5450 5554 0a23 2053 th AC_OUTPUT.# S 000000e0: 6565 2068 7474 703a 2f2f 6175 746f 746f ee http://autoto 000000f0: 6f6c 7365 742e 736f 7572 6365 666f 7267 olset.sourceforg 00000100: 652e 6e65 742f 7475 746f 7269 616c 2e68 e.net/tutorial.h
答案 4 :(得分:3)
我遇到了同样的限制 - 我的具体问题是需要能够显示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 ,显示此类不可见的双框(框内框)字符。这个双框有宽度,可以在屏幕上更改换行符,这在任何其他编辑器中都没有看到。
答案 5 :(得分:2)
我更喜欢UltraEdit,即使它不是免费的。它非常能够显示隐藏的字符,包括强大的HEX查看模式。 (我不隶属于出版商,IDM。)
答案 6 :(得分:2)
您还可以使用Notepad ++来显示它们。这是一个例子,黑框是控制字符。
答案 7 :(得分:1)
我不确定,因为我有一段时间没有使用它,但我记得SciTE是一个很好的,它向我展示了“太多信息”以满足我的需求。
Windows上的Programmer's Notepad可能有效。
TextPad(它是nagware,在Windows上运行)
我不确定其中哪些会显示隐藏的角色,但它们都是为“书呆子”制作的,所以我认为它们会起作用,至少稍微调整一下。我可以验证程序员的记事本是否显示“隐藏”字符。
答案 8 :(得分:1)
如果您运行的是32位版本的Windows,您可以在MS Dos编辑器中看到BOM和其他不可见的字符,例如回车符或换行符,您可以通过在“编辑”中键入“编辑”来打开它们。运行框或从命令提示符。 不幸的是,ms dos编辑器在64位系统上不可用:(