55
WEMS 2008 E. Somma Trattamento dei dati Ripetizione dei comandi Ricerca delle informazioni Rettangoli Sostituzioni Macro di tastiera Scrittura dei programmi matlab-mode Altri major-mode Gestione dei processi shell-mode Emacs Speaks Statistics ess-mode Emacs per la programmazione statistica Emmanuele Somma [email protected] Supporto Informatico per l’Area Ricerche Banca d’Italia 14 Gennaio 2008 E. Somma (SIA-BdI) WEMS 2008 14/01/2008 1/55

Workshop Emacs per la programmazione statistica

Embed Size (px)

DESCRIPTION

Workshop Emacs per la Programmazione StatisticaSlides del Workshop c/o Area Ricerca Banca d'ItaliaVilla Huffer14 Gennaio 2008

Citation preview

Page 1: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Emacs per la programmazione statistica

Emmanuele [email protected]

Supporto Informatico per l’Area RicercheBanca d’Italia

14 Gennaio 2008

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 1/55

Page 2: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Piano della presentazione

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 2/55

Page 3: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Introduzione

L’analisi statistica puo essere considerata una forma diprogrammazione dei computer: oltre alla gestione della fase ditrattamento dei dati, spesso si scrivono programmi in linguaggidi programmazione e si eseguono processi attraverso interfacceutente su linea di comando.

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 3/55

Page 4: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Introduzione

Emacs e particolarmente versato nel supportare l’utente intutte queste attivita:

Trattamento dei dati Strumenti per la gestione dei file testualicontenenti dati (Ricerche, Sostituzioni, Colonne,Macro, ...)

Scrittura dei programmi Modi di supporto alla scrittura delcodice (fortran-mode, c-mode, matlab-mode, ...)

Gestione dei processi Interazione con le interfacce a linea dicomando (shell-mode, Emacs Speaks Statistics)

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 4/55

Page 5: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Trattamento dei dati

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 5/55

Page 6: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Ripetizione dei comandi

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 6/55

Page 7: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Come ripetere un comando

Un qualsiasi comando Emacs puo essere ripetuto numerosevolte utilizzando un argomento numerico prefisso precedutodalla combinazione C-u oppure il tasto ESC o M-[numero]Ad esempio:C-u 60 - Inserisce 60 caratteri menoM-10 C-x C-e Esegue 10 volte l’ultima macro registrataESC 60 DOWN Posiziona il cursore 60 righe sotto

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 7/55

Page 8: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Valore di default di C-u

Se non e presente un argomento numerico la combinazione C-uha il seguente effetto:C-u 4 volteC-u C-u 4 volte per 4 volte = 16 volteC-u C-u C-u 4 volte per 4 volte per 4 volte = 64 volte. . .

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 8/55

Page 9: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Ripetizioni successive

La combinazione di tasti C-x z ripete il comandoprecedentemente introdotto. Continuando a premere z ripeteulteriormente, ad esempio:

4.75;9.97;7.48;9.39;1.00;2.15;3.72;9.99;2.32;3.12

C-u 5 C-d C-x z z cancella prima un valore e poi altri due

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 9/55

Page 10: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Ricerca delle informazioni

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 10/55

Page 11: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Le espressioni regolari

Alcune persone, quando affrontano un problema,pensano: “Lo so, finiro per usare le espressioniregolari”. A questo punto, hanno due problemi.Jamie Zawinski, in comp.lang.emacs

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 11/55

Page 12: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Espressioni Regolari

Le espressioni regolari (regular expressions) sono descrizioniastratte di stringhe di caratteri.Ad esempio, la espressione regolare

\([ao]+\)\1

descrive una classe infinita di stringhe quali:

aa, aoao, oooo, aaoaao, oaoaoaaooaoaoaao, ...

ovvero una qualsiasi stringa contenente a o o, immediatamenteseguita da una ripetizione di se stessa.

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 12/55

Page 13: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sintassi delle espressioni regolari

Semplice match helloCaratteri speciali $ ^ . ∗ + ? [ ] \Insieme di caratteri [...] [^...]Ripetizioni \{N\}, \{N,M\}Raggruppamenti \( \)Riferimento \1 \2 \3 ...Alternative \|Gruppi timidi \(?: ... \)Stringa vuota \‘ \’ \= \b \B \< \>Costituenti \w \W \sC \SC C=... \cC \CC

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 13/55

Page 14: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Esercizi sulle espressioni regolari

Trovare in un testo “un” o “uno” o “una”un\(\|o\|a\)Trovare in un testo le parole “Luna” o “luna”.\(L\|l\)unaTrovare parole con tre consonanti di fila p.es. “scrivere”,“aspro” [bcdfghjklmnpqrstvwxyz]{3}Trovare parole con tre consonanti all’inizio di parola.\b[^aeiou]{3}Cercare parole con vocali identiche ripetute (p.es. “aree”,“portaauto”)\([aeiou]\)\1Trovare parole palindrome di lunghezza 4 o 5 (p.es.“abba”, “radar”) \b\(.\)\(.\).?\2\1\bTrovare parole ripetute (p.es. “alto alto”)\(\b\w+\b\)\s\1

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 14/55

Page 15: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Alcuni esempi

Sostituire i missingM-C-s <RET> ; *\. *; <RET> ;NaN; <RET> !

Selezione sul file dei BOND (AMETISTA)BOP.*\(TRENTO\|PADOVA\|UDINE\).+2003.\{4\}$

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 15/55

Page 16: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Cosa fare delle espressioni regolari

Contare M-x how-may

Ottenere una selezione di in un nuovo buffer M-x occur(global-set-key (kbd "C-c o") ’occur)

Ricercare su molti buffer contemporaneamenteM-x multi-occur <RET> buffer <RET> regexp <RET>

selezionado i nomi dei buffer con un regexpM-x multi-occur <RET> buffregexp <RET> regexp <RET>

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 16/55

Page 17: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Rettangoli

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 17/55

Page 18: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

I rettangoli

I rettangoli di Emacs sono le nostre colonne.Per selezionare un rettangolo bisogna:

1 Posizionare il cursore sul primo carattere della prima rigaed usare il comando di attivazione della marcaturaC-<SPAZIO>

2 Dopo spostarsi all’ultima riga e posizionarsi nel primocarattere dopo la zona da selezionare e su quel punto:

3 usare il comando scelto

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 18/55

Page 19: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Operazioni sui rettangoli

Tagliarla (ma salvarla nel kill-ring)C-x r k (kill-rectangle)

Cancellarla C-x r d (delete-rectangle)

Incollarla C-x r y (yank-rectangle)

Inserirla (vuota)C-x r o (open-rectangle)

Inserire una stringaC-x r t (string-rectangle)

Ripulire una zonaC-x r c (clear-rectangle)

Eliminare spazi bianchiM-x delete-whitespace-rectangle

Inserire una stringa in tutte le righeM-x string-insert-rectangle

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 19/55

Page 20: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sostituzioni

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 20/55

Page 21: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sostituzione non condizionale

Il comando generico di sostituzione non condizionaleM-x replace-string <RET> RICERCA <RET> SOST <RET>

Sostituire x con yM-x replace-string <RET> x <RET> @TEMP@ <RET>M-< M-x replace-string <RET> y <RET> x <RET>M-< M-x replace-string <RET> @TEMP@ <RET> y <RET>

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 21/55

Page 22: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sostituzione con espressioni regolari

Il comando generico di sostituzione con espressioni regolarieM-x replace-regexp <RET> REGEXP <RET> SOST <RET>

La stringa di sostituzione puo contenere alcuni comandispeciali:\& intero match\1, \2, ... match nel gruppo di parentesi\# numero di match sostituiti\? sostituzione manuale

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 22/55

Page 23: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sostituzione programmabile

Come scambiare x con y utilizzando una espressione EmacsLisp

M-x replace-regexp <RET> \(x\)\|y <RET>\,(if \1 "y" "x") <RET>

Scambiare il tipo BOC con BOP

M-x replace-regexp <RET>\(BOC\)\|BOP <RET>\,(if \1 "BOP" "BOC") <RET>

Aggiungere al termine della riga una etichetta ABC000n dove eil numero di rigaM-x replace-regexp <RET> ^.\{0,72\}$ <RET>\,(format "%-72sABC%05d" \& \#) <RET>

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 23/55

Page 24: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Sostituzione con richiesta query-replace

Il comando generico di sostituzione con espressioni regolarinella modalita con richiesta eM-x query-replace-regexp ( C-M-% )

Nella modalita di sostituzione la tastiera ha il seguentefunzionamento:<SPC> accetta<DEL> rifiuta, rivedi la sostituzione<RET> esci dall’operazione. una sola! tutte^ ritorna indietroC-r modalita di edit ricorsivo

(esci con C-M-c)e edita la sostituzione

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 24/55

Page 25: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Macro di tastiera

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 25/55

Page 26: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Macro di tastiera: definizione

E possibile registrare le combinazioni di tasti in modo daautomatizzare le operazioni ripetitiveC-x ( inizia la definizioneC-x ) termina la definizioneC-u C-x ( esegui e poi aggiungiC-u C-u C-x ( aggiungi senza eseguireC-x q chiedi conferma

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 26/55

Page 27: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Macro di tastiera: gestione

C-x e esegui l’ultima macro definitaC-x C-k r apply-macro-to-region-lines

esegui la macro per ogni riga della regioneC-x C-k n kmacro-name-last-macro

Dai un nome all’ultima macroC-x C-k b kmacro-bind-to-key

Assegna ad una combinazioneM-x insert-kbd-macro

Presenta la definizione della macro in unbuffer

C-x C-k C-e kmacro-edit-macroEdita l’ultima macro definita

C-x C-k e NAME edit-kbd-macroEdita la macro NAME

C-x C-k l Edita il lossage (100 caratteri)

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 27/55

Page 28: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Macro di tastiera: edit passo passo

E possibile eseguire una macro passo-passo con il comandoC-x C-k SPC (kmacro-step-edit-macro).Questo permette anche di fare un editing selettivo della macromentre si sta eseguendo ridefinendo la tastiera in questo modo:SPC, y esegui il comando corrente e avanzan, d, DEL salta il comando corrente e cancellalof salta il comando ma non cancellarloTAB esegui tutti i comandi simili successivic continua fino alla fineC-k cancella il resto della macroq termina l’editing senza modificheI KEY... inserimento di una combinazione di tastiR KEY... sostituzione di una combinazione di tasti

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 28/55

Page 29: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Scrittura dei programmi

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 29/55

Page 30: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

matlab-mode

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 30/55

Page 31: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

matlab-mode

il matlab-mode e un modo maggiore per fare l’editing deidot-file contiene:

editing commentare e scommentare, indentareregioni di testo, completare simboli

navigazione spostarsi tra i comandi, le funzioni e i blocchiinserimento template di funzioni, di blocchi IF...END,

SWITCH...END, CASE,...colorazione del codice secondo la sintassi e verifica

elettrica delle parentesi

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 31/55

Page 32: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Matlab-Mode: comandi di editing

C-c ; Commentare/ScommentareC-c C-f Impaginare i commentiC-c C-q Impaginare codice e commentiM-q IndentareM-TAB Completamento dei simboli MATLAB

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 32/55

Page 33: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Matlab-Mode: Comandi di navigazione

M-a M-e Inizio e fine di un comandoC-M-a C-M-e Inizio e fine di una funzioneC-M-f C-M-b Dopo o prima di un blocco

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 33/55

Page 34: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Matlab-Mode: Comandi di inserimento template:

C-c C-c F Definizione di funzioneC-c C-c i Blocco IF ENDC-c C-c I Blocco IF ELSE ENDC-c C-c f Blocco FOR ENDC-c C-c w Blocco WHILE ENDC-c C-c s Blocco SWITCH ENDC-c C-c t Blocco TRY...CATCH...ENDC-c C-c c Una condizione CASE in uno SWITCH.C-c C-c e Un END che chiude un precedente comando

con un ARG opzionale reindenta il codiceC-c C-c ’ Converte una regione in una stringa corretta-

mente virgolettata

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 34/55

Page 35: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Altri major-mode

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 35/55

Page 36: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Altri ’major-mode’

Sono disponibili molti altri major-mode per tutti i principalilinguaggi di programmazione(C,C++,Java,FORTRAN,F90,Python,Perl,ecc..), ma anche:

speakez-mode speakez.el Spakeasy (parziale)fame-mode fame.el FAME (parziale)

Il progetto Emacs Speaks Statistics fornisce major-modeper i seguenti linguaggi: R/S, SAS, stata,SAS, LispStat, ecc...

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 36/55

Page 37: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Gestione dei processi

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 37/55

Page 38: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

shell-mode

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 38/55

Page 39: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Comandi di shell

Quando i programmi statistici hanno la possibilita diutilizzare una interfaccia a linea di comando possonosempre essere chiamati dallo shell-mode di Emacs. Siavranno gratis tutte le capacita di editing propriedell’editor (che gia cosı sono spesso molto maggiori diquelle dei programmi d’interfaccia grafica di molti diquesti prodotti).

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 39/55

Page 40: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Comandi di shell

E comunque possibile interagire con la shell anche direttamenteda un buffer (senza lanciare un processo dedicato):M-! shell-command

Esegue un comando di shellM-| shell-command-on-region

...su una regione di testoC-u M-!C-u M-! Ritorna il risultato direttamente nel buffer

Per definire quale shell usare si deve configurare la variabileshell-file-name. Ad esempio inserendo in .emacs ilcomando:(setq shell-file-name "/bin/bash")

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 40/55

Page 41: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Comandi singoli di shell

E possibile inserire la seguente riga in un documento

Nel buffer di lavoro

getbiss ’’TCNUSA’’ ; disp TCNUSA

Selezionarla come regione ed usare la seguente combinazione ditasti

Comando emacs

M-| fame -e

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 41/55

Page 42: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

La shell inferiore

Per chiamare un processo di shell interattiva all’interno di unbuffer si possono usare i comandi:M-x shell Shell di sistema

(bash su unix,(CMD su MSDOS, ...)

M-x eshell Emacs shell programmata in Emacs Lisp efunziona uguale in tutti i sistemi

Per definire quale shell usare si deve configurare la variabileshell-file-name. Ad esempio inserendo in .emacs ilcomando:(setq explicit-shell-file-name "/bin/bash")

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 42/55

Page 43: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Comandi di shell

shell su Mac OS X

bash-3.2$

eshell su Mac OS X

Welcome to the Emacs shell/Users/exedre/Work/0-ufficio/Corsi/Emacs/WEMS $

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 43/55

Page 44: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Il buffer della shell

E possibile chiamare numerose shell usando un argomentoprefisso al comando shell

C-u M-x shell

I nomi scelti da Emacs per i buffer saranno *shell*:<n>, ma epossibile indicare un proprio nome sia al momento dell’aperturache utilizzando il comando

M-x rename-buffer

L’inizializzazione della shell avviene tramite il file~/.emacs_SHELL o ~/.emacs.d/init_SHELL.sh (ad esempio~/.emacs_bash o ~/.emacs.d/init_bash.sh)

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 44/55

Page 45: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Ridefinizione tastiera nel processo di shell

<RET> Lancia il comandoC-c C-d Termina la shellC-d Cancella il prossimo carattereC-c C-u Cancella la linea di comandoC-c C-w Cancella una parolaC-c C-c Cancella il comandoC-c C-z Blocca il comandoC-c C- Termina il comandoC-c C-o Elimina l’ultimo outputC-c C-r Vedi outputC-c C-y Copia inputM-p, M-↑ Input precedenteM-n, M-↓ Input successivo<TAB> Completamento dinamico del comando

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 45/55

Page 46: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Emacs Speaks Statistics ess-mode

1 Trattamento dei datiRipetizione dei comandiRicerca delle informazioniRettangoliSostituzioniMacro di tastiera

2 Scrittura dei programmimatlab-modeAltri major-mode

3 Gestione dei processishell-modeEmacs Speaks Statistics ess-mode

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 46/55

Page 47: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Caratteristiche di ESS

indentazione sintattica

evidenziazione dipendente dal contesto

valutazione parziale del codice

completamento degli oggetti

verifica del codice sorgente

interazione con i processi

esecuzione di processi su computer remoti

editing e riuso delle trascrizioni

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 47/55

Page 48: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Utilizzo di ESS

I modi sorgente

Il processo inferiore ESS

La gestione delle trascrizioni

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 48/55

Page 49: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Linguaggi gestiti da ESS

La famiglia dei linguaggi S (tra cui GNU R)

SAS

stata

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 49/55

Page 50: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Perche ESS

perche alcuni linguaggi non hanno un ambiente proprio

quando ce l’hanno e veramente poco efficace

quando e efficace e incompatibile

E comunque Emacs e meglio!

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 50/55

Page 51: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

ESS per l’interazione con i processi

Attivazione del processo ESSM-x R GNU RM-x SAS SASM-x stata stata

Attivare piu processi simultaneiC-u M-x RM-x ess-request-a-process

Processi su computer remotiM-x sshremote$ stataM-x ess-remote

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 51/55

Page 52: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

ESS per l’interazione con i processi

Cambiare l’azione di partenzaM-x set-variable ess-ask-for-ess-directory(setq ess-ask-for-ess-directory nil)

Configurazione(setq ess-ask-about-transfile ’journal.St’)C-u M-x RM-x ess-request-a-process

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 52/55

Page 53: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

ESS per l’interazione con i processi

E modellato sullo shell-mode da cui trae molti comandi tra cui:

Comandi ed errori<RET> inferior-ess-send-inputC-c C-w, M-< backward-kill-wordC-c C-u comint-kill-inputC-c C-a comint-bol

Completamento dei nomi<TAB> comint-dynamic-completeM-? ess-list-object-completion

Nel caso di R completa anche i nomi dei campi dellestrutture, ad esempio: struttura$campo

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 53/55

Page 54: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

ESS per manipolare le trascrizioni

M-{ comint-previous-inputM-} comint-next-inputC-c C-e comint-show-maximum-outputC-c C-r comint-show-outputC-c C-o comint-kill-output

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 54/55

Page 55: Workshop Emacs per la programmazione statistica

WEMS 2008

E. Somma

Trattamentodei dati

Ripetizione deicomandi

Ricerca delleinformazioni

Rettangoli

Sostituzioni

Macro di tastiera

Scrittura deiprogrammi

matlab-mode

Altrimajor-mode

Gestione deiprocessi

shell-mode

Emacs SpeaksStatisticsess-mode

Grazie dell’attenzione

E. Somma (SIA-BdI) WEMS 2008 14/01/2008 55/55