Ecco due paginette davvero interessanti sull’uso dei TAB in VIM e sull’utilizzo delle finestre splittate:
vim tabs e vim split
Ad esempio… sapete di poter ripetere un comando su tutti i tab aperti?
:tabdo 1,$s/foo/bar/g
Questo comando infatti sostituisce la stringa foo con bar in tutti i file aperti nei tab della sessione
Ecco come lavorare su più file contemporaneamente con VIM (articolo tratto da linuxfeed.org)
Per aprire due file contemporaneamente dividendo l’area di lavoro orizzontalmente si ricorre all’opzione -o:
vim -o file1.txt file2.txt
Per aprire due file contemporaneamente dividendo l’area di lavoro verticalmente si ricorre all’opzione -O:
vim -O file1.txt file2.txt
Per passare da una finestra all’altra si utilizza CTRL-W + CTRL-W (due volte CTRL+W)
Dopo avere lavorato contemporaneamente su più file, può rendersi necessario chiudere tutto e andarsene un poco a spasso. Questi sono i comandi con cui chiudere una sessione multipla di Vim:
:wqall
:qall!
Nel primo caso si chiudono tutte le finestre dopo avere salvato le modifiche di ognuno. Nel secondo si chiede di chiudere tutto ignorando qualsiasi modifica effettuata sui file.
Si può approfondire l’argomento leggendo la pagina del manuale di VIM: usr_08, che spiega anche come gestire le differenze tra file con il comando vimdiff
Ecco come controllare la sintassi di un file PHP prima di salvare il file stesso (per chi volesse approfondire, ecco un articolo su vim.wikia.com):
Inserite nel file .vimrc (nella home dell’utente) la seguente riga:
map <C-A> :w !php -l<CR>
Editate dunque il file che volete controllare e premete CTRL+a: un messaggio vi indicherà se il file ha un errore di sintassi oppure no!
Utilissimo TIP per non salvare file errati… soprattutto se direttamente in produzione!
Ho trovato un tutorial interessante su come registrare le macro con VIM (ad esempio per poter sostituire una stringa in più file il più velocemente possibile!)
Ecco come fare:
vim *.cpp Avviate Vim, definendo la lista di argomenti
che contiene tutti i file C++ . Siete ora
nel primo file.
qq Iniziate la registrazione nel registro q
Effettuate le sostituzioni nel primo file. (opzione /e sopprime i warning!)
:wnext Scrivete il file e passate al successivo.
q Interrompete la registrazione.
999@q Eseguite il registro q nei restanti file.
Tutto qui!
Ecco un articolo molto carino con alcuni esempi di bash scripting:
Bash in 30 minuti
O per chi volesse approfondire, ecco il manuale GNU sulla bash shell
O l’Advanced bash shell scripting guide
Ecco come utilizzare wget abilitando l’encoding GZIP (utile se avete abilitato il mod_deflate o il mod_gzip di apache e volete controllare se funziona!)
wget --header\="Accept-Encoding: gzip" http://address
Lo sapevate che con l’editor VIM si possono attuare delle sostituzioni di stringhe con le regexp ?
Ecco un link/tutorial molto interessante che spiega come utilizzare questo potentissimo mezzo:
VIM REGULAR EXPRESSION
Ecco un’opzione carina da aggiungere al comando grep quando si cerca una stringa di testo:
–exclude=*.{png,jpg,gif,bmp,jpeg}
ESEMPIO:
grep -lsr –exclude=*.{png,jpg,gif,bmp,jpeg} “STRINGA” *
Capita spesso infatti che il grep si fermi per lungo tempo a cercare la stringa all’interno delle immagini!
Con questa opzione assicuro un incremento notevole nella velocità di risposta del comando
Per sincronizzare i file con il potentissimo comando rsync consiglio di leggersi un pochino il manuale… (man rsync)
Mi è capitato spesso di sentire di gente che ha cancellato alcuni file per sbaglio oppure dire che l’rsync non ha funzionato!
Per prima cosa è bene ricordare che l’rsync è case sensitive!!! Quindi se ad esempio si vogliono sincronizzare i file con estensione *.jpg, attenzione ad esplicitare anche *.JPG
Prendiamo in considerazione proprio il caso in cui si vogliano sincronizzare solo le immagini presenti in una determinata directory (e relative sottodir)
Opzioni Avanzate
–list-only mostra la lista dei file senza effettuare il trasferimento
–include-from=NOMEFILE filtri avanzati da specificarsi all’interno di un file
1. creo il file solo_immagini.txt con questo contenuto ( compresi i segni + e - ):
+ */
+ *.[jJ][pP][gG]
+ *.[jJ][pP][eE][gG]
+ *.[gG][iI][fF]
+ *.[pP][nN][gG]
+ *.[bB][pP][mM]
+ *.[tT][iI][fF][fF]
- *
2. rsync -az --list-only --include-from=solo_immagini.txt /SORGENTE/ /DESTINAZIONE/
Con questo comando si verrà messi a conoscenza della lista dei file che saranno trasferiti dalla dir sorgente a quella destinazione (togliere –list-only per effettuare realmente la sincronizzazione!). Notare che in questo modo verranno inviati anche i file con estensione jPg o JPG o Jpg ecc… ecc…
Ecco il comando che si può utilizzare su sistemi unix per trovare tutti i link simbolici in una determinata directory:
ll | grep ^l
E se si volesse cercare anche all’interno delle sottodirectory, allora basta aggiungere il parametro -R in questo modo:
ll -R | grep ^l