VimCS: Editing

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Vim Cheat Sheet

Sommario

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

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 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.

  • 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.

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

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