|
|
Riga 1: |
Riga 1: |
| Questa pagina raccoglie piccoli suggerimenti per sfruttare al meglio [http://www.vim.org/ Vim] e gVim con il linguaggio di programmazione [http://www.python.org/ Python]. | | = Introduzione = |
| | Questa pagina cerca di raccogliere scorciatoie, ottimizzazioni e link a pagine contenenti trucchi e suggerimenti per [http://www.getfirefox.it Mozilla Firefox]. |
|
| |
|
| == Syntax Higlight == | | = Ottimizzazione = |
| La porima funzione che generlamente si abilita quando si usa un editor per programmazione � il syntax highlight.
| | Come ottimizzare le prestazioni di Firefox, sia per quanto riguarda le performance di navigazione, sia per accelerare i tempi di avvio. |
|
| |
|
| Per abilitarlo in Vim per i vari linguaggi (incluso pyton) � sufficiente decommentare in<tt>/etc/vim/vimrc</tt> la riga:
| | == Velocizzare Firefox per la banda larga == |
| | [[Velocizzare Firefox per la banda larga]] |
|
| |
|
| syntax on
| |
|
| |
|
| | = Scorciatoie = |
| | Come semplificare e velocizzare l'utilizzo quotidiano del nostro [[browser]] preferito con semplici ma utili scorciatoie alle funzioni pi usate. |
|
| |
|
| == Gestire l'indentazione: TAB, spazi e ''autoindent'' == | | == Creazione di una tab == |
| In python � di vitale importanza gestire correttamente l'indentazione dato che (a differenza dei linguaggi ''free-form'' come C) questa � parte integrante della sintassi.
| | Una tab pu� essere creata nei seguenti modi: |
| | * Doppio click su una parte vuota della barra delle tab |
| | * Dal men� file |
| | * tramite la combinazione <tt>Ctrl + t</tt> |
| | * da un link esistente, cliccandoci sopra col tasto centrale del mouse |
|
| |
|
| Il python di per se riconosce ogni tipo di indentazione (TAB, spazi, o un mix dei due). Nei moderni sistemi il TAB ha tuttavia una larghezza variabile ed impostabile a piacere. Per evitare dunque problemi di interoperabilit� tra persone che usano convezione diverse � universalmente consigliato di usare nei file di codice python solamente spazi oppure solamente TAB. Anche l'uso esclusivo di TAB pu� talvolta creare dei problemi di visualizzazione (e quindi difficolt� di lettura) a causa di una diversa larghezza usata. Per tagliare la testa al toro, dunque, il modo pi� robusto e portabile di programmare il python � quello di usare soltanto spazi. È possibile impostare qualsiasi editor per programmazione in modo da sostituire automaticamente al TAB un numero di spazi pari alla larghezza dell'indentazione, e ovviamente anche vim non � da meno. La larghezza per una unit� di indentazione usata in modo quasi universalmente in python � pari ad una larghezza di 4 spazi. Per ricapitolare il nostro scopo � ottenere:
| | == Chiusura di una tab == |
| | Una tab pu� essere chiusa nei seguenti modi: |
| | * Cliccando col tasto centrale sulla tab da chiudere |
| | * Tramite l'apposito tasto a forma di <tt>X</tt> |
| | * Tramite l'apposita combinazione <tt>Ctrl + w</tt> |
|
| |
|
| * Sostituzione alla pressione del tasto TAB con un numero equivalente di spazi
| | ==Full Screen== |
| * Larghezza indentazione pari a 4 spazi.
| | Possiamo massimizzare Firefox premendo F11. |
|
| |
|
| Per ottenere questo comportamento in Vim/gVim si pu inserire il seguente codice nel file di configurazione <tt>/etc/vim/vimrc</tt>:
| |
|
| |
|
| filetype plugin indent on
| |
| autocmd FileType python setlocal sw=4 sts=4 et tw=78 sta
| |
|
| |
|
| La prima riga abilita l'indentazione automatica per i vari linguaggi di programmazione. In particolare per il python, se ad esempio dichiariamo una funzione su una riga, andando a capo avremo gi� il cursore indentato per poter scrivere il corpo della funzione con la giusta indenzatione. Stessa cosa vale per i vari <tt>'''if'''</tt>, <tt>'''for'''</tt>, ecc... Questa funzione � utile anche per accorgersi di errori sintattici come la mancanza dei :, poiche la loro assenza fa si che il cursono non venga indentato.
| | = Modifiche Comportamento = |
| | Addattiamo Firefox alle nostre esigenze, modificandone i comportamenti e le impostazioni di default! |
|
| |
|
| La seconda riga imposta per i tipi di file python le seguenti impostazioni:
| | == Firefox: Disattivare la ricerca con il tasto centrale == |
| | [[Firefox: Disattivare la ricerca con il tasto centrale]] |
|
| |
|
| ;<tt>tabstop<tt> o <tt>ts</tt>: larghezza del carattere TAB quando incontrato nel file. Noi non useremo caratteri TAB quindi questa impostazione pu� essere ignorata (e non � riportata infatti nell'esempio precendente). Viene elencata qui solo per chiarezza e completezza.
| | == Il vostro motore di ricerca da Firefox == |
| | [[Il vostro motore di ricerca da Firefox]] |
|
| |
|
| ;<tt>expandtab</tt> o <tt>et</tt>: riempe con spazi le indentazioni generate dalla pressione del tasto TAB.
| | == Aggiungere un motore di ricerca al quicksearch di Firefox == |
| | [[Aggiungere un motore di ricerca al quicksearch di Firefox]] |
|
| |
|
| ;<tt>softtabstop</tt> o <tt>sts</tt>: larghezza di un rientro causato dalla pressione di un TAB. Il rientro � creato inserendo spazi se <tt>'''et'''</tt> � settato, altrimenti viene usata una combinazione di spazi e caratteri TAB (questi ultimi hanno larghezza <tt>'''ts'''</tt>).
| | == Spostare il tasto di chiusura delle tab di Firefox 2 == |
| | [[Spostare il tasto di chiusura delle tab di Firefox 2]] |
|
| |
|
| ;<tt>shiftwidth</tt> o <tt>sw</tt>: larghezza di un rientro dell'indentazione automatica. È usato anche per definire la larghezza del rientro che si aggiunge o toglie ad un blocco di testo quando si seleziona (con '''v''') e poi si indenta/deintenta con '''>''' o con '''<''.
| |
|
| |
|
| ;<tt>smarttab</tt> o <tt>sta</tt>: In combinazione con le opzioni precendenti questa impostazione permette di cancellare un rientro (4 spazi ''reali ''nel nostro caso) con una sola pressione del tasto '''BS''' (o '''BackSpace''').
| |
|
| |
|
| == Folding: le piegature nel codice ==
| | [[Category:Tips&Tricks]] |
| Una funzione comoda durante la programmazione � la possibilit� di ripiegare del codice (ad esempio una funzione o una classe) in modo di avere una visione pi� compatta del file e facilitare la navigazione.
| |
| | |
| Questo � possibile in Vim tramite il ''folding'' (''piegature''). Esistono dei plugin per Vim che riconoscono le trutture sintattiche del python e creano automaticamente le piegature. Tuttavia il metodo illustrato di seguito � ancora pi� semplice: piegature autmatiche in base all'indentazione. Nel caso del python questo semplice metodo � particolarmente efficace.
| |
| | |
| Per abilitarlo basta inserire in <tt>/etc/vim/vimrc</tt>:
| |
| | |
| set foldmethod=indent
| |
| | |
| Di seguito sono elencati i principali comandi per gestire le piegature:
| |
| | |
| ;zo oppure Spazio: apre la piegature sotto il cursore (un solo livello)
| |
| ;zO: apre la piegature sotto il cursore e ricorsivamente tutte le piegature in essa contenute
| |
| ;zc: chiude la piegatura alla quale appartiene il blocco di codice indicato dal cursore (un solo livello)
| |
| ;zC: chiude la piegatura alla quale appartiene il blocco di codice indicato dal cursore e ricorsivamente tutte le piegature che la contengono
| |
| ;zr: apre tutte le piegature del file corrente di un livello
| |
| ;zR: apre completamente le piegature contenute nel file corrente (tutti i livelli)
| |
| ;zm: chiude tutte le piegature del file corrente di un livello
| |
| ;zM: chiude completamente le piegature contenute nel file corrente (tutti i livelli)
| |
| | |
| | |
| == Eseguire python da Vim ==
| |
| Vim possiede caratteristiche avanzate che permettono di impostare i compilatori da usare per ogni linguaggio e il metodo di esecuzione del make.
| |
| | |
| Nel caso del python propongo una soluzione ''quick and dirty'' che associa ad un tasto l'esecuzione dello script.
| |
| | |
| Aggiungendo nell'ormai famoso <tt>/etc/vim/vimrc</tt>:
| |
| | |
| map <f5> :w<CR>:!python %<CR>
| |
| | |
| alla pressione del tasto F5 verr� eseguito python passando come paramentro il file corrente (indicato da '''%''').
| |
| | |
| == Autocompletamento (aka omnicompletion) e documentazione integrata ==
| |
| Dalla versione 7 in Vim � stata inserita una funzione di autocompletamento intelligente per i vari linguaggi simile a quella presente in alcuni IDE pi� avanzati.
| |
| | |
| Per il python questa funzione permette di completare i nomi delle classi dei metodi e degli attributi tramite un comodo menu contestuale. Inoltre viene anche visualizzata contemporaneamente la docstring del metodo o della classe che si st� completando.
| |
| | |
| Una immagine vale pi� di mille parole:
| |
| | |
| {{stub}}
| |