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

Найти символ под курсором в vim

В vim, как я могу найти следующее появление символа под курсором? Я хочу что-то вроде *, но для одного символа вместо слова.

Пример:

H|o|w are you?

переходит в:

How are y|o|u?

Причина, по которой я хочу, - это потому, что на моем файле есть странный вид (тот, который я даже не знаю, как набирать), и я хочу быстро их удалить.

4b9b3361

Ответ 1

Ниже отобразится <leader>z (обычно \z)

:nnoremap <leader>z xhp/<C-R>-<CR>

Сообщите мне, если это сработает для вас.

Ответ 2

Также посмотрите

g a (покажите символ под курсором как ascii)

g 8 (покажите символ под курсором как utf8, включая материал Unicode, шестнадцатеричные коды и т.д.)

И самое полезное:

8 g 8

Find an illegal UTF-8 byte sequence at or after the
        cursor.  This works in two situations:
        1. when 'encoding' is any 8-bit encoding
        2. when 'encoding' is "utf-8" and 'fileencoding' is
           any 8-bit encoding
        Thus it can be used when editing a file that was
        supposed to be UTF-8 but was read as if it is an 8-bit
        encoding because it contains illegal bytes.
        Does not wrap around the end of the file.
        Note that when the cursor is on an illegal byte or the
        cursor is halfway a multi-byte character the command
        won't move the cursor.

Обновление

Используйте Тим Папа vim-characterize плагин, чтобы получить полные имена и данные UNICODE:

В Vim нажатие ga на символ показывает его представление в десятичной, восьмеричной и шестнадцатеричной.

Characterize.vim модернизирует это с помощью следующие дополнения:

  • Имена символов Unicode: U + 00A9 СИМВОЛ АВТОРСКОГО ПРАВА
  • Диграфы Vim (введите после ввода символа): Co, cO
  • Коды Emoji:: copyright:
  • Объекты HTML: & copy;

Ответ 3

В одной строке вы можете использовать fo, а затем ; для перехода вперед (или , назад).

В нескольких строках вы должны использовать /o, а затем n для перехода вперед (или n назад).

В качестве альтернативы, ваша проблема может быть решена с помощью regexp и substitute, т.е. :%s/[your odd character]//g

Чтобы скопировать и вставить свой "нечетный символ", вы должны перейти на визуальную с помощью v, чтобы выбрать символ, а затем y ESC.

Затем введите: :%s/<CTRL+r>"//g

<CTRL+r>" скопирует содержимое регистра копирования в командной строке.

Ответ 4

Затем просто используйте правило для их замены

:%s/search/replacement/

Это заменяет все вхождения search на replacement.

Ответ 5

Хорошо, для одноразового быстрого взлома просто используйте *, он ничего не найдет, но вы, чем нажмите /, <up> и отредактировать шаблон. Работает только если vim распознает персонажа как часть слова, к сожалению.

Ответ 6

:exec '%s/'.getline('.')[col('.')-1].'//g'

Если это специальный символ, вам нужно будет добавить обратную косую черту, но поскольку все специальные символы могут быть напечатаны, я полагаю, что это не так.

Изменить:, чтобы он работал с несколькими байтами char, заменил getline('.')[col('.')-1] на matchstr(getline('.'), '.', col('.')-1) (см. этот ответ).