Vim - Используйте регистр поиска для команд поиска ('f', 't', 'F', 'T') - PullRequest
1 голос
/ 26 апреля 2019

В Vim есть команды поиска ('f', 't', 'F', 'T'), эти команды можно повторить, используя либо ';'или же ','.Я хочу иметь возможность повторять эти команды, используя 'n' и 'N'.По сути, как если бы я использовал поиск по слову ('/').

Например, когда я набираю' fa ', я хочу, чтобы vim действовал так, как будто я выполнил команду' /a'.

Какможно ли это сделать?

1 Ответ

3 голосов
/ 27 апреля 2019

Вы можете сделать это, добавив следующее в вашу конфигурацию vim:

function! MyFind(c)
       execute "let @/ = '" . a:c . "'"
       return 'n'
endfunc

function! MyBackfind(c)
       execute "let @/ = '" . a:c . "'"
       return 'N'
endfunc

nnoremap <expr> f MyFind(nr2char(getchar()))
nnoremap <expr> F MyBackfind(nr2char(getchar()))

Предупреждение:

  • Не работает для t / T, может бытьРеализовано, однако, я оставлю эту задачу вам
  • с F, она переходит к предыдущему вхождению буквы, но нажатие n все равно будет идти вперед, она будет выполнять поиск /, а не поиск ? (оба используют один и тот же регистр, и я не нашел способ создать поиск ?, я оставляю это как упражнение для вас :-))

Для получения дополнительной информации читайте :help <expr> в основном.

...