У меня есть файл с некоторыми непечатаемыми символами, которые появляются как^C или^B, я хочу найти и заменить эти символы, как я могу это сделать?Как заменить или найти непечатаемые символы в regex vim?
ответ
Допустим, вы хотите заменить^C с C:
:%s/CtrlVC/C/g
Где CtrlVC означает тип V затем C, удерживая Ctrl нажатой.
CtrlV позволяет вводить управляющие символы.
Вы можете использовать:
:%s/^C//g
Чтобы получить ^C
удерживайте клавишу управления, нажмите V
затем C
(оба, удерживая клавишу управления) и ^C
появится. Это найдет все вхождения и ничего не заменит.
Чтобы удалить как ^C
и ^B
вы можете сделать:
:%s/^C\|^B//g
Попробуйте после сохранения файла в Vim (если вы находитесь в среде Linux)
:%!tr -cd '[:print:]\n'
, пожалуйста, объясните этот день, сохранив волшебное вуду! – Prospero
@JamesAndino: ':%' фильтрует все строки, используя внешнюю ('!') Программу 'tr', которая _removes_ (' -d') все символы, которые _not_ ('-c') _printable_ (' [: print: ] ') или _newline_ (' \ n'). – quasimodo
Это не подходит для Unicode, так как это класс символов POSIX (http://en.wikipedia.org/wiki/Regular_expression#Character_classes). Поэтому, если у вас есть YAML с данными типа 你好, 'tr' будет удалять данные Unicode при использовании' [: print:] '. – ash
Удаление символов управления:
:%s/[[:cntrl:]]//g
Удаление непечатаемых символов (удаляет не-ASCII символы также):
:%s/[^[:print:]]//g
По крайней мере, до vim 7.3 [: print:] соответствует только символам ASCII для печати (отредактирован ответ, чтобы предупредить читателей об этом факте) – ndemou
@ndemou Это сложно, с [] вокруг [: print:] the^следует инвертировать сопоставлять и возвращать любые непечатаемые. Или, возможно, это было ваше редактирование? – dragon788
@ dragon788, да, я знал, как это работает, когда я написал свой комментарий. Попробуйте второе регулярное выражение по тексту с печатными символами Юникода за пределами таблицы ASCII, чтобы понять мой комментарий (он удалит символы Юникода). – ndemou
Ни один из ответов здесь, используя управляющие символы Vim, не работал для меня. Мне нужно было ввести диапазон юникодов.
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
Этот диапазон Юникода был обнаружен на этом посту другой: https://stackoverflow.com/a/8171868/231914
Поскольку TAB считается непечатаемым, значит, эти [[: cntrl:]] и [^ [: print:]] соответствуют TAB (0x9, C-I) – mosh
- 1. sql, чтобы найти непечатаемые символы в строке
- 2. TO Найти непечатаемые символы в файле
- 3. Как совместить непечатаемые символы?
- 4. Regex заменить шестнадцатеричные символы
- 5. Как Teradata компилирует непечатаемые символы?
- 6. непечатаемые символы в java
- 7. Найти непечатаемые символы, используя MS word VBA
- 8. Как Python обрабатывает непечатаемые символы?
- 9. Как отображать непечатаемые символы в html-страницах
- 10. Как отображать непечатаемые символы Ascii?
- 11. Regex заменить экранированные символы
- 12. Как предотвратить или заменить странные символы в наклеенными Vim макросов
- 13. Заменить неподходящие символы regex
- 14. Vim regex группа захвата заменить
- 15. Поддерживает ли TCP непечатаемые символы?
- 16. vim: заменить символы из backreference
- 17. Как найти и заменить символы в строке?
- 18. Как определить непечатаемые символы в .NET?
- 19. непечатаемые символы в строке - php
- 20. Скрыть непечатаемые символы в Затмении
- 21. Как найти и заменить символы [] с помощью regex?
- 22. печатать непечатаемые символы в заданной строке?
- 23. Как обрабатывать ascii непечатаемые символы в java
- 24. Как удалить непечатаемые/невидимые символы в рубине?
- 25. Как отображать непечатаемые символы в QTextEdit pyqt4?
- 26. Regex: найти соответствующие символы
- 27. Powershell или Batch: найти и заменить символы
- 28. Python - Regex Как заменить символы в строке?
- 29. Как Regex заменить символы в конце строки
- 30. Как заменить на Vim с помощью regex
Вы также можете использовать Ctrl-Q. Это полезно для некоторых пользователей, которые отображают Ctrl-V в операциях с буфером обмена –