Подтвердить что ты не робот

Как заменить или найти непечатаемые символы в vim regex?

У меня есть файл с некоторыми непечатаемыми символами, которые появляются как ^ C или ^ B, я хочу найти и заменить эти символы, как я могу это сделать?

4b9b3361

Ответ 1

Предположим, что вы хотите заменить ^ C на C:

:%s/CtrlVC/C/g

Где Ctrl V C означает тип V, затем C, удерживая нажатой кнопку Ctrl.

Ctrl V позволяет вводить управляющие символы.

Ответ 2

Удаление только контрольных символов:

:%s/[[:cntrl:]]//g

Удаление непечатаемых символов (обратите внимание, что в версиях, предшествующих ~ 8.1.1, также удаляются не-ASCII символы):

:%s/[^[:print:]]//g

Разницу между ними можно увидеть, если у вас есть несколько непечатаемых неконтролирующих символов, например, пробел нулевой ширины:

enter image description here

Ответ 3

Попробуйте это после сохранения файла в vim (если вы находитесь в среде Linux)

:%!tr -cd '[:print:]\n'

Ответ 4

Вы можете использовать:

:%s/^C//g

Чтобы получить ^C, удерживайте клавишу управления, нажмите V, затем C (оба удерживания клавиши управления), и появится ^C. Это найдет все вхождения и ничего не заменит.

Чтобы удалить как ^C, так и ^B, вы можете:

:%s/^C\|^B//g

Ответ 5

Вы можете использовать префикс CTRL-V, чтобы ввести их, или, если они не легко могут быть напечатаны, выдерните и вставьте их, используя CTRL-R ".

Ответ 6

Ни один из ответов здесь, используя управляющие символы Vim, не работал у меня. Мне нужно было ввести диапазон юникодов.

:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g

Этот ряд unicode был найден в этом другом сообщении: fooobar.com/info/16405/...