Vim: Como você destaca um padrão de pesquisa do script?

0

Eu não teria pensado que isso seria difícil de fazer, mas não está funcionando. O que estou tentando fazer é ativar o destaque da pesquisa no script. Eu tentei o seguinte:

function! g:TestFunc()
    let @/ ="testtext"
    set hlsearch
endfunction

nnoremap <space> :call g:TestFunc()<cr>

O que não funciona. Ou seja, acertar o espaço na frente de algum texto com "testtext" não destaca o texto. O usuário ainda tem que acertar 'n'.

Eu também tentei adicionar exec 'normal! n' ao final da função, mas isso também não funcionou. Mesmo feedkeys('n') falha.

    
por Steve Vermeulen 05.04.2013 / 03:28

3 respostas

4

A função funciona como esperado se hlsearch não estiver definido antes de chamá-lo. Parece que defini-lo na função não tem efeito se já estiver definido. Você pode resolver isso configurando nohlsearch no seu mapeamento:

nnoremap <space> :set nohlsearch\|:call g:TestFunc()<cr>

Se o seu objetivo é simplesmente destacar determinados padrões, e você não precisa especificamente usar o mecanismo hlsearch , você pode querer usar o comando match . Realiza praticamente a mesma coisa com mais clareza.

    
por 05.04.2013 / 04:10
1

Não é possível definir o último padrão de pesquisa usado e destacar a partir de uma função, consulte :help function-search-undo . Em vez disso, mova o :set hlsearch diretamente para o seu mapeamento.

    
por 05.04.2013 / 09:31
0
function! wordsubstitute#run()
    execute "normal! gv\"ay"
    let @/ = @a
    "set nohlsearch
    let s:search_cmd = "normal! /".@/."/\<CR>"
    execute s:search_cmd."N"
    "set hlsearch
endfunction

Em vez de usar normal! nN , escreva nN no comando mapping:

vnoremap [g/ :<c-u>call wordsubstitute#run()<CR>nN
    
por 11.05.2015 / 18:33

Tags