Mini-tutorial di VI (linux)

Riccardo al lavoroVI è l'editor definitivo dei sistemi UNIX. A cosa serve? A editare file in giro per il mondo quando non avete un Desktop Remoto da fare e rimane solo ssh (x accedere) e vi (x modificare file). VIM (VI improved) è un VI + fico che permette di far più cose.

Se lo sapete usare, non avrete più bisogno di un notepad, non avrete + bisogno di un sistema operativo grafico (per i giochi potete provare '10rogue' o 'sopwith').

Ma... come si entra ed esce usa vi? Proverò a fare alcuni cenni:

  • vi <nomefile> (ci entri) (magari prima fate 'ls -al >t' poi 'vi t' per editare un file del cavolo non vuoto)
  • ESC :wq (esci e salvi, se avete vim funziona anche :x)
  • ESC :q! (esci senza salvare)

Non chiedetemi perchè, è maniacale, lo so, ma è così.  Muoversi:

  • Cursori: ci si muove (per chi sa giocare a 10rogue, i cursori originari non sono le frecce ma h,j,k,,l! Ciò per motivi storici. Per la vostra felicità, oggi vanno anche le frecce)
  • w,W: ci si muove avanti di una parolina/parolona (capite solo se lo fate, non fatemi sprecare parole, provatelo a casa e notate la differenza)
  • b,B: ci si muove indietro di 1 parolina/ona
  • /palladius: si cerca la parola 'palladius'. Se non basta, con 'n' trovate la prossima occorrenza.
  • :69 : ci si sposta a riga 69 ($ sta per 'ultima riga' in questo caso).
  • ^,$: ci si sposta rispettivamente a inizio (caret) e fine (dollaro) riga.

Scrivere: porca vacca come siete sofisticati, volete un editor e non vi basta muovervi ma volete ANCHE scrivere?!? Vabbè:

  • a,e,i,o: entrate in modalità SCRITTURA. Da questo momento vi non è + vi, è un editor. Scrivete, sfogatevi, ma sbrigatevi perchè qui la 'w' è una vudoppia e non un comando vi, e così via per tutti. Appena vi siete rotti i coglioni di scrivere, premete ESC e ricominciate a gironzolare. A voi capire le sottili differenze tra a,e,i,o.
  • <ESC>: uscite dalla modalità scrittura.

 Copia e incolla (lo sapevo che eravate degli sporchi microzozziani):

  • dd: taglia e copia QUESTA riga.
  • P:incolla cio' che ha tagliato
  • d42d: taglia 42 righe, se poi fate un paio di P avete fatto un ciopia e incolla da urlo!!!
  • v: seusate 'vim' che è un vi + sborone, la 'v' vi apre il mondo della selezione visuale, provate a fare v e gironzolare coi cursori. Se vedete qualcosa di belòlo succedere, selezionate cio' che volete e alla fine YACC! Premete 'y' e avete 'yaccato' il testo. A quel punto la vostra amica P pasterà quel che volete.
  • d2w: cancella le 2 paroline da qui in avanti.
  • 5x: altro utilissimo comando, cancella 5 caratteri da qui in avanti.

Correzioni:

  • r<NEWCHAR>: se avete sbagliato un carattere, digitate 'r' e poi il carattere giusto e lo cambierete!
  • c2w: cambia le 2 prossime parole (da Change Word)
  • u: il mitico UNDO (per rifare, si fa :redo)

Trova e cambia (soccia ma siete proprio perfezionisti!!!):

  • :s/Riccadro/Riccardo/g : cambia tutte le occorrenze in questa riga di 'Riccadro' con 'Riccardo'.
  • :1,$ s/Riccadro/Riccardo/g : cambia tutte le occorrenze di 'Riccadro' con 'Riccardo' in tutte le righe dalla 1 all'ultima ($ vuol dire ultima): ovvio che funziona anche con :10,20 !

Alcune magie:

  • Aggiungere l'output di un comando shell (chessò, l'esito di 'date', di 'df -h', 'ls', e così via). Salvate il file (<ESC>:w) per sicurezza, poi uscite con CTRL-Z  (interrompete per un attimo vi), poi digitate il vostro comando con '>temp'  ad esempio 'date > temp' (scrivete output su file 'temp'), infine rientrate in VI digitando 'fg' (grazie Fero!) e poi copiate nella riga in cui siete il contenuto del file con ':r temp' (:r legge un file, temp è il nome del file temporaneo che abbiam scritto prima).

Ci sono un sacco di altre cose da dire, ve le direi, ma non le so. Se trovate questo tutorial utile, VI PREGO, mandatemi un'email. Migliorare il mondo (quindi andare sulla Luna, combattere il cancro, trovare la fabbrica di Willy Wonka) passa sicuramente attraverso un uso cosciente di vi.

Alòcuni riferimenti web (consigliatimi dal CPenti):

Built with Hugo
Theme Stack designed by Jimmy