2012-09-05 9 views
8

Cerco di salvare un testo selezionato (parte di una riga) da Vim. Ecco la linea:Salva testo selezionato (riga parziale) da Vim

QUESTO TEST STRING - SELECTED_TARGET_WORLD

dove il grassetto rappresenta il testo di selezione. Faccio questo:

:'<,'> w! test/selected_text 

ma nel file selected_text trovo la stringa:

THIS TEST STRING - SELECTED_TARGET_WORLD 

Come faccio a farlo salvare solo la parte selezionata della linea?

+0

possibile duplicato del [In vim , come scrivere una riga parziale in un file?] (http://stackoverflow.com/questions/1953056/in-vim-how-to-write-a-partial-line-to-a-file) – Gilles

risposta

4

:[range]w filename funziona solo con le linee quindi ... è necessario inserire il testo selezionato sulla propria riga.

Un'alternativa utilizzando :help :redir:

:'<,'>"ay 
:redir filename 
:echo @a 
:redir END 
4

Questo caso non è documentato nella guida (:h :w), ma :w gestisce solo la linea varia (che avrebbe visto che su un esempio di più linee).

Per fare ciò che si desidera, è necessario prima incollare la selezione in un buffer temporaneo (o sulla propria riga e quindi rimetterlo in posizione) e quindi salvare il buffer. Questo può essere facilmente automatizzato se è qualcosa che farai spesso.

+6

È documentato, ma è mescolato con la ricca storia di vi: tutti i comandi Ex funzionano solo su intervalli di righe complete; la selezione visiva è un'estensione Vim, e quindi in qualche modo in contrasto con il modello sottostante. –

2

lo faccio come questo, FYR ~

Una volta selezionata parziale dei tuoi contenuti "Visual mode", premere Ctrl-C per attivare lo

vmap <C-c> y:new ~/.vimbuf<CR>VGp:x<CR>