No vim, costumo realizar pesquisas para acessar uma palavra ou frase em vez de navegar até lá com h/j/k/l
. Então eu bati n
para pular entre as ocorrências.
Digamos que eu tenha este texto:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Eu digito /an arrow
e clico em Enter. Essa frase está destacada e eu pulo para ela com n
.
Agora eu queroselecione visualmente esse texto, talvez para alterá-lo ou excluí-lo. (Sim, estou ciente do :s
comando de substituição.)
Como meu cursor está na letra “a” no início de “uma seta”, posso clicar v
e pressionar e
algumas vezes para destacar a frase inteira. Mas tenho a sensação de que existe uma maneira mais curta e semântica. Afinal, já especifiquei o texto que me interessa.
Como posso compor um comando para dizer"selecionar visualmente a seleção de pesquisa atual?"
Responder1
Você pode usar gn
na versão 7.4 em diante (e gN
voltar). Ele substitui o v//e
truque.
Procure o último padrão de pesquisa usado, como com `n`, e inicie o modo Visual para selecionar a correspondência.
Veja :help gn
oueste VimcastPara maiores informações.
Responder2
Experimente isto:
/an arrow
v//e
Entra em modo visual, repete a última busca e seleciona até o final.
Responder3
Descobri que isso v//e
por si só é insuficiente porque depois de sair do modo visual, pular para o resultado da pesquisa seguinte/anterior coloca o cursor no final do resultado, em vez de no início, como seria de esperar normalmente.
Para corrigir isso, devemos primeiro pular para o final do resultado da pesquisa ( //e
) e depois selecionar visualmente até o início ( v??
):
" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>
Saúde.
Responder4
Uma maneira "mais burra" de fazer isso é mapear uma tecla (neste caso F5) como abaixo:
nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>
Depois de /an arrow
acertar F5.