Python e Vim: differenze tra le versioni

m
nessun oggetto della modifica
m (primo inserimento)
 
mNessun oggetto della modifica
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].
Una '''whitelist''' (contrario di [[blacklist]]) � una lista contenente degli elementi che, normalmente, devono essere lasciati passare da determinati filtri.


== Syntax Higlight ==
Esempio:
La porima funzione che generlamente si abilita quando si usa un editor per programmazione è il syntax highlight.
* nei filtri antispam, le ''whitelist'' contengono delle liste di mittenti le cui email non verranno analizzate dai filtri anti spam
* nei server web con controlli anti [[ddos]] o anti [[dos]] contiene un elenco di indirizzi ip che non verranno mai [[bannati]] anche se effettueranno accessi continui


Per abilitarlo in Vim per i vari linguaggi (incluso pyton) è sufficiente decommentare in<tt>/etc/vim/vimrc</tt> la riga:
[[Category:Glossario]]
 
  syntax on
 
 
== Gestire l'indentazione ==
In python è di vitale importanza gestire correttamente l'indentazione dato che (a differenza dei linguaggi ''free-form'' come C) questa è parte integrante della sintassi.
 
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. &Egrave; 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:
 
* Sostituzione alla pressione del tasto TAB con un numero equivalente di spazi
* Larghezza indentazione pari a 4 spazi.
 
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 corbpo 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.
 
La seconda riga imposta per i tipi di file python le seguenti impostazioni:
 
;<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.
 
;<tt>expandtab</tt> o <tt>et</tt>: riempe con spazi le indentazioni generate dalla pressione del tasto TAB.
 
;<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>).
 
;<tt>shiftwidth</tt> o <tt>sw</tt>: larghezza di un rientro dell'indentazione automatica. &Egrave; 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 ==
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)
 
[[stub]]
1 760

contributi