То, что я хочу, довольно просто, так что, надеюсь, исправление довольно простое. Я хочу, чтобы любой файл, который я открываю в VIM, рассматривал каждый байт как символ низкого ASCII.
Я хочу, чтобы символ отображался нормально, если он соответствует одному из следующих критериев:
- Он имеет графическое представление (так что это не число, буква или пунктуация)
- Это символ новой строки, пробела или табуляции (горизонтальная табуляция, а не vtab)
В противном случае я хочу, чтобы каждый байт отображался в обычном формате Vim для непечатаемого двоичного байта (например, <02>
, ^H
, ^@
).
Примечание: этот вопрос похож / связан с этот вопрос , но я спрашиваю это снова здесь, потому что это более широко, это относится здесь, а не SO, и на этот вопрос не было удовлетворительных ответов.
С помощью xxd
для такого рода вещей кажется излишним.
binary
Режим ответа на этот вопрос (на данный момент последний) удовлетворительный?<feff>
, что является совершенно неверным на нескольких уровнях (спецификация составляет три байта, поэтому она ошибочна в отношении длины, в соответствии с этим вопросом я хочу иметь возможность изменять каждый байт индивидуально, поэтому его представление бесполезно, а спецификация фактически0xefbbbf
; это даже не содержит0xff
поэтому представление вводит в заблуждение).LANG=C; vim
? Это должно отключить все верхние ASCII.:e ++enc=latin1
в связанном вопросе есть подход, который я бы использовал, но он показывает некоторый символ для байтов со значением, для представления которого требуется 8 бит, тогда как ASCII является 7-битной системой и, следовательно, вообще не может представлять эти символы. Если у вас действительно есть файл только с ASCII-представляемыми байтами, вы можете попробовать прочитать файл в кодировке ASCII (например, в Windows, cp20127), но это даст ошибку преобразования, если в файле есть что-то вроде спецификации.