VimCS: Editing

Da Guide@Debianizzati.Org.

(Differenze fra le revisioni)
m
Riga 14: Riga 14:
intero file maiuscolo - '''gggUG'''
intero file maiuscolo - '''gggUG'''
-
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo''' <br/>
+
sostituzione prima corrispondenza sulla riga - ''':s/vecchio/nuovo/''' <br/>
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/>
sostituzione su tutta la riga - ''':s/vecchio/nuovo/g <br/>
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/>
sostituzione con richiesta di conferma - ''':s/vecchio/nuovo/gc''' <br/>
Riga 21: Riga 21:
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''
sostituzione in tutti i buffer - ''':bufdo %s/vecchio/nuovo/ge | update'''
-
elimina le terminazioni di riga in stile dos, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/>
+
elimina le terminazioni di riga in stile DOS, ovvero quei simpatici <code>^M</code> - ''':%s/\r/''' <br/>
-
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>ctrl-v</code> e <code>ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/>
+
se non fossero solo a fine riga, digitare <code>:%s/</code> seguito da <code>Ctrl-v</code> e <code>Ctrl-m</code>, quindi aggiungere <code>//g</code> e fare la sostituzione: <br/>
-
: ''':%s/^M//g'''
+
'''<nowiki>:</nowiki>%s/^M//g'''
-
dato un file con tante righe nella forma di ''foo bar baz http://bla'',
+
dato un file con tante righe nella forma di ''foo bar baz <nowiki>http://bla</nowiki>'',
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:
elimina i caratteri prima di 'http' per ogni riga e nell'intero documento:
-
: ''':%s/^.\{-}\zehttp//g'''
+
'''<nowiki>:</nowiki>%s/^.\{-}\zehttp//g'''
data una riga nella forma '11. foo' sostituisce il punto con un tab
data una riga nella forma '11. foo' sostituisce il punto con un tab
-
: ''':s/\(^[0-9]\+\)\. /\1\t/'''
+
'''<nowiki>:</nowiki>s/\(^[0-9]\+\)\. /\1\t/'''
 +
 
 +
 
 +
cancella tutto ciò che c'è dopo le virgolette
 +
'''<nowiki>:</nowiki>%s/".*//'''
cancella spazi non voluti a fine riga (trailing whitespace);  
cancella spazi non voluti a fine riga (trailing whitespace);  
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:
\s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze:
-
: ''':%s/\s\+$//'''
+
'''<nowiki>:</nowiki>%s/\s\+$//'''
cerca soltanto:
cerca soltanto:
-
: '''/\s\+$'''
+
'''/\s\+$'''
 +
 
 +
 
 +
seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata
 +
'''Ctrl-v I # <esc>'''
 +
 
 +
'''<nowiki>:</nowiki>help v_b_I'''
 +
 
 +
 
 +
manda a capo in corrispondenza di ogni tag <br>
 +
'''<nowiki>:</nowiki>g,<br>,s,<br>,<br>\r,g'''
 +
 
 +
 
 +
in una riga con molteplici 'foo' sostituisce solo il secondo
 +
'''<nowiki>:</nowiki>s/\(.*\)foo/\1bar/'''
ordina testo alfabeticamente - ''':sort'''
ordina testo alfabeticamente - ''':sort'''
 +
 +
elimina righe uguali - ''':sort u'''
 +
 +
 +
mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto
 +
'''<nowiki>:</nowiki>3p|45p|180p'''
Riga 52: Riga 76:
inizia selezione - '''v''' <br/>
inizia selezione - '''v''' <br/>
seleziona intera riga - '''V''' <br/>
seleziona intera riga - '''V''' <br/>
-
seleziona blocco (salta righe vuote) - '''ctrl-v''' <br/>
+
seleziona blocco (per colonne) - '''Ctrl-v''' <br/>
seleziona tutto - '''ggVG''' <br/>
seleziona tutto - '''ggVG''' <br/>
Riga 58: Riga 82:
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se
In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre
selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre
-
sopra, basterà premere 'o' e il cursore si sposterà alla prima riga della selezione corrente quindi
+
sopra, basterà premere '''o''' e il cursore si sposterà alla prima riga della selezione corrente quindi
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/>
muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono: <br/>
'''Vjok'''
'''Vjok'''
Riga 77: Riga 101:
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/>
Possiamo quindi inserire nel documento qualsiasi output della shell: <br/>
-
<nowiki>:</nowiki>r !ls
+
'''<nowiki>:</nowiki>r !ls'''
In caso servisse una shell con piena funzionalità: <br/>
In caso servisse una shell con piena funzionalità: <br/>
-
<nowiki>:</nowiki>shell
+
'''<nowiki>:</nowiki>shell'''
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)
Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)
Riga 93: Riga 117:
inserisce un'indentazione sulla terza riga - ''':3>''' <br/>
inserisce un'indentazione sulla terza riga - ''':3>''' <br/>
-
scorciatoie: <br/>
+
inserisce - '''>>'''
-
'''>>''' (inserisce) <br/>
+
toglie - '''<<'''
-
'''<<''' (toglie) <br/>
+
inserisce su tre righe - '''3>>'''
-
'''=''' (toglie)
+
toglie su tre righe - '''3<<'''
 +
inserisce sulla terza riga partendo da dove è posizionato il cursore - '''2j>>'''
 +
 
 +
rimuove indentazione all'intero file - '''gg=G'''
Riga 106: Riga 133:
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/>
incolla testo tagliato sotto la riga dove è il cursore - '''p''' <br/>
 +
incolla testo tagliato sopra la riga dove è il cursore - '''P'''
mette la riga sottostante in coda alla corrente - '''J'''
mette la riga sottostante in coda alla corrente - '''J'''
Riga 141: Riga 169:
inserisce commento (#) ad inizio riga - ''':s/^/#/'''
inserisce commento (#) ad inizio riga - ''':s/^/#/'''
 +
== Annulla, ripeti, cronologia e ricerca ==
== Annulla, ripeti, cronologia e ricerca ==
Riga 147: Riga 176:
undo di una riga - '''U'''
undo di una riga - '''U'''
-
redo - '''ctrl-r'''
+
redo - '''Ctrl-r'''
Riga 162: Riga 191:
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/>
mostra la history di ricerca history con comandi selezionabili - '''q?''' (precedente) <br/>
-
mostra la lista dei comandi interni che iniziano per a - ''':a ctrl-d'''
+
mostra la lista dei comandi interni che iniziano per a - ''':a Ctrl-d'''
La ricerca funziona come per tante altre applicazioni: <br/>
La ricerca funziona come per tante altre applicazioni: <br/>
Riga 177: Riga 206:
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate
In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate
precedentemente. <br/>
precedentemente. <br/>
-
'''ctrl-x''' <br/>
+
'''Ctrl-x''' <br/>
-
scorrimento tra i risultati - '''ctrl-n''' / '''ctrl-p''' <br/>
+
scorrimento tra i risultati - '''Ctrl-n''' / '''Ctrl-p''' <br/>
-
annulla - '''ctrl-e''' <br/>
+
annulla - '''Ctrl-e''' <br/>
-
accetta parola selezionata - '''ctrl-y''' (oppure Enter)
+
accetta parola selezionata - '''Ctrl-y''' (oppure Enter)
Riga 188: Riga 217:
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1
* PRIMARY: il testo selezionato e incollato tramite il mouse, ovvero seleziona con il tasto 1
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).
(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).
-
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie ctrl-c/ctrl-x/ctrl-v. <br/>
+
* CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie Ctrl-c/Ctrl-x/Ctrl-v. <br/>
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]
[http://www.freedesktop.org/wiki/Specifications/ClipboardsWiki Specifiche Freedesktop]
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.
Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.
-
: PRIMARY: <br/>
+
:PRIMARY: <br/>
copia - '''"*y''' <br/>
copia - '''"*y''' <br/>
taglia - '''"*x''' <br/>
taglia - '''"*x''' <br/>
Riga 201: Riga 230:
taglia - '''"+x''' <br/>
taglia - '''"+x''' <br/>
incolla - '''"+p'''
incolla - '''"+p'''
 +
 +
Allo stesso modo, per copiare una riga senza prima selezionarla si useranno '''"*yy''' e '''"+yy'''
 +
 +
Il '''"''' (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo.
 +
'''*''' (asterisco) e '''+''' (più) fanno parte dei registri di selezione e rilascio del testo da e verso la
 +
clipboard di Xorg.
 +
Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard.
 +
Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.
 +
 +
cancella riga - '''"_dd'''
 +
cancella tre righe - '''"_3dd'''
 +
 +
Per approfondire e sapere di più sugli altri sette registri consultare la documentazione:
 +
'''<nowiki>:</nowiki>help "'''
 +
'''<nowiki>:</nowiki>help :registers'''
 +
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/>
Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con: <br/>
Riga 210: Riga 255:
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/>
per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra: <br/>
-
* vim-gnome
 
* vim-gtk
* vim-gtk
 +
* vim-gnome
* vim-athena
* vim-athena

Versione delle 08:31, 7 ago 2012

Vim Cheat Sheet

Sommario

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

Indice

Sostituzione

entra in modalità sostituzione - R
sostituisce singolo carattere e torna in modalità comando - r (seguito dal carattere)

maiuscole in minuscole e viceversa - ~
tutta la riga minuscola - guu (oppure vu)
solo una parola minuscola - vEu
tutta la riga maiuscola - gUU (oppure VU)
solo una parola maiuscola - vEU
inverte maiuscole e minuscole di una parola - vE~
inverte maiuscole e minuscole di una riga - g~~
intero file minuscolo - ggguG
intero file maiuscolo - gggUG

sostituzione prima corrispondenza sulla riga - :s/vecchio/nuovo/
sostituzione su tutta la riga - :s/vecchio/nuovo/g
sostituzione con richiesta di conferma - :s/vecchio/nuovo/gc
sostituzione in tutto il documento - :%s/vecchio/nuovo/g

sostituzione in tutti i buffer - :bufdo %s/vecchio/nuovo/ge | update

elimina le terminazioni di riga in stile DOS, ovvero quei simpatici ^M - :%s/\r/
se non fossero solo a fine riga, digitare :%s/ seguito da Ctrl-v e Ctrl-m, quindi aggiungere //g e fare la sostituzione:
:%s/^M//g


dato un file con tante righe nella forma di foo bar baz http://bla, elimina i caratteri prima di 'http' per ogni riga e nell'intero documento: :%s/^.\{-}\zehttp//g


data una riga nella forma '11. foo' sostituisce il punto con un tab :s/\(^[0-9]\+\)\. /\1\t/


cancella tutto ciò che c'è dopo le virgolette :%s/".*//


cancella spazi non voluti a fine riga (trailing whitespace); \s cerca gli spazi bianchi (spazio o tab) e \+ cerca una o più occorrenze: :%s/\s\+$//

cerca soltanto: /\s\+$


seleziona e inserisce un cancelletto all'inizio di ogni riga selezionata Ctrl-v I # <esc>

:help v_b_I


manda a capo in corrispondenza di ogni tag
:g,
,s,
,
\r,g


in una riga con molteplici 'foo' sostituisce solo il secondo :s/\(.*\)foo/\1bar/


ordina testo alfabeticamente - :sort

elimina righe uguali - :sort u


mostra tre righe di un testo (la 3, 45, 180) per un rapido confronto :3p|45p|180p


Selezione e inserimento

Ora che sappiamo come gestire i file e come muoverci tra di essi è giunto il momento di produrre.
Come accennato all'inizio, la modalità visuale seleziona il testo.

inizia selezione - v
seleziona intera riga - V
seleziona blocco (per colonne) - Ctrl-v
seleziona tutto - ggVG


In caso di necessità è possibile invertire la direzione del cursore durante la selezione, se selezioniamo alcune righe dall'alto verso il basso e vogliamo in seguito selezionarne altre sopra, basterà premere o e il cursore si sposterà alla prima riga della selezione corrente quindi muovere il cursore verso l'alto; perciò i comandi per l'ipotetica situazione sono:
Vjok


Su di essa è anche possibile compiere le stesse operazioni della modalità comando, la differenza è che apparirà un prompt particolare ('<,'>), i comandi vanno inseriti subito dopo, senza spazio.
Ecco ad esempio come copiare del testo salvandolo in altro file:
v
:'<,'>w nome_file

Allacciandosi al discorso, si può invece inserire il testo di un altro file sulla riga sotto il cursore:
:r nome_file


Il punto esclamativo è un attivatore per comandi esterni, seguito da un comando apre una shell in una porzione di finestra e lo esegue:
:!ls

Possiamo quindi inserire nel documento qualsiasi output della shell:
:r !ls

In caso servisse una shell con piena funzionalità:
:shell

Si noti che è un sotto processo di Vim, ricordarsi dunque di uscire una volta finito :)


Indentazione

inserisce un'indentazione su riga - :>
inserisce due indentazioni su riga - :>>
toglie un'indentazione su riga - :<
toglie due indentazioni su riga - :<<
inserisce un'indentazione su 3 righe - :>3
inserisce un'indentazione sulla terza riga - :3>

inserisce - >> toglie - << inserisce su tre righe - 3>> toglie su tre righe - 3<< inserisce sulla terza riga partendo da dove è posizionato il cursore - 2j>>

rimuove indentazione all'intero file - gg=G


Copia, taglia, incolla, cancella

Questo funziona solo all'interno della sessione corrente di Vim.
copia testo selezionato - y
copia prima parola di una riga - yw
copia intera riga - yy

incolla testo tagliato sotto la riga dove è il cursore - p
incolla testo tagliato sopra la riga dove è il cursore - P

mette la riga sottostante in coda alla corrente - J


cancella carattere - x
cancella tre caratteri - 3x
cancella dal cursore all'inizio della parola seguente - dw
cancella dal cursore alla fine della parola corrente - de
cancella dal cursore all'inizio della parola corrente - db
cancella la parola che si trova sotto al cursore - daw
cancella la parola che si trova sotto al cursore e ritorna in modalità inserimento - caw
cancella dal cursore alla fine della riga - D
cancella dal cursore alla fine della riga - d$
cancella intera riga compreso spazio occupato - dd
cancella tre righe - 3dd
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso - df (seguito dal carattere)
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso - dt (seguito dal carattere)
cancella tutte le righe dello schermo sotto il cursore - dL
cancella dalla riga in cui si trova il cursore alla fine del documento - dG
cancella dalla riga in cui si trova il cursore all'inizio del documento - dg
cancella intero documento - ggdG
cancella parola e passa alla modalità inserimento - cw
cancella riga e passa alla modalità inserimento - cc
cancella sulla riga corrente dal cursore fino ad un determinato carattere compreso e passa alla modalità inserimento - cf (seguito dal carattere)
cancella sulla riga corrente dal cursore fino ad un determinato carattere escluso e passa alla modalità inserimento - ct (seguito dal carattere)

cancella ogni riga che inizia con una certa parola - :g/^parola/d
cancella ogni riga che termina con una certa parola - :g/parola$/d
cancella ogni riga che contiene una certa parola - :g/parola/d
cancella le righe commentate - :g/^#/d
cancella le righe vuote - :v/\S/d

inserisce commento (#) ad inizio riga - :s/^/#/


Annulla, ripeti, cronologia e ricerca

Per annullare o ripetere una modifica si userà:
undo - u
undo di una riga - U

redo - Ctrl-r


Per l'ultima operazione effettuata, qualunque essa sia, e quindi automatizzare un po' le ripetizioni si usa il punto:
.


Per la modalità comando:
ripete ultima operazione - @:
mostra la history dei comandi - :history
mostra la history con comandi selezionabili - q:
mostra la history di ricerca con comandi selezionabili - q/ (successivo)
mostra la history di ricerca history con comandi selezionabili - q? (precedente)

mostra la lista dei comandi interni che iniziano per a - :a Ctrl-d

La ricerca funziona come per tante altre applicazioni:
cerca parola in avanti - /parola
ripete ricerca in avanti - n
cerca indietro - N

cerca parola indietro - ?parola
ripete ricerca indietro - n
cerca in avanti - N


Autocompletamento

In modalità inserimento e sostituzione è possibile ottenere una lista di parole usate precedentemente.
Ctrl-x
scorrimento tra i risultati - Ctrl-n / Ctrl-p
annulla - Ctrl-e
accetta parola selezionata - Ctrl-y (oppure Enter)


Clipboard

Esistono tre tipi differenti di selezione: PRIMARY, SECONDARY, e CLIPBOARD, ma solo due vengono utilizzate.

(sinistro, o destro per i mancini) e incolla con il tasto 2 (centrale).

Specifiche Freedesktop

Ovviamente con il mouse non è prevista una funzione che taglia, ma questa può comunque funzionare ad esempio tra due sessioni diverse di Vim.

PRIMARY:

copia - "*y
taglia - "*x
incolla - "*p

CLIPBOARD:

copia - "+y
taglia - "+x
incolla - "+p

Allo stesso modo, per copiare una riga senza prima selezionarla si useranno "*yy e "+yy

Il " (virgolette) attiva i registri, una sorta di clipboard dove immagazzinare porzioni di testo. * (asterisco) e + (più) fanno parte dei registri di selezione e rilascio del testo da e verso la clipboard di Xorg. Un altro registro utile è il buco nero, il testo non viene salvato nella clipboard. Un po' come usare /dev/null in una shell, utile per cancellare senza coinvolgere gli altri registri.

cancella riga - "_dd cancella tre righe - "_3dd

Per approfondire e sapere di più sugli altri sette registri consultare la documentazione: :help " :help :registers


Per evitare di avere dipendenze extra che riguardano Xorg, la versione di Vim presente in Debian è compilata senza il supporto alla clipboard, lo si può verificare con:
:version

cercando clipboard e xterm_clipboard nell'elenco delle funzionalità, oppure con una ricerca mirata, che produrrà 1 se presente o 0 se non lo è:
:echo has('clipboard')
:echo has('xterm_clipboard')

per ottenere questo si dovrà installare una delle interfacce grafiche a scelta tra:

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti