Impariamo VIM: Copia ed incolla negli appunti di sistema

Vediamo come copiare ed incollare nella clipboard di sistema com VIM.

Buongiorno a tutti, se usate VIM da molto tempo avrete notato che se fate un copia (Yank) non potete incollare il contenuto copiato in un altro programma. Questo è dato dal fatto che VIM usa dei propri appunti, diversi da quelli di sistema, per fortuna ci viene in aiuto il registro " * ".

Infatti usando il registro asterisco è possibile modificare la clipboard di sistema direttamente da VIM, vediamo come:

Dopo aver aperto un documento qualsiasi con VIM

vi file.txt

Selezioniamo il testo da copiare dalla modalità visuale, come faremmo di solito ed infine copiamo in premendo in successione i tasti virgolette, asterisco ed y:

[ " ][ * ][ y ]

Dopodichè potete incollare quello che avete copiato nel programma di cui avete bisogno.

Per incollare dalla clipboard di sistema verso VIM è sufficiente sostituire "y" con "p", la procedura è sempre la stessa:

[ " ][ * ][ p ]

Io per praticità e per preferenze personali ho voluto modificare le impostazioni di VIM ed usare il registro "+", se volete farlo anche voi è sufficiente aprire il vostro file .vimrc:

vi .vimrc

ed aggiungere la seguente riga:

set clipboard=unnamedplus

Dal prossimo avvio di VIM potrete usare i seguenti comandi per copiare ed incollare da e verso la clipboard di sistema:

[ " ][ + ][ x ]    -   Taglia

[ " ][ + ][ y ]    -   Copia

[ " ][ + ][ p ]    -   Incolla

Non cercate di rimappare il pulsante y direttamente, tramite il seguente comando:

:map y "+y

Altrimenti la prima volta che cercherete di copiare del testo nella clipboard VIM andrà in loop (se avete fatto un po' di programmazione lo capirete subito) richiamando continuamente la nuova mappatura di y (vedi ricorsione su Wikipedia). Nel caso l'aveste fatto, un "killall vim" chiuderà il programma bloccato, ma potreste non riuscire a recuperare i dati non salvati.

Ecco come tagliare, copiare ed incollare da e verso gli appunti di sistema.

Buon lavoro a tutti!

Saluti e alla prossima.

Penaz.

social