6 999
contributi
(→Gestire l'indentazione: TAB, spazi e ''autoindent'': già presente nel file di configurazione: basta decommentare) |
S3v (discussione | contributi) Nessun oggetto della modifica |
||
Riga 4: | Riga 4: | ||
La prima funzione che generalmente si abilita quando si usa un editor per programmazione è il ''syntax highlight''. | La prima funzione che generalmente si abilita quando si usa un editor per programmazione è il ''syntax highlight''. | ||
Per abilitarlo in Vim per i vari linguaggi (incluso | Per abilitarlo in Vim per i vari linguaggi (incluso Python) è sufficiente decommentare in<code>/etc/vim/vimrc</code> la riga: | ||
<pre>syntax on</pre> | |||
Riga 12: | Riga 12: | ||
In python è di vitale importanza gestire correttamente l'indentazione dato che (a differenza dei linguaggi ''free-form'' come C) questa è parte integrante della sintassi. | 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 sé 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 convezioni 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 in python è quello di usare soltanto spazi. | Il python di per sé 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 convezioni 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 in 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 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; | * sostituzione alla pressione del tasto TAB con un numero equivalente di spazi; | ||
* larghezza indentazione pari a 4 spazi. | * larghezza indentazione pari a 4 spazi. | ||
Per ottenere questo comportamento in Vim/gVim si possono decommentare le seguenti righe nel file di configurazione < | Per ottenere questo comportamento in Vim/gVim si possono decommentare le seguenti righe nel file di configurazione <code>/etc/vim/vimrc</code>: | ||
<pre> if has("autocmd") | |||
filetype plugin indent on | filetype plugin indent on | ||
endif | endif</pre> | ||
ed inserire il seguente codice nello stesso file: | ed inserire il seguente codice nello stesso file: | ||
<pre> autocmd FileType python setlocal sw=4 sts=4 et tw=78 sta</pre> | |||
Il primo 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 | Il primo 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 indentazione. Stessa cosa vale per i vari <code>'''if'''</code>, <code>'''for'''</code>, ecc... Questa funzione è utile anche per accorgersi di errori sintattici come la mancanza dei :, poiché la loro assenza fa si che il cursore non venga indentato. | ||
La riga aggiunta associa ai tipi di file python le seguenti impostazioni: | La riga aggiunta associa ai tipi di file python le seguenti impostazioni: | ||
;< | ;<code>tabstop</code> oppure <code>ts</code>: 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 precedente). Viene elencata qui solo per chiarezza e completezza. | ||
;< | ;<code>expandtab</code> oppure <code>et</code>: riempe con spazi le indentazioni generate dalla pressione del tasto TAB. | ||
;< | ;<code>softtabstop</code> oppure <code>sts</code>: larghezza di un rientro causato dalla pressione di un TAB. Il rientro è creato inserendo spazi se <code>'''et'''</code> è settato, altrimenti viene usata una combinazione di spazi e caratteri TAB (questi ultimi hanno larghezza <code>'''ts'''</code>). | ||
;< | ;<code>shiftwidth</code> oppure <code>sw</code>: 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/deindenta con '''>''' o con '''<'''. | ||
;< | ;<code>smarttab</code> oppure <code>sta</code>: In combinazione con le opzioni precedenti 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 == | == Folding: le piegature nel codice == | ||
Riga 44: | Riga 44: | ||
Questo è possibile in Vim tramite il ''folding'' (''piegature''). Esistono dei plugin per Vim che riconoscono le strutture sintattiche del python e creano automaticamente le piegature. Tuttavia il metodo illustrato di seguito è ancora più semplice: piegature automatiche in base all'indentazione. Nel caso del python questo semplice metodo è particolarmente efficace. | Questo è possibile in Vim tramite il ''folding'' (''piegature''). Esistono dei plugin per Vim che riconoscono le strutture sintattiche del python e creano automaticamente le piegature. Tuttavia il metodo illustrato di seguito è ancora più semplice: piegature automatiche in base all'indentazione. Nel caso del python questo semplice metodo è particolarmente efficace. | ||
Per abilitarlo basta inserire in < | Per abilitarlo basta inserire in <code>/etc/vim/vimrc</code>: | ||
<pre>set foldmethod=indent</pre> | |||
Di seguito sono elencati i principali comandi per gestire le piegature: | Di seguito sono elencati i principali comandi per gestire le piegature: | ||
Riga 65: | Riga 65: | ||
Nel caso del python propongo una soluzione ''quick and dirty'' che associa ad un tasto l'esecuzione dello script. | Nel caso del python propongo una soluzione ''quick and dirty'' che associa ad un tasto l'esecuzione dello script. | ||
Aggiungendo nell'ormai famoso < | Aggiungendo nell'ormai famoso <code>/etc/vim/vimrc</code>: | ||
<pre>map <f5> :w<CR>:!python %<CR></pre> | |||
alla pressione del tasto F5 verrà eseguito < | alla pressione del tasto F5 verrà eseguito <code>python</code> passando come parametro il file corrente (indicato da '''%'''). | ||
== Autocompletamento | == Autocompletamento 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 degli IDE più avanzati. | Dalla versione 7 in Vim è stata inserita una funzione di autocompletamento intelligente (conosciuto anche come ''omnicompletion'') per i vari linguaggi simile a quella presente in alcuni degli IDE più avanzati. | ||
[[image: Python-gvim-7-omnicompletion.png|thumb|Screenshot della funzione di omnicompletion di Vim 7 con linguaggio di programmazione Python.]] | [[image: Python-gvim-7-omnicompletion.png|thumb|Screenshot della funzione di omnicompletion di Vim 7 con linguaggio di programmazione Python.]] | ||
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 | 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 sta completando. | ||
Una immagine vale più di mille parole. Potete notare la funzione di omnicompletion in funzione nello screenshot qui a fianco. Notare come sulla parte superiore della finestra sia apparsa automaticamente la documentazione della classe sulla quale si | Una immagine vale più di mille parole. Potete notare la funzione di omnicompletion in funzione nello screenshot qui a fianco. Notare come sulla parte superiore della finestra sia apparsa automaticamente la documentazione della classe sulla quale si sta utilizzando l'autocompletamento. | ||
Per effettuare l'autocompletamento basta premere "CTRL+x o", ma ricordate che è necessaria la versione 7 (o successive) di Vim. | Per effettuare l'autocompletamento basta premere "CTRL+x o", ma ricordate che è necessaria la versione 7 (o successive) di Vim. È opportuno scaricare anche la versione aggiornata del file che gestisce l'autocompletamento in python. Ecco un link: | ||
* [http://www.vim.org/scripts/script.php?script_id=1542 pythoncomplete.vim] | * [http://www.vim.org/scripts/script.php?script_id=1542 pythoncomplete.vim] | ||
A volte è anche comodo effettuare un autocompletamento ''non intelligente'', basato sulle parole presenti nel file corrente. Questo | A volte è anche comodo effettuare un autocompletamento ''non intelligente'', basato sulle parole presenti nel file corrente. Questo autocompletamento si ottiene premendo "CTRL+n". Quest'ultimo metodo può risultare utile per completare nomi di variabili o di funzioni. | ||
Riga 93: | Riga 93: | ||
# '''Commentare un blocco di codice''' | # '''Commentare un blocco di codice''' | ||
#* Premere CTRL+v e selezionare le righe di codice interessate | #* Premere CTRL+v e selezionare le righe di codice interessate | ||
#* premere < | #* premere <code>'''I'''</code> (i grande) e digitare il carattere interessato (solitamente #) | ||
#* premere ESC | #* premere ESC | ||
# '''Indentare e deindentare un blocco di codice''' | # '''Indentare e deindentare un blocco di codice''' | ||
#* Premere < | #* Premere <code>'''V</code>''' (shift + v) ed entrare in Visual Mode | ||
#* Selezionare la parte di codice da in/deindentare | #* Selezionare la parte di codice da in/deindentare | ||
#* Premere < | #* Premere <code>'''></code>''' per indentare o <code>'''<</code>''' per deindentare di 1 TAB | ||
== Conclusioni == | == Conclusioni == |
contributi