Текстовый редактор с возможностью просмотра невидимого?

Недавняя проблема * заставила меня задуматься, существует ли текстовый редактор, который позволяет вам видеть каждый символ файла, даже если они невидимы? В частности, я не ищу возможности редактирования в шестнадцатеричном формате, меня интересует текстовый редактор, который покажет мне все невидимые символы (а не только обычные символы пробелов / разрыва строки). Маркер спецификации - это лишь один пример, другие, например, математические невидимые объекты или, возможно, неподдерживаемые символы.

Я не ищу текстовый редактор, который просто поддерживает большое количество различных кодировок / переводов текста между кодировками. Все текстовые редакторы, с которыми я сталкивался, правильно обрабатывают невидимые символы, т.е. оставляют их невидимыми (или просто удаляются при переводе, как в случае маркера спецификации).

Я спрашиваю об этом в основном из академических интересов, поэтому я не особо привязан к какой-либо конкретной ОС. Я могу легко протестировать решения для Linux и OSX, но если вы порекомендуете редактор Windows, я был бы признателен, если бы вы включили описание того, как редактор обрабатывает невидимые объекты, кроме пробелов / разрывов строк.

РЕДАКТИРОВАТЬ: Я начинаю быть уверенным, что желаемое поведение может быть реализовано в emacs / vim либо с помощью настраиваемой подсветки, либо путем возни с самим шрифтом. Решение этого типа также было бы приемлемым.

EDIT2: просмотрев несколько вариантов, я нашел TextMate, который, по крайней мере, показывает пустое пространство, где в файле находится невидимый символ UTF-8. Слегка разочарован способностью SO ответить на мой вопрос. Баунти переходит в VIM, потому что это то направление, в котором, скорее всего, лежит решение.


* Инцидент, который привел меня к этому вопросу: я написал сценарий Perl с помощью TextWrangler и мне удалось изменить кодировку на UTF8 BOM, которая вставляет маркер BOM в начало файла. Perl (или, скорее, операционная система) сразу пропускает #! и наступает хаос. На то, чтобы понять это, мне потребовалось больше дня, поскольку большинство текстовых редакторов не отображают маркер спецификации даже при включенных различных параметрах «показывать невидимые объекты». Теперь я усвоил урок и сразу буду использовать less :-).


person Timo    schedule 26.03.2010    source источник
comment
Perl не обрабатывает #! линия; это комментарий. Ваша ОС - это то, что пытается это разобрать. В любом случае emacs + hexl-mode вам все покажет.   -  person jrockway    schedule 27.03.2010
comment
Я исправлюсь по поводу этого бита perl. Но я тоже немного прояснил вопрос.   -  person Timo    schedule 27.03.2010
comment
Для какой платформы нужен редактор? Windows? Linux? OS X? Амига?   -  person bta    schedule 27.03.2010
comment
OS X, Linux тоже в порядке. В основном это академический интерес.   -  person Timo    schedule 27.03.2010
comment
Не текстовый редактор, но в окнах команда ТИП показывает спецификацию ...   -  person KCD    schedule 03.07.2013
comment
Я столкнулся с этим как с реальной проблемой скриптов Scala. Кажется, имеет значение то, что у вас есть в конце файла с точки зрения невидимых символов.   -  person Rich Oliver    schedule 21.09.2013


Ответы (9)


vim (в текстовом или графическом режиме) может отображать все управляющие символы, если вы :set list. Спецификация - это особый случай, управляемый командами :set bomb или :set nobomb.

person Alex Martelli    schedule 04.04.2010
comment
Да, я сначала проверил vim, когда подумал об этой проблеме. Можно вставлять невидимые объекты, например Я CTRL-V u2062 ​​для невидимого математического времени, но нет способа заставить vim показывать этот символ. Если вы переключите кодировку, вы что-то увидите, но также испортите вставленный символ. - person Timo; 05.04.2010
comment
Вот и все. Не тот ответ, который я искал, но, тем не менее, лучший. - person Timo; 06.04.2010

В диалоговом окне Открыть файл Visual Studio рядом с кнопкой Открыть есть стрелка вниз, позволяющая выбрать Открыть с помощью .... Один из вариантов в появившемся диалоговом окне - Двоичный редактор.

Я использовал это время от времени, чтобы обнаружить какого-нибудь невидимого персонажа или решить проблему с окончанием строки.

person Scott Smith    schedule 26.03.2010

Блокнот ++ скал:

npp

person Amy B    schedule 26.03.2010
comment
Можете ли вы проверить, как выглядит файл спецификации UTF8 в Notepad ++, в частности, показывает ли он ‹U + FEFF› в качестве первого символа? - person Timo; 27.03.2010
comment
-1 Notepad ++ 6.1.2 никогда не отображает ‹U + FEFF› как видимый символ. - person M. Dudley; 05.11.2012
comment
Тем не менее, он показывает, использует ли файл спецификацию или нет в строке состояния. - person axxis; 17.02.2016

Откройте файл в EMACS и выполните шестнадцатеричный режим M-X. Вы получите такой дисплей:

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
person vy32    schedule 06.06.2010
comment
И ... я сам и я; Control-x Control-c = выйти из среды emacs. - person AnneTheAgile; 01.08.2014

Я столкнулся с теми же ограничениями - моя конкретная проблема заключается в необходимости иметь возможность отображать такие символы, как U + 200B, пространство нулевой ширины и U + 200C, не соединяющийся с нулевой шириной. (Используется в электронных текстах на таких языках, как кхмерский, в которых слова не разделяются пробелами.) В отличие от вас, вместо «платформа не имеет значения» мне нужен редактор с версиями для Windows и Linux. , и Mac тоже желателен.

Я не нашел никаких текстовых редакторов, которые позволили бы вам отображать их на экране, хотя некоторые (многие?) Позволят вам ввести их и будут правильно обрабатывать их как символы, которые можно вырезать и вставлять, и чье присутствие указывается перемещением курсора . (То есть, если на экране отображается «if» и есть три ZWSP между «i» и «f», вам нужно нажать клавишу со стрелкой четыре раза, чтобы перейти от «i» к «f».)

В остальном я предпочитаю текстовый редактор TextPad 4.7.3, но он очень ограничен в приеме скриптов; и TextPad 5 точно не показывает эти невидимки.

Я часто открывал свои файлы в OpenOffice.org Writer, где в месте расположения этих символов отображается серая косая черта с включенными невидимками, и Microsoft Word, который отображает двойной прямоугольник (прямоугольник внутри прямоугольника) для таких невидимок. Этот двойной прямоугольник имеет ширину и меняет разрывы строк на экране, что нетривиально и чего я не видел ни в одном другом редакторе.

person Roger_S    schedule 24.04.2010
comment
Вау, ++ за представление реального случая использования! Я имею ввиду, я просто ковырялся из любопытства :-). В любом случае, я пришел к выводу, что самый простой способ реализовать это - создать настраиваемую карту шрифтов utf-8, которая включает специальные глифы для всех желаемых символов ZWSP. Это также должно сделать его кроссплатформенным, вам просто нужно выяснить, как заставить ваш любимый редактор использовать настраиваемый шрифт. - person Timo; 24.04.2010

Я предпочитаю UltraEdit, хотя это и платно. Он очень способен отображать скрытые символы, включая надежный режим просмотра HEX. (Я не связан с издателем, IDM.)

person JYelton    schedule 31.03.2010
comment
Как вы относитесь к показу скрытых персонажей в Ultraedit? - person newenglander; 02.10.2017
comment
@newenglander Справка / руководство охватывает ваш вопрос, но находится в меню "Просмотр": Show spaces/tabs и Show line endings. - person JYelton; 02.10.2017

Вы также можете использовать Notepad ++, чтобы показать их. Вот пример, черные ящики - это управляющие символы.

Пример управляющих символов Notepad ++

person Ajster1989    schedule 30.10.2014
comment
Отличный совет, но эта функция не объясняется в вашем ответе, как получить доступ. Он должен быть доступен в Notepad ++ через пункт меню «Вид-› Символ- ›Все символы». По крайней мере, в Блокноте 7.7.1 - person Tore Aurstad; 14.11.2019

Я не уверен, так как давно не использовал его, но помню, что SciTE был хорошим, который показал мне "слишком много информации" для моих нужд.

Блокнот программиста в Windows может работать.

TextPad (это nagware, работает в Windows)

Я не уверен, какие из них будут отображать скрытых персонажей из коробки, но все они созданы для "занудных" вещей, поэтому я предполагаю, что они будут работать, по крайней мере, с небольшой настройкой. Я могу проверить, что Блокнот программиста показывает «скрытые» символы.

person Moshe    schedule 04.04.2010

Если вы используете 32-битную версию Windows, вы можете видеть спецификации и другие невидимые символы, такие как возврат каретки или перевод строки, которые выглядят как восьмая музыкальная нота в редакторе MS Dos Editor, который вы можете открыть, введя «редактировать» в поле выполнения. или из командной строки. К сожалению, редактор ms dos недоступен в 64-битных системах :(

person OfficeAngel    schedule 10.12.2010