2009-10-13 16 views
10

Io uso vim (in realtà gvim su windows) come editor di testo principale. Nel mio flusso di lavoro devo copiare le frasi da/verso varie fonti esterne, quindi uso clipboard = senza nome per salvarmi i tratti dei tasti (p invece di "* p).
Copia il testo da una fonte esterna e voglio incollarlo oltre due diversi posti in vim. Contrassegno il primo (v) e quindi uso p per incollarlo su di esso. Il problema è che a questo punto perdo il buffer originale e non posso incollarlo in secondo luogo. Non esiste nel buffer senza nome, nel buffer * o nei buffer numerati. La mia ipotesi è che incollare la selezione stia mettendo il testo "incollato" nel buffer senza nome
Come posso incollare la mia stringa originale in due posizioni? per evitare che si perda dal bufferCopia e incolla da fonte esterna

Grazie

+0

shift + insert (in modalità di inserimento) – nilon

risposta

6

Prova questo:

:vmap p "_xP 
  • vmap mezzi per fare una mappatura che si applica solo in modalità visiva.
  • p è la chiave per creare il mapping per.
  • "_ è il registro del buco nero. Viene utilizzato in qualsiasi situazione in cui si desidera eliminare il testo senza influire su alcun registro.
  • xP significa eliminare il testo selezionato, quindi incollarlo prima della posizione del cursore risultante.
0

Non so come farlo su Windows. Con KDE, gli appunti hanno una cronologia da cui puoi selezionare, così puoi incollare, selezionare la selezione precedente dagli appunti e incollare nella nuova posizione.

Detto questo, sembra che abbia più senso per te averlo in una sola posizione, quindi scrivere uno script per prendere quell'input e creare l'output che ti serve. Puoi approfondire ciò che stai cercando di realizzare?

+0

Sto provando a copiare una riga da un'altra applicazione e incollarla in due posizioni in vim. Semplice come si arriva. – Mosh

+0

Questo è il meccanismo, sì. Ti sto chiedendo se dovresti fare un passo indietro e pensare al compito che stai cercando di raggiungere - esiste un approccio migliore che non implichi operazioni ripetitive di taglia-incolla? – retracile

+0

Sono perso. C'è un testo che devo incollare in due posti diversi, qualche idea? – Mosh

1

È possibile impostare una mappatura per alleviare il dolore:

:vmap <F5> "zxP 

Questo eliminerà il testo selezionato visivamente, ma metterlo in un registro diverso, quindi la clipboard non è interessato. Cambia <F5> in qualunque cosa sia più facile per te.

0

Controllare il valore delle opzioni 'guioptions'. Assicurati che il flag 'a' non sia impostato. Inoltre, controlla l'opzione 'appunti' e verifica che non siano impostati i flag 'senza nome' o 'selezione automatica'.

:set go-=a 
:set clipboard-=unnamed 
+0

Grazie per la risposta, ma non riesco a implementarlo correttamente. Di nuovo, la mia sequenza di lavoro è copia su programma esterno, contrassegna il testo da sostituire su Vim incolla su di esso. Segna un altro frammento di testo in Vim e quindi non riesco a incollare il testo copiato. Ho provato a incollare con "+ p, ma ho ottenuto gli stessi risultati. Ho sbagliato la risposta? (Io uso appunti = senza nome) – Mosh

+0

Così ho installato Vim sul mio portatile e ho controllato la mia prima risposta, non funziona. Ho modificato la mia risposta con un nuovo suggerimento, suppongo che sia la presenza della bandiera "senza nome" che ti causa problemi –

1

Non so se ho capito male, ma ho provato quello che si sta facendo e non ho alcun problema a farlo con il drop-registrare il +.

mio flusso di lavoro:

  1. copia una frase in un programma esterno (es browser.)
  2. visiva selezionare una frase in vim e lo sostituì con "+ p o p (con appunti = set senza nome)
  3. selezionare visivamente un'altra frase e sostituirla con "+ p

Tristemente quando si incolla la seconda volta è necessario incollare esplicitamente dal registro +. Quindi mi sento di raccomandare una mappatura per p/P invece di utilizzare appunti = senza nome

nmap p "+p 

Provare a utilizzare

:registers 

per vedere il contenuto dei diversi registri.

+0

Grazie per la risposta. Sto lavorando su una macchina Windows, quindi quando controllo i registri, Non ho il registro + Inoltre, nessun registro contiene il testo che ho copiato dall'applicazione esterna (nemmeno il registro *, che viene sovrascritto con il testo che ho copiato sopra). – Mosh

Problemi correlati