Vim: как искать/заменять специальные символы?
После копирования-вставки из википедии в vim я получаю следующее:
1 A
2
3 [+] Métier agricole<200e> – 44 P • 2 C
4 [×] Métier de l'ameublement<200e> – 10 P
5 [×] Métier de l'animation<200e> – 5 P
6 [+] Métier en rapport avec l'art<200e> – 11 P • 4 C
7 [×] Métier en rapport avec l'automobile<200e> – 10 P
8 [×] Métier de l'aéronautique<200e> – 15 P
Проблема заключается в том, что <200e>
является только char.
Я хотел бы знать, как поместить его в поиск/замену (через /
или :
).
Ответы
Ответ 1
Обратитесь за помощью к \%u
:
/\%d /\%x /\%o /\%u /\%U E678
\%d123 Matches the character specified with a decimal number. Must be
followed by a non-digit.
\%o40 Matches the character specified with an octal number up to 0377.
Numbers below 040 must be followed by a non-octal digit or a non-digit.
\%x2a Matches the character specified with up to two hexadecimal characters.
\%u20AC Matches the character specified with up to four hexadecimal
characters.
\%U1234abcd Matches the character specified with up to eight hexadecimal
characters.
Это последовательности, которые вы можете использовать. Похоже, у вас есть два байта, поэтому \%u200e
должен соответствовать ему. Во всяком случае, это довольно странно. 20 в UTF-8/ASCII - это пространство
символ, а 0e - ^ N. Проверьте настройки кодировки.
Ответ 2
Если вы хотите быстро выбрать этот посторонний символ повсюду и заменить его/избавиться от него, вы можете:
- изолировать один из странных символов, добавив пробел до и после него, поэтому он становится "словом"
- используйте команду * для поиска слова под курсором. Если у вас есть
set hlsearch
on, вы должны увидеть все события выделенного постороннего символа.
- заменить последний искомый элемент на что-то еще, глобально:
:%s//something else/