Подтвердить что ты не робот

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.

Я хотел бы знать, как поместить его в поиск/замену (через / или :).

4b9b3361

Ответ 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/