2012-02-19 9 views
11

Impossibile capire come selezionare automaticamente una corrispondenza regolare in modalità visiva.Vim - Comandi per selezionare visivamente una corrispondenza regolare?

Per esempio, manualmente, potrei cercare una parola

/word 

Atterra il cursore sul primo carattere della "parola" partita.
Quindi premo v per accedere alla modalità Visual e premere llll per selezionare l'intera "parola".

Ora voglio farlo con una macro e non conosco la durata della partita prima del tempo.

Mi aspettavo che Vim definisse automaticamente alcuni segni incorporati all'inizio e alla fine della partita corrente, in modo che potessi "loro". Ma non sono riuscito a trovare alcuna informazione al riguardo.

Quello che voglio è riassegnare Ctrl+n a una macro per portarmi alla corrispondenza successiva e selezionarla in modalità visiva, cioè non solo evidenziare la corrispondenza. (Per parallelo come n vi porta alla prossima partita.)

Se vi state chiedendo il perché, è perché voglio creare pieghe sulla base di partite regex (come Ctrl+n, zf), ma sono sicuro che verrà utile anche in altri casi.

risposta

6
:noremap <C-n> //s<CR>v//e+1<CR> 

Modifica riassunto: era // e, ma // e + 1 ha funzionato per me (selezionato anche l'ultimo carattere della partita).

+0

Questo è esattamente quello di cui avevo bisogno (eccetto prove ed errori hanno mostrato che '// e + 1' mi ha portato al confine dopo l'ultimo carattere della partita, modificato). Neat! Dopo aver fallito nel trovarlo, mi aspettavo che sarebbe stato difficile fare ciò che volevo. –

+1

Giusto, vedo. Quando l'opzione ''selection'' è impostata su' inclusive', quindi '// e' funziona come sopra. Quando è impostato su 'exclusive', quindi' // e + 1' funziona. Io uso ': behave mswin' che imposta' 'selection'' su 'exclusive'. –

7

// e porta al carattere finale dell'ultima ricerca. Ulteriori informazioni -: help {offset}.

È possibile trovare come ripristinare il vecchio buffer di ricerca here.

+0

Questo ha funzionato meravigliosamente, per me, grazie. La cosa noremap non ha funzionato (o forse non era nel modo in cui avevo bisogno?) –

4

A beneficio di persone che incappare in questo problema in futuro, vim ora ha questa funzione built-in: gn (e il suo vicino fratello gN) salterà al prossimo (rispettivamente precedente) partita e visivamente selezionarlo . Può anche essere usato come movimento; per esempio. cgn salterà alla prossima partita e la cambierà.

Problemi correlati