2010-05-09 2 views
20

У меня есть файл, который был экспортирован из Word, и он заменил все кавычки странными символами unicode, которые неправильно отображаются в vim. Так что теперь я хочу, чтобы эти символы должны быть заменены в кавычки, но я не знаю, как ввести этот символ вКак искать и заменять непечатаемый символ

:%s/???/'/g 

Символы выглядеть следующим образом: ~ U ~ R. Но, конечно, я не могу просто пометить их мышью и вставить в команду.

+0

не связано с программированием, принадлежит superuser.com. –

+5

@ax: http://meta.stackexchange.com/questions/25925/vim-questions-so-or-su –

+0

Вы можете изменить все «умные кавычки» из документов Word (которые закодированы с помощью схемы проприетарного кодирования Microsoft несовместимые с utf-8 и iso-8859-15) с помощью этой команды: [return] ':% s/\% x92/'/ g' [return] Обратите внимание: в этой строке нет скрытого символа. –

ответ

44

Вы можете попробовать установить тип кодировки и посмотреть, если он фиксирует visalizations этих символов:

:set encoding=utf-8 

, то вы можете использовать их непосредственно. Кроме того, вы можете поместить курсор на непечатаемом характере и ударили ga, он будет показывать десятичный/шестнадцатеричный/восьмеричной код этого символа, то вы можете заменить его:

:%s/\%xYY/substitute/g 

где YY шестнадцатеричный код полукокс, если это многобайтовая:

:%s/\%uYYYY/substitute/g 

подробности:

:help character-classes 
+0

Странно, '/ \% x00' ничего не нашел, хотя« общие »печатные материалы, например'/\% x41', сделали. Чтобы получить нулевое значение, мне пришлось [использовать этот трюк] (http://superuser.com/questions/75130/how-to-remove-this-symbol-with-vim). – ruffin

+0

Вы уверены, что не имеете в виду ': set fileencoding = utf-8' вместо этого? Он делает что-то совершенно отличное от ': set encoding = utf-8'. – Flimm

7

Я обычно:

  1. удалить символ с: x
  2. отменить мое изменение с: u
  3. сделать замену благодаря c_CTRL-R: :%s/^R"/'/g
+1

Эквивалентно, вы также можете использовать 'y', а затем пробел вместо' xu', но в зависимости от того, что работает для вас. – DrAl

+0

Спасибо Al! Я всегда задавался вопросом, как это сделать без 'vy' или' xu' –

+0

Также 'yl' (' l' для буквы). А также 'y ', но этот вид неловко. –

1

вы можете также фильтровать его с помощью тр команда

, например, заменяя гексагон a0, который происходит от вырезания и вставки MacOs , может быть заменен на пробел следующим образом (\ 240 является восьмеричным представлением hex a0)

:.,$!tr "\240" " " 
Смежные вопросы