Utente:MaXeR: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
(27 versioni intermedie di 3 utenti non mostrate)
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].
=About MaXeR=
Mi chiamo Claudio, ho 22 anni e studio Informatica presso l'Università degli Studi di Verona.


== Syntax Higlight ==
==Contatti==
La prima funzione che generalmente si abilita quando si usa un editor per programmazione � il ''syntax highlight''.
; Blog : http://www.knio.it


Per abilitarlo in Vim per i vari linguaggi (incluso pyton) � sufficiente decommentare in<tt>/etc/vim/vimrc</tt> la riga:
; MaXeR@fsfe.org : http://www.fsfe.org/Members/maxer/


  syntax on
; MaXeR@persone.softwarelibero.it : http://persone.softwarelibero.org/person/MaXeR


; em@il : [mailto:maxer@debianizzati.org maxer@debianizzati.org]<br/>[mailto:maxer@knio.it maxer@knio.it]<br/>[mailto:maxer@fsfe.org maxer@fsfe.org]


== Gestire l'indentazione: TAB, spazi e ''autoindent'' ==
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 in 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 quasi universalmente in python � pari ad una larghezza di 4 spazi. Per ricapitolare il nostro scopo � ottenere:
; jabber : maxer@jabber.linux.it
: maxer@jabber.fsfe.org


* Sostituzione alla pressione del tasto TAB con un numero equivalente di spazi
; icq : 161200863
* 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
[http://www.fsfe.org http://www.knio.it/images/a-happy-fellow.png]
  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 :, poich� la loro assenza fa si che il cursore non venga indentato.
=Le Mie Guide=
# [[La struttura della Distribuzione]]
# [[I repository ed il loro utilizzo]]
# [[Introduzione all'APT System]]
# [[Pulire Debian]]
# [[Applicare una patch ad un pacchetto Debian]]
# [[Apt-build: ottimizzazione dei pacchetti | '''Apt-build''': ottimizzazione dei pacchetti]]
# [[Apt-cdrom | '''Apt-cdrom''': aggiunta di cd/dvd nella lista dei repository]]
# [[Apt-file: ricerca all'interno dei pacchetti | '''Apt-file''': ricerca all'interno dei pacchetti]]
# [[Apt-listbugs: come monitorare i bug | '''Apt-listbugs''': come monitorare i bug]]
# [[Apt-zip: aggiornamenti senza una connessione veloce | '''Apt-zip''': aggiornamenti senza una connessione veloce]]
# [[Make-jpkg: Pacchettizziamo Java| '''Make-jpkg''': Pacchettizziamo Java]]
# [[Apt-Proxy: un proxy per i pacchetti Debian| '''Apt-Proxy''': un proxy per i pacchetti Debian]]
# [[Debmirror: creiamo un mirror Debian |'''Debmirror''': creiamo un mirror Debian]]
# [[Password sicure: la base della sicurezza informatica]]
# [[Come abilitare il completamento automatico 'avanzato']]
# [[Convertire immagini .nrg in immagini .iso]]
# [[Gestione della banda in Apache]]
# [[Mrtg: monitoriamo la banda]]
# [[UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione]]
# [[Powernowd: CpuScaling per AMD]]
# [[ cacti | Cacti per monitorare il sistema ]]
# [[ Debian_on_a_compaq_Presario_2154EA ]]
# [[ Munin ]]
# [[ Debian Fun ]]
# [[LAMP: Linux, Apache, MySQL e PHP]] Collaborazione con [[Utente:Keltik|Keltik]]
# [[ SysV ]]
# [[ jigdo ]]
# [[ Wireless Support ]]
# [[ Apache, SSL e CaCert.Org ]] (stub)
# [[ Pacchettizzare un tema per Bootsplash ]]
# [[ Gestione di un repository con debarchiver ]]
# [[ Ssh e autenticazione tramite chiavi ]]
# [[ Dupload per l'upload dei pacchetti Debian ]]
# [[ Synaptics touchpad ]]
# [[SSHFS: montare una risorsa remota sfruttando FUSE ed SSH | Montare una directory remota con sshfs]]
# [[Unison e la sincronizzazione di directory]]
# [[Pbuilder: compilazione in ambienti puliti]]
# [[Madwifi | Installazione Driver Madwifi]]
# [[Old:Repository Debianizzati.Org]]
# [[Old:Kde e mount automatico]]
# [[Recuperare i dati da un Hard Disk danneggiato]]
# [[Rileggere la tabella delle partizioni]]
# [[Java in Debian]]
# [[APT: Errori (non così) frequenti]]
# [[Controllare lo stato di un pacchetto]]
# [[Postgrey: filtrare lo spam con il greylisting]]
# [[Spostare il tasto di chiusura delle tab di Firefox 2]]
# [[Postfix e autenticazione su smtp remoto]]
# [[Tmpreaper: pulire le directory contenenti file temporanei]]
# [[Creare DVD Cover con GLabels]]
# [[Alternatives]]


La seconda riga associa ai tipi di file python le seguenti impostazioni:
=Pagine in Lavorazione=
* [[Repository non ufficiali]]
* [[Copiare-Spostare Debian]] (titolo non definitivo)
* [[Logrotate: configurare la rotazione automatica dei log]]
* [[Nagios: monitorare server e servizi]]
* [[Integrit: file verification system]]


;<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.
=Ho scritto anche in=
* [[ Speciale:Contributions/MaXeR | dove ho ficcato il naso ;) ]]
* [[wg111v2 con ndiswrapper e crittografia WPA]]


;<tt>expandtab</tt> o <tt>et</tt>: riempe con spazi le indentazioni generate dalla pressione del tasto TAB.
=Pagine Varie riportate da altre fonti=
 
# [[Vendere Software Libero]]
;<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>).
# [[Perché il software non deve avere padroni]]
 
# [[La comunità del software libero dopo 20 anni]]
;<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/deindenta con '''>''' o con '''<'''.
# [[Ricompense e Motivazione]]
 
;<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 ==
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 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 <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 <code>make</code>.
 
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 <tt>python</tt> 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 degli IDE pi� avanzati.
 
[[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 st� 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 st� operando l'autocompletamento.
 
Per effettuare l'autocompletamento basta premere "CTRL+x o", ma ricordate che � necessaria la versione 7 (o successive) di Vim. &Egrave; 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]
 
A volte � anche comodo effettuare un autocompletamento ''non intelligente'', basato sulle parole presenti nel file corrente. Questo autompletamento si ottiene premendo "CTRL+n". Quest'ultimo metodo pu� risultare utile per completare nomi di variabili o di funzioni.
 
 
== Conclusioni ==
Questi sono solo piccoli suggerimenti per programmare in python con Vim. Come al solito, ogni correzione, suggerimento o aggiunta � ben accetto e anzi incoraggiato.
 
 
== Link ==
* [http://www.vim.org/ Homepage di Vim]
* [http://www.python.org/ Homepage di Python]
* [http://mail.python.org/pipermail/python-list/2005-July/330551.html Folding in Vim (thread su python list)]
 
 
----
Autore: [[Utente:TheNoise|~ The Noise]]
 
[[Categoria:Desktop]][[Categoria:Tips&Tricks]]

Versione delle 09:03, 18 lug 2015

About MaXeR

Mi chiamo Claudio, ho 22 anni e studio Informatica presso l'Università degli Studi di Verona.

Contatti

Blog
http://www.knio.it
MaXeR@fsfe.org
http://www.fsfe.org/Members/maxer/
MaXeR@persone.softwarelibero.it
http://persone.softwarelibero.org/person/MaXeR
em@il
maxer@debianizzati.org
maxer@knio.it
maxer@fsfe.org


jabber
maxer@jabber.linux.it
maxer@jabber.fsfe.org
icq
161200863


a-happy-fellow.png

Le Mie Guide

  1. La struttura della Distribuzione
  2. I repository ed il loro utilizzo
  3. Introduzione all'APT System
  4. Pulire Debian
  5. Applicare una patch ad un pacchetto Debian
  6. Apt-build: ottimizzazione dei pacchetti
  7. Apt-cdrom: aggiunta di cd/dvd nella lista dei repository
  8. Apt-file: ricerca all'interno dei pacchetti
  9. Apt-listbugs: come monitorare i bug
  10. Apt-zip: aggiornamenti senza una connessione veloce
  11. Make-jpkg: Pacchettizziamo Java
  12. Apt-Proxy: un proxy per i pacchetti Debian
  13. Debmirror: creiamo un mirror Debian
  14. Password sicure: la base della sicurezza informatica
  15. Come abilitare il completamento automatico 'avanzato'
  16. Convertire immagini .nrg in immagini .iso
  17. Gestione della banda in Apache
  18. Mrtg: monitoriamo la banda
  19. UsbMount: Gestione automatizzata delle periferiche usb di memorizzazione
  20. Powernowd: CpuScaling per AMD
  21. Cacti per monitorare il sistema
  22. Debian_on_a_compaq_Presario_2154EA
  23. Munin
  24. Debian Fun
  25. LAMP: Linux, Apache, MySQL e PHP Collaborazione con Keltik
  26. SysV
  27. jigdo
  28. Wireless Support
  29. Apache, SSL e CaCert.Org (stub)
  30. Pacchettizzare un tema per Bootsplash
  31. Gestione di un repository con debarchiver
  32. Ssh e autenticazione tramite chiavi
  33. Dupload per l'upload dei pacchetti Debian
  34. Synaptics touchpad
  35. Montare una directory remota con sshfs
  36. Unison e la sincronizzazione di directory
  37. Pbuilder: compilazione in ambienti puliti
  38. Installazione Driver Madwifi
  39. Old:Repository Debianizzati.Org
  40. Old:Kde e mount automatico
  41. Recuperare i dati da un Hard Disk danneggiato
  42. Rileggere la tabella delle partizioni
  43. Java in Debian
  44. APT: Errori (non così) frequenti
  45. Controllare lo stato di un pacchetto
  46. Postgrey: filtrare lo spam con il greylisting
  47. Spostare il tasto di chiusura delle tab di Firefox 2
  48. Postfix e autenticazione su smtp remoto
  49. Tmpreaper: pulire le directory contenenti file temporanei
  50. Creare DVD Cover con GLabels
  51. Alternatives

Pagine in Lavorazione

Ho scritto anche in

Pagine Varie riportate da altre fonti

  1. Vendere Software Libero
  2. Perché il software non deve avere padroni
  3. La comunità del software libero dopo 20 anni
  4. Ricompense e Motivazione