Ответ 1
vim (в текстовом или графическом режиме) может отображаться все управляющие символы, если вы :set list
. Спецификация - это особый случай, управляемый командами :set bomb
или :set nobomb
.
Недавняя проблема * заставила меня задаться вопросом, есть ли там текстовый редактор, который позволяет видеть каждый отдельный символ файла, даже если он невидим? В частности, я не ищу возможности редактирования hex, меня интересует текстовый редактор, который покажет мне все невидимые символы (а не только обычные символы пробелов/строк). маркер спецификации является лишь одним примером, другие - например. математические невидимости или, возможно, неподдерживаемые символы.
Я не ищу текстовый редактор, который просто поддерживает большое количество текстовых кодировок/переводов между кодировками. Все текстовые редакторы, с которыми я столкнулся, правильно относятся к невидимым персонажам, то есть оставляют их невидимыми (или просто удаляются в переводе, как в случае маркера спецификации).
Я прошу об этом в основном из академических интересов, поэтому я не особо отношусь к какой-либо конкретной ОС. Я могу легко протестировать Linux и OSX-решения, но если вы порекомендуете редактор Windows, я был бы признателен, если бы вы включили описания того, как редактор обрабатывает невидимые объекты, отличные от пробелов/строк.
EDIT: я начинаю быть уверенным, что поведение, которое я хочу, может быть реализовано в emacs/vim через пользовательскую подсветку или путем использования самого шрифта. Решение этого типа также будет приемлемым.
EDIT2: просмотрев несколько вариантов, я нашел TextMate, который, по крайней мере, показывает пустое место, где в файле находится невидимый символ UTF-8. Немного разочарован способностью SO ответить на мой вопрос. Bounty отправляется в VIM, потому что это направление, в котором скорее всего лежит решение.
* Случай, который приводит меня к этому вопросу: я написал perl script с помощью TextWrangler и сумел изменить кодировку на спецификацию UTF8, которая вставляет маркер спецификации в начале файла. Perl (или скорее операционная система) быстро пропускает #! и наступает гнев. Затем мне потребовалась лучшая часть дня, чтобы понять это, поскольку большинство текстовых редакторов не показывают маркер спецификации даже с включенными опциями "show invisibles". Теперь я выучил свой урок и сразу же использую less
: -).
vim (в текстовом или графическом режиме) может отображаться все управляющие символы, если вы :set list
. Спецификация - это особый случай, управляемый командами :set bomb
или :set nobomb
.
В диалоговом окне Visual Studio Открыть файл кнопка "Открыть" имеет рядом с ней стрелку вниз, которая позволяет выбрать "Открыть с". Один из вариантов в появившемся диалоговом окне: Двоичный редактор.
Я использовал это время от времени, чтобы обнаружить какой-то невидимый символ или решить некоторую проблему с окончанием строки.
Notepad ++ rocks:
Откройте файл в 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
Я предпочитаю UltraEdit, хотя он не является бесплатным. Он очень способен отображать скрытые символы, в том числе надежный режим просмотра HEX. (Я не являюсь аффилированным лицом издателя, IDM.)
Я столкнулся с теми же ограничениями - моей конкретной проблемой является необходимость отображать такие символы, как U + 200B, пространство с нулевой шириной и U + 200C, без столяров нулевой ширины. (Используется в электронных текстах с такими языками, как Khmer, которые в противном случае не разделяют слова с пробелами.) В отличие от вас, вместо того, чтобы "платформа не имеет значения", мне нужен редактор с версиями Windows и Linux, а Mac тоже желательно.
Я не нашел текстовых редакторов, которые позволят вам отображать их на экране, хотя некоторые (многие?) позволят вам вводить их и будут правильно относиться к ним как к символам, которые можно вырезать и вставить, а присутствие которых указано через перемещение курсора. (То есть, если на экране отображается "if" и есть три ZWSP между "i" и "f", вам нужно четыре раза нажимать клавишу со стрелкой для перехода от "i" в "f." )
TextPad 4.7.3 - это в остальном мой текстовый редактор, но он очень ограничен в принятии сценариев; и TextPad 5 определенно не показывает этих невидимых.
Я часто прибегал к открытию моих файлов в OpenOffice.org Writer, в котором будет отображаться серая косая черта в местоположении этих символов с включенными невидимыми, и Microsoft Word, в котором отображается символ с двойным ящиком (поле внутри поля) для таких невидимых. Этот двойной ящик имеет ширину и меняет разрывы строк на экране, что не является тривиальным и которого я не видел ни в одном другом редакторе.
Вы также можете использовать Notepad ++ для отображения их. Вот пример, черные ящики являются управляющими символами.
Я не уверен, поскольку я не использовал его некоторое время, но я помню, что SciTE был хорошим, показал мне "слишком много информации" для моих нужд.
Блокнот программиста в Windows может работать.
TextPad (это nagware, работает в Windows)
Я не уверен, какие из них покажут скрытые символы из коробки, но все они сделаны для "занудных" вещей, поэтому я предполагаю, что они будут работать, по крайней мере, с небольшой настройкой. Я могу проверить, что программатор Блокнот показывает "скрытые" символы.
Если вы используете 32-битную версию Windows, вы можете увидеть спецификации и другие невидимые символы, такие как возврат каретки или линейные каналы, которые выглядят как восьмая нота в редакторе MS Dos Editor, которую вы можете открыть, набрав "редактировать" в в поле запуска или из командной строки. К сожалению, редактор ms dos не доступен в 64-битных системах: (