2012-02-06 9 views
15

In Vim, c'è un modo per spostare il testo selezionato in <current_file>.bak, aggiungendo o anteponendo? Se possibile, il file di backup non deve essere visualizzato.Aggiunge o antepone il testo selezionato a un file in Vim

Mi immagino il flusso di lavoro di essere:

  1. selezionare del testo
  2. Tipo :sbak
  3. La selezione viene salvata in <current_file>.bak

risposta

26

si può fare in tre fasi:

  • tipo shift-vj ... j per selezionare alcune linee
  • tipo :'<,'>w! >>file.bak a SAV e selezionate le linee di file.bak (accodamento)
  • tipo gvd eliminare linee originali

È possibile scrivere un comando definito dall'utente Sbak se ti piace:

com! -nargs=1 -range Sbak call MoveSelectedLinesToFile(<f-args>) 
fun! MoveSelectedLinesToFile(filename) 
    exec "'<,'>w! >>" . a:filename 
    norm gvd 
endfunc 
+0

buono, ora ulteriori passaggi: 1. per l'uso automatico .bak as il nome file bak 2. anteporre non aggiunto. thx. – greatghoul

+0

usa 'expand ('%: t')' per ottenere il nome del file corrente – kev

+0

thx, ho capito, lo mapperò a una scorciatoia – greatghoul

10

Che dire

  1. v
  2. qualche comando di movimento/anche la ricerca per selezionare il testo
  3. :'<,'> w! >> /YOUR/SELECTIONFILE
  4. :'<,'>d

E 'questo che vuoi? Se è così creato un map per esso, come

map <F2> :'<,'> w! >> /YOUR/SELECTIONFILE<cr>:'<,'>d<cr> 

Note questo aggiunge al SELECTIONFILE, e non solo la selezione, ma le intere linee. Inoltre, leggere :h :w e :h ++opt (in cui è possibile conoscere le possibili opzioni per la scrittura di file (ad esempio) è possibile aggiungere un file con diversa codifica, che scombina davvero le cose, in modo da non farlo ;-)