vi (aka vim) manuale,trucchi e comandi utili

Da dove viene il nome gREp (RE sta per Regular Expression):
:g/RE/p

Cancella linee da 10 a 20 inclusive:
:10,20d
o con marchi a e b:
:'a,'bd

Cancella lineee che contengono pattern:
:g/pattern/d

Cancella tutte le linee vuote:
:g/^$/d

Cancella linee in un range dato che contengono pattern:
:20,30/pattern/d
or with marks a and b:
:'a,'b/pattern/d

Sostituisce tutte le linee alla prima volta che incontra of pattern:
:%s/pattern/new/
:1,$s/pattern/new/

Sostituisce tutte le linee di pattern globalmente
(anche se ce ne sono più di una sulla stessa linea):
:%s/pattern/new/g
:1,$s/pattern/new/g

Trova tutte le linee che contengono pattern e ci aggiunge -new alla fine di ogni linea:
:%s/\(.*pattern.*\)/\1-new/g

Sostituzione di un range:
:20,30s/pattern/new/g
con a e b:
:'a,'bs/pattern/new/g

Inverte due patterns su una linea:
:s/\(pattern1\)\(pattern2\)/\2\1/

Scrive in maiuscolo la prima lettera in minuscolo su una linea:
:s/\([a-z]\)/\u\1/
più concisamente:
:s/[a-z]/\u&/

Mette in maiuscolo tutte le minuscole di una linea:
:s/\([a-z]\)/\u\1/g
più concisamente:
:s/[a-z]/\u&/g

Capitalizza tutte le parole su una linea:
:s/\(.*\)/\U\1\E/

Capitalizza tutte le prime lettere delle parole in una linea:
:s/\<[a-z]/\u&/g
Toglie la capitalizzazione di tutte le prime lettere delle parole in una linea: :s/\<[A-Z]/\l&/g

Cambia la grandezza dei caratteri sotto al cursore:
~
Cambia la grandezza di tutti i caratteri su una linea:
g~~
Cambia la grandezza di tutti i caratteri rimanenti dal cursore:
g~w

Incrementa il numero sotto al cursore:
<
Ctrl-L>

Decrementa il numero sotto al cursore:
<Ctrl-X>

Riscrive:
<Ctrl-L>

Accende la numerazione delle linee:
:set nu
La spegne:
:set nonu

Numero Linee (filtra il file attraverso un comando unix e riscrive l output):
:%!cat -n

Ordina linee di testo:
:%!sort

Ordina linee di testo e rimuove linee indentiche in file ordinati:
:%!sort -u

Legge l'output di un comando nel buffer:
:r !ls -l

Aggiorna un file dalla versione sul disco:
:e!

Apre una nuova finestra:
<Ctrl-w>n

Apre una nuova finestra dello stesso file (split):
<Ctrl-w>s

Split la finestra verticalmente:
<Ctrl-w>v

Chiude la finestra corrente:
<Ctrl-w>c
:q

Fa della finestra corrente l'unica finestra:
<Ctrl-w>o

Cicla alla finestra seguente:
<Ctrl-w>w

Muove la finestra sotto quella corrente:
<Ctrl-w>j

Muove la finestra sopra quella corrente:
<Ctrl-w>k

Muove la finestra a sinistra di quella corrente:
<Ctrl-w>h

Muove la finestra a destra quella corrente:
<Ctrl-w>l

Setta la dimensione del testo per l'allineamento automatico mentre scrivi:
:set textwidth=80

Accende l'evidenziamento della sintassi
:syn on
Spegne:
:syn off

Forza il tipo di file per l'evidenziamento della sintassi:
:set filetype=python
:set filetype=c
:set filetype=php

Usa colori chiari per uno sfondo scuro:
:set background=dark


Htmlize un file usando l'evidenziamento corrente della sintassi:
:so $VIMRUNTIME/syntax/2html.vim

O, htmlize da un comando di promt:
in 2html.sh scrivi:

#!/bin/sh
vim -n -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null

Adesso basta fare: shell> 2html.sh foo.py