2012-09-08 20 views
7

Diciamo che c'è un blocco di testo che voglio cercare nel file. C'è un modo per fare una selezione a blocchi visivi di quel testo e quindi renderlo il termine di ricerca corrente? In questo modo sarei in grado di eseguire // // testo di testo/g senza digitare l'intera cosa sul lato sinistro del comando sostitutivo.Posso rendere un blocco visivo il termine di ricerca corrente?

risposta

3

Dovrai perdonarmi, non ricordo dove ho trovato questo, ma fa miracoli. Basta aggiungere al tuo .vimrc. Usa la tua tipico * e # dopo aver selezionato visivamente:

" Search for selected text, forwards or backwards. 
vnoremap <silent> * :<C-U> 
    \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR> 
    \gvy/<C-R><C-R>=substitute(
    \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR> 
    \gV:call setreg('"', old_reg, old_regtype)<CR> 
vnoremap <silent> # :<C-U> 
    \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR> 
    \gvy?<C-R><C-R>=substitute(
    \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR> 
    \gV:call setreg('"', old_reg, old_regtype)<CR> 

Il vero vantaggio è che questo sfugge eventuali caratteri speciali, contro appena si incolla in comando di ricerca. Sono anche meno le sequenze di tasti, che massimizzano la vitalità del tuo compito.

4

Creare un blocco visivo e trascinarlo nel registro senza nome "": con un blocco visivo selezionato, digitare y to yank. Inizia la ricerca con / - o :s/ e digita Ctrl-r quindi " per inserire il contenuto del registro senza nome come termine di ricerca.

Questo non renderà il blocco la ricerca corrente, ma è quasi altrettanto semplice.

Ctrl-r può essere utilizzato ovunque nella riga di comando, quindi è possibile utilizzarlo anche per es. per inserire il testo sostitutivo o sostitutivo o in modalità inserimento.

+0

Ottimo, affidabile, metodo go-to, in particolare se si è su un computer o un ambiente remoto che non è possibile caricare facilmente .vimrc personalizzato. – kenny

Problemi correlati