Если я сделаю одно из следующих двух:
call search("searchString")
exec "/ searchString"
Затем из скрипта vim выполняет поиск, но не выделяет результаты, хотя hlsearch. Выполнение тех же поисков вне скрипта выделяет результаты.
Если я сделаю одно из следующих двух:
call search("searchString")
exec "/ searchString"
Затем из скрипта vim выполняет поиск, но не выделяет результаты, хотя hlsearch. Выполнение тех же поисков вне скрипта выделяет результаты.
Только что нашел ответ сам:
call search(l:searchString)
call matchadd('Search', l:searchString)
То
feedkeys()
функция является ключом (каламбур):
call feedkeys("/pattern\<CR>")
или чище:
" highlights – or doesn’t – according to 'hlsearch' option
function SearcH(pattern)
let @/ = a:pattern
call feedkeys("/\<CR>")
endfunction
Я знаю, что это поздно. Однако, когда я искал ответ на эту проблему, появилась эта страница. Поэтому я чувствую себя обязанным помочь исправить это.
вызвать поиск(l:searchString)
вызов matchadd('Поиск', l:searchString)
Не работает для меня. (при запуске из функции) Он выделял слова, которые я хотел найти, но n/N не переключался между ними. Также, когда я выполнил новый поиск, шаблон l:serachStirng все еще оставался выделенным. Этот ответ по этой ссылке работал намного лучше
Управление поиском и подсветкой в Vim из скрипта
Что дало мне:
пусть @/ = l:строка поиска
затем беги
нормальный н
вне функции (поэтому выделение выполняется сразу, без необходимости пользователю нажимать n)
Чтобы включить, нажмите ESC введите :set hls
Чтобы выключить, нажмите ESC введите :set nohls
Ответ найден здесь: http://vim.1045645.n5.nabble.com/highlighting-search-results-from-within-a-function-tt5709191.html#a5709193
```
Одним из решений было бы
function! XXXX()
execute '/this'
return @/
endfunction
и использовать следующее вместо ":call XXXX()".
:let @/ = XXXX()
```
Я считаю, что это работает изнутри функции (чтобы просто включить подсветку и ничего больше):
call feedkeys(":\<C-u>set hlsearch \<enter>")
Вам нужно поместить это в свой файл .vimrc
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
Файл .vimrc обычно находится в вашем домашнем каталоге, или вы можете найти его с помощью «locate .vimrc»