Vim - seleciona o texto destacado pela pesquisa?

49

No vim, muitas vezes realizo pesquisas para pular para uma palavra ou frase em vez de navegar com h/j/k/l . Então eu acertei n para pular entre 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 é destacada e eu pulo para ela com n .

Agora, quero selecionar visualmente esse texto , talvez para alterá-lo ou excluí-lo. (Sim, estou ciente do comando :s de substituição.)

Como meu cursor está na letra "a" no início de "uma seta", posso acessar v e, em seguida, pressionar e algumas vezes para destacar a frase inteira. Mas tenho a sensação de que há um caminho mais curto e mais semântico. Afinal, eu já especifiquei o texto que me interessa.

Como posso escrever um comando para dizer "selecionar visualmente a seleção de pesquisa atual?"

    
por Nathan Long 22.12.2010 / 15:17

5 respostas

32

Você pode usar gn na versão 7.4 em diante (e gN para voltar). Ele substitui o truque v//e .

Search forward for the last used search pattern, like with 'n', and start Visual mode to select the match.

Veja :help gn ou este Vimcast para mais informações.

    
por 22.01.2015 / 00:50
29

Tente isto:

/an arrow
v//e

Ele entra no modo visual, repete a última pesquisa e seleciona até o final.

    
por 22.12.2010 / 17:16
8

Descobri que v//e por si só é insuficiente porque depois que você sai do modo visual, saltar para o próximo / anterior resultado de pesquisa coloca o cursor no final do resultado, em vez de no início como você normalmente esperaria. / p>

Para corrigir isso, primeiro devemos pular para o final do resultado da pesquisa ( //e ) e, em seguida, selecionar visualmente para o início ( v?? ):

" visually select a search result
nnoremap g/ //e<Enter>v??<Enter>

Felicidades.

    
por 31.03.2011 / 07:50
2

Existe agora um plug-in Vim-Search-Objects que faz com que o Vim trate as correspondências de pesquisa como objetos de texto comuns, para que você possa simplesmente va/ (visual-selecione uma correspondência) depois de realizar uma pesquisa.

    
por 22.12.2011 / 06:11
1

Uma maneira "idiota" de fazer isso é mapear uma chave (neste caso, F5) como abaixo:

nnoremap <F5> v/<c-r>=strpart(@/,1) . '/e+1'<CR><CR>

Depois que /an arrow atingiu F5.

    
por 22.12.2010 / 18:04