Поиск и выделение Vim управление из сценария

Я пишу сценарий, в котором хочу программно управлять поиском и выделять его. Результаты функции search () не выделяются (я думаю), поэтому использование этой функции для меня бесполезно.

Я хочу использовать команду 'normal /' для поиска переменной, но это не так. кажется непростым. Я могу написать команду:

    execute 'normal /' . my_variable . '\'

(или другие варианты, предложенные в подсказке по vim здесь: http://vim.wikia.com/wiki/Using_normal_command_in_a_script_for_searching )

, но это не работает что-нибудь. Я вижу правильный поисковый запрос в командной строке после выполнения строки скрипта, но фокус находится в документе, регистр поиска не был изменен, и курсор не выполнял поиск. (Кажется, что не вводится, хотя ошибки не возникает - и да, я тоже пробовал использовать литерал ^ M.)

Я могу, по крайней мере, управлять регистром поиска, выполнив следующее:

execute 'let @/ ="' . a:term .'"'

, а затем кажется очевидным, что нужно сделать :

    normal n

Но это 'normal n' ничего не делает, если я запускаю его в скрипте. Настройка регистра поиска работает, если я вручную нажимаю 'n' после завершения сценария, происходит поиск (и появляется выделение, поскольку hlsearch включен). Меня даже не волнует, позиционируется ли курсор, я просто хочу, чтобы был выделен шаблон регистра. Но различные комбинации 'set hlsearch' в скрипте также не работают.

Я знаю, что могу использовать 'match ()', но я хочу, чтобы он работал с регулярным выделением текста при поиске, и мне интересно, что я поступает неправильно. Это должно быть что-то простое, но я этого не вижу. Спасибо за любую помощь.

6
задан Herbert Sitz 22 September 2010 в 01:51
поделиться