Если я делаю одно из следующих двух:
call search("searchString")
exec "/ searchString"
Из script, тогда vim выполняет поиск, но не выделяет результаты, хотя hlsearch. Выполнение одних и тех же запросов извне script выделяет результаты.
Если я делаю одно из следующих двух:
call search("searchString")
exec "/ searchString"
Из script, тогда vim выполняет поиск, но не выделяет результаты, хотя hlsearch. Выполнение одних и тех же запросов извне script выделяет результаты.
Только сам выяснил ответ:
call search(l:searchString)
call matchadd('Search', l:searchString)
Я знаю, что это поздно. Однако, когда я искал ответ на эту проблему, эта страница подошла. Поэтому я вынужден помочь исправить это.
вызов (l: searchString)
вызов matchadd ('Поиск', l: searchString)
Не работает для меня. (когда он запускается изнутри функции). Он высвечивает слова, которые я хотел найти, но n/N не будет циклически переключаться между ними. Также, когда я выполнил новый поиск, шаблон "l: serachStirng" все еще оставался выделенным. Этот ответ по этой ссылке работал намного лучше
Поиск и выделение Vim с помощью script
Который дал мне:
let @/= l: searchString
затем запустите
нормальный n
вне функции funciton (поэтому подсветка выполняется немедленно, без необходимости нажатия кнопки n)
Чтобы включить, нажмите ESC type :set hls
Чтобы отключить, нажмите ESC type :set nohls
feedkeys()
- это ключ (каламбур):
call feedkeys("/pattern\<CR>")
или очиститель:
" highlights – or doesn’t – according to 'hlsearch' option
function SearcH(pattern)
let @/ = a:pattern
call feedkeys("/\<CR>")
endfunction
Найден ответ здесь: http://vim.1045645.n5.nabble.com/highlighting-search-results-from-within-a-function-tt5709191.html#a5709193
`` `
Одним из решений будет
function! XXXX()
execute '/this'
return @/
endfunction
и использовать следующее вместо ": вызов XXXX()".
:let @/ = XXXX()
`` `
Вам нужно поместить это в ваш .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"