Я думаю, вы боретесь с :help function-search-undo
:
Последний использованный шаблон поиска и команда повторения "."не будет изменена функцией.
Это делает вашу команду поиска неэффективной в функции FindAll()
.
Дополнительная критика
input()
всегда будет возвращать одну строку;нет необходимости в обработке аргументов переменных (...)
. - Ваш цикл
for
можно заменить на join()
. - Вместо
:normal! /
вы можете просто присвоить @/
, последний регистр шаблона поиска (:help quote/
). - Ваше отображение не использует оператор визуального выбора или ожидания, поэтому лучше просто определить его для нормальный режим .
Исправления
Чтобы иметь возможность изменять шаблон поиска, либо сделайте так, чтобы функция возвращала его, либо (на основе предложенных выше упрощений) выполняйте всю обработку в строке.Теперь это просто комбинация split
- join
:
nnoremap <silent> ,fa :let @/ =
\ join(split(input("Please Give Separate Strings :"), ' '), '\<Bar>')<CR>
На самом деле, мы можем просто поменять каждый пробел с элементом ветви регулярного выражения \|
:
nnoremap <silent> ,fa :let @/ =
\ substitute(input("Please Give Separate Strings :"), ' ', '\\<Bar>', 'g')<CR>