A função que você está procurando é search()
. Esta função pesquisará começando na posição do cursor e, quando uma correspondência for encontrada, seu número de linha será retornado. Se nenhuma correspondência for encontrada, 0 será retornado. A 'ignorecase'
, 'smartcase'
e 'magic'
as opções são usados no padrão de pesquisa. Observe que, se quiser escolher onde a pesquisa começa, você pode usar cursor()
a setpos()
função ou para definir a posição do cursor e a getcurpos()
função para salvar a localização do cursor.
Aqui está um exemplo disso em ação:
function! SearchInRange(pattern, start_line, end_line)
" Save cursor position.
let save_cursor = getcurpos()
" Set cursor position to beginning of file.
call cursor(a:start_line, 0)
" Search for the string 'hello' with a flag c. The c flag means that a
" match at the cursor position will be accepted.
let search_result = search(pattern, "c", a:end_line)
" Set the cursor back at the saved position. The setpos function was
" used here because the return value of getcurpos can be used directly
" with it, unlike the cursor function.
call setpos('.', save_cursor)
" If the search function didn't find the pattern, it will have
" returned 0, thus it wasn't found. Any other number means that an instance
" has been found.
return search_result ? 1 : 0
endfunction
Para mais informações sobre as coisas mencionadas nesta resposta, consulte os seguintes tópicos de ajuda:
:help search()
:help 'ignorecase'
:help 'smartcase'
:help 'magic'
:help cursor()
:help setpos()
:help getcurpos()
search()
- Veja:h search()