2010-10-14 4 views
7

Sto modificando un array di testo di grandi dimensioni in vim e voglio calcolare su una sotto colonna di esso.Piping rettangolo regione di testo da vim a un programma esterno?

esempio semplice file modificato:

name value name saturation 
red 5  green 2 
blue 7  yellow 7 
other text 

voglio colonna tubo 4 attraverso un calc.pl programma esterno, calc.pl sostituisce i numeri con nuovi numeri in ingresso, ad esempio:

name value name saturation 
red 5  green 2.4 
blue 7  yellow 7.14 
other text 

Quando seleziono il rettangolo nella colonna 4, utilizzando v.motion e! Perl calc.pl , l'intera riga viene convogliata su calc.pl, non solo sul rettangolo.

Una soluzione è: tagliare il rettangolo nel file temporaneo, eseguire calc.pl sul file temporaneo, quindi leggere l'output come rettangolo.

C'è una soluzione diretta in vim, senza avere da tagliare/shell/incolla?

risposta

3

si potrebbe provare il plugin vis da Charles Campbell

Utilizzare Ctrl-V per selezionare una colonna, quindi applicare un filtro esterno a quella colonna. ctrl-v ..move.. :B !sort

Un altro plugin che potrebbe funzionare per voi è NrrwRgn da Christian Brabandt.

Uso: NarrowRegion per restringere la selezione basata linea oppure selezionare visivamente un range e premere nr

Nel buffer zero semplicemente conservare e le modifiche saranno copiati nel file originale. Questo è solo un aiuto molto semplice. Probabilmente dovresti leggere l'aiuto, che è fornito con il plugin. Vedi: h NarrowRegion

Problemi correlati