Vim Cheat Sheet

Sommario

  1. Introduzione
  2. Le basi
  3. Gestione dei file
  4. Editing
  5. Varie
  6. Configurazione
  7. Extra

Differenze

Una funzione irrinunciabile, controllare le differenze tra due o più file.

apre una finestra orizzontale diff - :diffsplit
apre una finestra verticale diff - :vert diffsplit
aggiorna diff dopo cambiamenti - :diffupdate

espande blocco sotto il cursore - zo
collassa blocco sotto il cursore - zc
espande tutti i blocchi - zr
collassa tutti i blocchi - zm
espande tutti i blocchi e gli eventuali nidificati - zR
collassa tutti i blocchi e gli eventuali nidificati - zM

:help :fold

vimdiff è un modo per richiamare vim con l'opzione -d:

$ vimdiff nome_file1 nome_file2

Un paio di hack per controllare le differenze tra directory:

$ vimdiff <(ls -R $DIR1) <(ls -R $DIR2)
$ vim -c 'e nome_directory1' -c diffthis -c 'vert split nome_directory2' -c diffthis

Apre due tab con il diff di due file in ognuno:

$ vim -c 'e nome_file1' -c diffthis -c 'vert split nome_file2' -c diffthis -c 'tabnew' \ 
-c 'e nome_file3' -c diffthis -c 'vert split nome_file3' -c diffthis


Creare HTML

Converte in HTML il buffer corrente, mostrandolo in una finestra orizzontale, il nuovo file avrà lo stesso nome con l'aggiunta dell'estensione .html, ereditando i colori dello schema in uso:
:TOhtml

crea un HTML da linea di comando:

$ ex -X -n -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1

testo scuro su sfondo chiaro:

$ ex -X -n -c 'set background=light' -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1

testo chiaro su sfondo scuro:

$ ex -X -n -c 'set background=dark' -c 'TOhtml' -c 'xa' nome_file > /dev/null 2>&1


Cifratura testo

$ vim -x nome_file

cifratura senza file swap (più sicuro):

$ vim -x -n nome_file

Per aprirlo le volte successive non serve l'opzione -x, Vim aggiunge una stringa per il riconoscimento. Per disattivare la cifratura dal file aperto digitare:
:set key=

ovvero omettendo un valore, per riattivarla si usa invece:
:X

La chiave viene sostituita da asterischi altrimenti sarebbe in chiaro (ma non viene memorizzata nella history).

ROT13 encoding/decoding - g?


Vim remote

Vim può funzionare come un server che accetta istruzioni da linea di comando. Aprire un terminale e digitare:

$ vim --servername debianizzati

Il nome dato è assolutamente arbitrario.
Ora si può aprire un altro terminale che fungerà da client e fare qualche prova.
Passiamo in modalità inserimento e scriviamo qualcosa:

$ vim --servername debianizzati --remote-send 'i La guida su Vim di Debianizzati.org<CR>'

Torniamo in modalità comando e apriamo un'altra finestra:

$ vim --servername debianizzati --remote-send '<Esc><C-w>s<CR>'

Salviamo il file e chiudiamo Vim:

$ vim --servername debianizzati --remote-send '<Esc>:w /tmp/debianizzati<CR>:xa<CR>'

Non sarà comodissimo ma si può fare anche questo :)
Per gli altri comandi leggere l'help.
:help --remote