2009-10-05 2 views
1

У меня есть файл с некоторыми акцентами, а VIM отображает их как символы «~ V». Команда «od -bc» сообщает мне, что символы являются charcode 226. Я хочу заменить их с помощью VIM. Но я не могу заставить его соответствовать персонажам. Как я могу это достичь?vim и непризнанные символы

Необязательный вопрос: как я могу установить VIM, какая кодировка используется для интерпретации текущего файла?

ответ

2

Вы можете использовать следующие форматы, от руководства ВИМ на шаблоны и регулярные выражения:

ordinary atom 
magic nomagic matches 
\%d \%d match specified decimal character (eg \%d123 
\%x \%x match specified hex character (eg \%x2a) 
\%o \%o match specified octal character (eg \%o040) 
\%u \%u match specified multibyte character (eg \%u20ac) 
\%U \%U match specified large multibyte character (eg \%U12345678) 

Таким образом, вы должны быть в состоянии сделать что-то вроде этого, чтобы заменить символ 226 с пробелом глобально в файле:

:%s/\%d226/ /g 

Что касается последнего, если вы:

:set encoding 

вы увидите о utput как:

encoding=latin1 
+0

К сожалению, выходы VIM «E71: недопустимый символ после \%» при попытке. – Alsciende

+0

Я получаю E486: шаблон не найден (что я ожидаю). Однако, если я опускаю 'd' (то есть, я просто делаю s/\% 226 /), я получаю E71. Какая команда вы пытаетесь? –

+0

Я набираю:% s/\% d226/é/g – Alsciende

1

Один очень простой способ борьбы с такими "странными" персонажей:

  1. выберите оскорбительный символ (ы) визуально (v)
  2. дергать его в буфер
  3. заменить его: :%s/<ctrl-r>"/something-else/g

где <ctrl-r> является комбинация клавиш Ctrl и буква г - вместе с "его будет копировать буфер в командную строку - эффективно помещать ваши нарушающие символы в поле s///.

Смежные вопросы