Как я могу найти символ, который отображается как <85> в Vim? - PullRequest
18 голосов
/ 18 января 2010

У меня есть файл, который был преобразован из EBCDIC в ASCII. Там, где раньше были новые строки, теперь есть символы, которые отображаются как <85> (символ, представляющий один символ, а не четыре символа, которыми он выглядит), и весь файл находится в одной строке. Я хочу найти их и снова заменить их новыми строками, но я не знаю как.

Я попытался навести курсор на единицу и использовать * для поиска следующего вхождения, надеясь, что оно может появиться в моей / истории поиска. Это не сработало. Он просто искал слово, которое следовало за символом <85>.

Я немного погуглил, но ничего очевидного не увидел.

Моя цель - построить поиск и заменить строку, например:

:%s/<85>/\n/g   

Который сейчас мне просто дает:

E486: Pattern not found: <85>  

Спасибо!

Ответы [ 2 ]

25 голосов
/ 18 января 2010

Я нашел это сообщение из поиска Google. Похоже, вы должны быть в состоянии сделать:

:%s/\%x85/\r/gc

(пропустите c, чтобы выполнить замену без запроса, попробуйте сначала c, чтобы убедиться, что он делает то, что вы хотите.)

В vim ввод :h \%x дает более подробную информацию. Помимо \%x, вы можете использовать \%d, \%o, \%u и \%U для десятичных, восьмеричных, до четырех и до восьми шестнадцатеричных символов.

0 голосов
/ 18 января 2010

попробуйте это: :%s/<85>/^M/g

примечание: нажмите Ctrl-V вместе, затем M

или, если вы не возражаете против использования другого инструмента,

awk '{gsub("<85>","\n")}1' file
...