VimCS: Editing: differenze tra le versioni
mNessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 26: | Riga 26: | ||
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 http://bla'', | ||
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''' | : ''':%s/^.\{-}\zehttp//g''' | ||
Riga 34: | Riga 34: | ||
: ''':s/\(^[0-9]\+\)\. /\1\t/''' | : ''':s/\(^[0-9]\+\)\. /\1\t/''' | ||
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\+$''' | |||
Versione delle 14:47, 13 lug 2011
Vim Cheat Sheet |
Sommario |
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 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\+$
ordina testo alfabeticamente - :sort
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 (salta righe vuote) - ctrl-v
seleziona tutto - ggVG
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>
scorciatoie:
>> (inserisce)
<< (toglie)
= (toglie)
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
mette la riga sottostante in coda alla corrente - J
cancella carattere - x
cancella tre caratteri - 3x
cancella parola a destra del cursore - dw
cancella parola a sinistra del cursore - db
cancella ciò che si trova sotto al cursore - D
cancella intera 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 parola indietro - ?parola
ripete ricerca indietro - 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.
- 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).
- CLIPBOARD: il testo copiato o tagliato e incollato tramite i menu delle applicazioni o le classiche scorciatoie ctrl-c/ctrl-x/ctrl-v.
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
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:
- vim-gnome
- vim-gtk
- vim-athena