2012-06-11 16 views
10

Vorrei utilizzare qualcosa come vils per i buffer di Vim.Vim - modifica facilmente il risultato del filtro

Esempio:

a 
b 
a 
b 

Ricerca di "a" (:g/a/)

uscita:

a 
a 

e quindi modificare l'output come se fosse un buffer normale. Quando ho finito dovrebbe mappare le mie modifiche riga per riga sul buffer originale.

Come posso fare?

PS: Probabilmente potrei usare :%s/../../ o qualcosa del genere, ma non sarebbe comodo come potrebbe essere. (Anche se il completamento della CTRL +F tampone funzionerebbe.)

+2

Mi piacerebbe usare questo per nascondere i commenti nei file di configurazione. –

+0

la tua migliore opzione è tenere nascoste le linee su cui non c'è una stringa di ricerca –

risposta

-1

g/../ può essere combinata con comandi come

:g/^a/ s/a/a.txt/ 

cambiare ad esempio ogni 'un' a 'a.txt '. Vedi ': h: g'

+1

Non penso che sia quello che vuole. Penso che voglia nascondere alcune linee, modificare le altre righe e quando salva salva l'intero file, cioè con le linee che sono nascoste. – ThiefMaster

1

Fintanto che le linee corrispondenti si estendono su un singolo intervallo di linee consecutive, NrrwRgn plugin potrebbe funzionare per te.

0

Io di solito copiare le righe alla fine del documento

:g/a/t$ 

Se si desidera, è possibile impostare un marchio presso l' 'ex' end-of-documento:

:$mark a 

Così , ora si può effettivamente modificare la parte 'a,$ del documento, come si farebbe normalmente, tra cui salvarlo da qualche altra parte:

:'a,$d | new | put! 

Le seguenti opere così: si può tirare, aggiungendo ad un registro a:

:g/a/yank A 

Naturalmente, si potrebbe voler cancellare registrare una prima di iniziare:

:let @a="" 
2

La funzione si sta parlando suona come occure/narrow-to-region in emacs.

In vim, è possibile digitare il seguente comando:

:vimgrep pattern % 

quindi digitare :cw per aprire l'quickfix-list.

È possibile utilizzare il clic del mouse o :cn/:cp per navigare per apportare modifiche.

+0

Hmm, questo non funziona per me ... L'elenco si apre, ma quando provo a modificarlo ottengo 'E21: Impossibile apportare modifiche, 'Modifiable' è disattivato', e quindi se faccio': set modificabile' per sovrascriverlo, le modifiche non si riflettono nel file originale. – weronika

Problemi correlati