<!--
     The FreeBSD Italian Documentation Project

     $FreeBSD: doc/it_IT.ISO8859-15/books/unix-introduction/editors/chapter.sgml,v 1.1 2003/03/19 18:46:41 trhodes Exp $
-->

<chapter id="editors">
  <title>Editor</title>

  <para>Esistono numerose utility per la manipolazione del testo in Unix, come
    &egrave; stato notato attraverso questo documento (esempio
    &man.ed.1;, &man.ex.1;, &man.sed.1;, &man.awk.1;, la famiglia
    <application>grep</application> e la famiglia
    <application>roff</application>).  Tra gli editor, l'editor visuale (o a
    schermo pieno) standard su Unix &egrave; <application>vi</application>.
    Questa applicazione comprende un super-set, per cos&igrave; dire, di
    caratteristiche di &man.ed.1; e di &man.ex.1; (gli editor a linea di
    Unix).</para>

  <para>&man.vi.1; &egrave; un editor modale.  Questo significa che ha
    modalit&agrave; specifiche che permettono l'inserimento del testo, la
    cancellazione del testo e l'inserimento dei comandi.  Si pu&ograve; lasciare
    la modalit&agrave; di inserimento premendo il tasto <keycap>escape</keycap>.
    In questo modo ci si porta nella modalit&agrave; comando.  L'editor
    di linea &man.ex.1; &egrave; incorporato in &man.vi.1;.  Si pu&ograve;
    passare dalla modalit&agrave; a schermo pieno a quella a linea di comando (e
    viceversa) quando si desidera.  In modalit&agrave; <emphasis>vi</emphasis>
    premere <keycap>Q</keycap> per andare in modalit&agrave;
    <emphasis>ex</emphasis>.  In modalt&agrave; <emphasis>ex</emphasis>, al
    prompt : digitare <command>vi</command> per ritornare in modalit&agrave;
    <emphasis>vi</emphasis>.  Inoltre &egrave; disponibile una modalit&agrave;
    di &man.vi.1; in sola lettura, che pu&ograve; essere invocata con
    &man.view.1;.</para>

  <para>Un altro editor comune nei sistemi Unix, specialmente nei college e
    negli ambienti universitari, &egrave; <application>emacs</application> (che
    sta per <quote>editing macros</quote>).  Mentre &man.vi.1; &egrave; in
    generale compreso nel sistema operativo Unix, &man.emacs.1; usualmente non
    lo &egrave;.  <application>Emacs</application> viene distribuito dalla Free
    Software Foundation ed &egrave; discutibilmente il pi&ugrave; potente editor
    disponibile per Unix.  <application>Emacs</application> &egrave; un software
    di sistema molto grande ed &egrave; un grossa risorsa di sistema per un
    utente di computer.</para>

  <para>La Free Software Foundation e il progetto GNU (del quale
    <application>emacs</application> fa parte) sono stati fondati da Richard
    Stallman e dai suoi soci, i quali credono (come specificato nel manifesto
    GNU) che condividere il software sia <quote>l'atto fondamentale di amicizia
    tra programmatori</quote>.  La loro General Public License garantisce il
    diritto d'uso, di modifica e di distribuzione di
    <application>emacs</application> (incluso il suo codice sorgente) ed
    &egrave; stata progettata specificatamente per impedire a qualcuno di
    prendersi un profitto finanziario da <application>emacs</application> o da
    altri software conseguiti attraverso la Free Software Foundation.  Molti dei
    loro software, incluso <application>emacs</application>, sono disponibili
    via <ulink url="ftp://ftp.gnu.org/pub/gnu/"><hostid
      role="fqdn">ftp://ftp.gnu.org/pub/gnu/</hostid></ulink> e
    <ulink url="http://www.gnu.org/"><hostid
      role="fqdn">http://www.gnu.org/</hostid></ulink>.</para>

  <para>Sia &man.vi.1; che &man.emacs.1; permettono di creare file di
    inizializzazione che possono contenere macro per controllare i settaggi e le
    funzioni degli editor.</para>

  <sect1 id="editors-vi">
    <title>Configurare la propria sessione vi</title>

    <para>Per configurare l'ambiente di &man.vi.1; certe opzioni possono essere
      settate con il comando di linea dell'editor <command>:set</command>
      durante una sessione di editing.  In alternativa, le opzioni usate di
      frequente possono essere automaticamente settate quando viene invocato
      &man.vi.1;, attraverso il file <filename>.exrc</filename>.  Inoltre,
      questo file pu&ograve; contenere macro per mappare battute di tasti in
      funzioni usando la funzione <command>map</command>.  All'interno di
      &man.vi.1; queste macro possono essere definite con il comando
      <command>:map</command>.  I caratteri di controllo possono essere inseriti
      digitando prima <keycombo action="simul">
        <keycap>Ctrl</keycap>
        <keycap>V</keycap>
      </keycombo>, quindi il carattere di controllo desiderato.  Alcune opzioni
      disponibili in &man.vi.1; sono mostrate qui sotto.  Alcuni sistemi Unix
      non accettano certe di queste opzioni.</para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="2in">

        <tbody>
          <row>
            <entry><command>:set all</command></entry>

            <entry>visualizza tutti i settaggi delle opzioni</entry>
          </row>

          <row>
            <entry><command>:set ignorecase</command></entry>

            <entry>ignora il maiuscolo e minuscolo di un carattere in una
              ricerca</entry>
          </row>

          <row>
            <entry><command>:set list</command></entry>

            <entry>visualizza tab e return</entry>
          </row>

          <row>
            <entry><command>:set nolist</command></entry>

            <entry>mette off l'opzione <option>list</option></entry>
          </row>

          <row>
            <entry><command>:set number</command></entry>

            <entry>visualizza i numeri di linea</entry>
          </row>

          <row>
            <entry><command>:set nonumber</command></entry>

            <entry>disattiva i numeri di linea</entry>
          </row>

          <row>
            <entry><command>:set showmode</command></entry>

            <entry>visualizza l'indicazione che la modalit&agrave; di
              inserimento &egrave; on</entry>
          </row>

          <row>
            <entry><command>:set noshowmode</command></entry>

            <entry>mette off l'opzione <option>showmode</option></entry>
          </row>

          <row>
            <entry><command>:set
                wrapmargin=<replaceable>n</replaceable></command></entry>

            <entry>mette on la modalit&agrave; word-wrap a
              <replaceable>n</replaceable> spazi dal margine destro</entry>
          </row>

          <row>
            <entry><command>:set wrapmargin=0</command></entry>

            <entry>mette off l'opzione <option>wrapmargin</option></entry>
          </row>

          <row>
            <entry><command>:set warn</command></entry>

            <entry>visualizza l'avvertimento <quote>Ultima modifica non
                registrata</quote></entry>
          </row>

          <row>
            <entry><command>:set nowarn</command></entry>

            <entry>mette off l'avvertimento di scrittura
              <option>warn</option></entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para>Segue un esempio di file <filename>.exrc</filename>:</para>

    <programlisting>set wrapmargin=10
set number
set list
set warn
set ignorecase
map K {!}fmt -80        # riformatta questo paragrafo, {!}, usando fmt a
                        # 80 caratteri per linea
map ^Z :!spell          # invoca spell, :!, per verificare lo splelling di
                        # una parola (ritorna a vi con Ctrl+D)</programlisting>
  </sect1>

  <sect1 id="editors-emacs">
    <title>Configurare la propria sessione emacs</title>

    <para>Configurare l'ambiente di &man.emacs.1; equivale a creare chiamate a
      funzioni LISP.  &man.emacs.1; &egrave; infinitamente personalizzabile
      tramite variabili <emphasis>emacs</emphasis>, funzioni built-in e
      attraverso la programmazione Emacs LISP.  I settaggi possono essere
      specificati dal minibuffer (o da linea di comando) durante una sessione
      <emphasis>emacs</emphasis>.  Alternativamente, i settaggi usati di
      frequente possono essere attivati automaticamente quando viene invocato
      &man.emacs.1;, usando il file <filename>.emacs</filename>.  Bench&egrave;
      una discussione del Emacs LISP vada oltre lo scopo di questo documento,
      seguono alcuni esempi di configurazioni per &man.emacs.1;.</para>

    <para>Per settare o verificare variabili <emphasis>emacs</emphasis> o per
      usare le sue funzioni built-in, si usa il tasto <keycap>escape</keycap>
      (<emphasis>Meta</emphasis> &egrave; come &man.emacs.1; si riferisce a
      questo) seguito dalla lettera <keycap>x</keycap>, quindi la variabile o
      la funzione e i suoi argomenti.</para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="3in">

        <tbody>
          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                what-line</command></entry>

            <entry>quale linea &egrave; sul cursore?</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                auto-fill-mode</command></entry>

            <entry>mette on word-wrap</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                auto-fill-mode</command></entry>

            <entry>mette off word-wrap</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                set-variable <keycap>&lt;return&gt;</keycap>
                fill-column <keycap>&lt;return&gt;</keycap> 45</command></entry>

            <entry>setta la lunghezza di linea a 45 caratteri</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                set-variable <keycap>&lt;return&gt;</keycap>
                auto-save-interval <keycap>&lt;return&gt;</keycap>
                300</command></entry>

            <entry>salva automaticamente il file ogni 300 battute di
              tasti</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                goto-line <keycap>&lt;return&gt;</keycap>
                16</command></entry>

            <entry>muove il cursore alla linea 16</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                help-for-help</command></entry>

            <entry>invoca l'help di emacs quando <keycombo action="simul">
                <keycap>Ctrl</keycap>
                <keycap>h</keycap>
              </keycombo> &egrave; stato mappato al tasto
              <keycap>backspace</keycap></entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para>Segue un esempio del file <filename>.emacs</filename>:</para>

    <programlisting>(message "Loading ~/.emacs...")
; I commenti iniziano con un punto e virgola e continuano fino alla fine della linea.
(setq text-mode-hook 'turn-on-auto-fill) ;mette on word-wrap
(setq fill-column 45)            ;lunghezza di linea pari a 45 caratteri
(setq auto-save-interval 300)        ;salva il file ogni 300 battute di tasti
; Costruisce (o mappa) la funzione di rubout (Ctrl+h) nel tasto backspace
(global-set-key "\C-h" 'backward-delete-char-untabify)
; Costruisce la funzione help emacs per la sequenza di battitura "Ctrl+x ?"
(global-set-key "\C-x?" 'help-for-help)
; Per saltare alla linea 16, digitare  M, #&lt;return&gt;16
(global-set-key "\M-#" 'goto-line)
; Per sapere su che linea si &egrave;, digitare M, n
(global-set-key "\M-n" 'what-line)
(message "~/.emacs loaded.")
(message "")</programlisting>
  </sect1>

  <sect1 id="editors-vi-guide">
    <title>Veloce guida per vi</title>

    <para>Tutti i comandi in &man.vi.1; sono preceduti dalla pressione del tasto
      <keycap>escape</keycap>.  Ogni volta che si deve intraprendere un nuovo
      comando si deve utilizzare il tasto di <keycap>escape</keycap>.
      Diversamente da dove indicato, &man.vi.1; &egrave; case sensitive
      (sensibile alla differenza minuscolo e maiuscolo).</para>

    <para><emphasis>Comandi movimento cursore:</emphasis></para>

    <para>(<replaceable>n</replaceable>) indica un numero ed &egrave;
      opzionale</para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>h</keycap></command></entry>

            <entry>(<replaceable>n</replaceable>) spazi a sinistra</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>j</keycap></command></entry>

            <entry>(<replaceable>n</replaceable>) spazi gi&ugrave;</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>k</keycap></command></entry>

            <entry>(<replaceable>n</replaceable>) spazi su</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>l</keycap></command></entry>

            <entry>(<replaceable>n</replaceable>) spazi a destra</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para>(Generalmente funzionano anche i tasti freccia)</para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>F</keycap>
                </keycombo></command></entry>

            <entry>avanti di una schermata</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>B</keycap>
                </keycombo></command></entry>

            <entry>indietro di una schermata</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>D</keycap>
                </keycombo></command></entry>

            <entry>gi&ugrave; di mezza schermata</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>U</keycap>
                </keycombo></command></entry>

            <entry>su di mezza schermata</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para>(<keycap>Ctrl</keycap> indica il tasto <keycap>control</keycap>; il
      case sensitive non &egrave; importante)</para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycap>H</keycap></command></entry>

            <entry>all'inizio della linea superiore della schermata</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap></command></entry>

            <entry>all'inizio della linea mediana della schermata</entry>
          </row>

          <row>
            <entry><command><keycap>L</keycap></command></entry>

            <entry>all'inizio dell'ultima linea della schermata</entry>
          </row>

          <row>
            <entry><command><keycap>G</keycap></command></entry>

            <entry>all'inizio dell'ultima linea del file</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>G</keycap></command></entry>

            <entry>all'inizio della linea (<replaceable>n</replaceable>)</entry>
          </row>

          <row>
            <entry><command><keycap>0</keycap></command></entry>

            <entry>(zero) all'inizio della linea</entry>
          </row>

          <row>
            <entry><command><keycap>$</keycap></command></entry>

            <entry>alla fine della linea</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>w</keycap></command></entry>

            <entry>avanti (<replaceable>n</replaceable>) parole</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>b</keycap></command></entry>

            <entry>indietro (<replaceable>n</replaceable>) parole</entry>
          </row>

          <row>
            <entry><command><keycap>e</keycap></command></entry>

            <entry>fine della parola</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Inserimento testo:</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycap>i</keycap></command></entry>

            <entry>inserimento testo prima del cursore</entry>
          </row>

          <row>
            <entry><command><keycap>a</keycap></command></entry>

            <entry>aggiunta testo dopo il cursore (non sovrascrive altro
              testo)</entry>
          </row>

          <row>
            <entry><command><keycap>I</keycap></command></entry>

            <entry>inserimento testo all'inizio della linea</entry>
          </row>

          <row>
            <entry><command><keycap>A</keycap></command></entry>

            <entry>aggiunta testo alla fine della linea</entry>
          </row>

          <row>
            <entry><command><keycap>r</keycap></command></entry>

            <entry>sostituisce il carattere posto sotto il cursore con il
              prossimo carattere digitato</entry>
          </row>

          <row>
            <entry><command><keycap>R</keycap></command></entry>

            <entry>sovrascrive i caratteri fino alla fine della linea (o fino a
              quando il tasto <keycap>escape</keycap> viene digitato per
              cambiare comando)</entry>
          </row>

          <row>
            <entry><command><keycap>o</keycap></command></entry>

            <entry>(alpha o) inserisce una nuova linea dopo la linea corrente
              per inserire del testo</entry>
          </row>

          <row>
            <entry><command><keycap>O</keycap></command></entry>

            <entry>(alpha O) inserisce una nuova linea prima della linea
              corrente per inserire del testo</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Cancellazione testo:</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycap>dd</keycap></command></entry>

            <entry>cancella la linea corrente</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>dd</keycap></command></entry>

            <entry>cancella (<replaceable>n</replaceable>) linee</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>dw</keycap></command></entry>

            <entry>cancella (<replaceable>n</replaceable>) parole</entry>
          </row>

          <row>
            <entry><command><keycap>D</keycap></command></entry>

            <entry>cancella dal cursore fino alla fine della linea</entry>
          </row>

          <row>
            <entry><command><keycap>x</keycap></command></entry>

            <entry>cancella il carattere corrente</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>x</keycap></command></entry>

            <entry>cancella (<replaceable>n</replaceable>) caratteri</entry>
          </row>

          <row>
            <entry><command><keycap>X</keycap></command></entry>

            <entry>cancella il carattere precedente</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Comandi di modifica:</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>cc</keycap></command></entry>

            <entry>modifica (<replaceable>n</replaceable>) caratteri sulla linea
              fino alla fine della linea (o fino a quando viene digitato il
              tasto <keycap>escape</keycap>)</entry>
          </row>

          <row>
            <entry><command><keycap>cw</keycap></command></entry>

            <entry>modifica i caratteri di una parola fino alla fine della
              parola (o fino a quando viene digitato il tasto
              <keycap>escape</keycap>)</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>cw</keycap></command></entry>

            <entry>modifica i caratteri delle prossime
              (<replaceable>n</replaceable>) parole</entry>
          </row>

          <row>
            <entry><command><keycap>c$</keycap></command></entry>

            <entry>modifica il testo alla fine della linea</entry>
          </row>

          <row>
            <entry><command><keycap>ct</keycap>(<replaceable>x</replaceable>)</command></entry>

            <entry>modifica il testo alla lettera
              (<replaceable>x</replaceable>)</entry>
          </row>

          <row>
            <entry><command><keycap>C</keycap></command></entry>

            <entry>modifica il testo rimanente sulla linea corrente (fino a
              quando viene digitato il tasto <keycap>escape</keycap>)</entry>
          </row>

          <row>
            <entry><command><keycap>~</keycap></command></entry>

            <entry>modifica il minuscolo/maiuscolo del carattere
              corrente</entry>
          </row>

          <row>
            <entry><command><keycap>J</keycap></command></entry>

            <entry>unisce la linea corrente a quella successiva</entry>
          </row>

          <row>
            <entry><command><keycap>u</keycap></command></entry>

            <entry>annulla l'ultimo comando realizzato sulla linea
              corrente</entry>
          </row>

          <row>
            <entry><command><keycap>.</keycap></command></entry>

            <entry>ripete l'ultima modifica</entry>
          </row>

          <row>
            <entry><command><keycap>s</keycap></command></entry>

            <entry>sostituisce il carattere corrente con il testo
              digitato</entry>
          </row>

          <row>
            <entry><command><keycap>S</keycap></command></entry>

            <entry>sostituisce la linea corrente con il testo digitato</entry>
          </row>

          <row>
            <entry><command>:s</command></entry>

            <entry>sostituisce vecchie parole con nuove parole
              <command>:&lt;linee considerate&gt;
                s/vecchio/nuovo/g</command></entry>
          </row>

          <row>
            <entry><command><keycap>&amp;</keycap></command></entry>

            <entry>ripete l'ultimo comando di sostituzione
              (<command>:s</command>)</entry>
          </row>

          <row>
            <entry><command>(<replaceable>n</replaceable>)<keycap>yy</keycap></command></entry>

            <entry><quote>strappa</quote> (<replaceable>n</replaceable>) linee
              dal buffer</entry>
          </row>

          <row>
            <entry><command><keycap>y</keycap>(<replaceable>n</replaceable>)<keycap>w</keycap></command></entry>

            <entry><quote>strappa</quote> (<replaceable>n</replaceable>) parole
              dal buffer</entry>
          </row>

          <row>
            <entry><command><keycap>p</keycap></command></entry>

            <entry>inserisce il testo eliminato o <quote>strappato</quote> dopo
              il cursore</entry>
          </row>

          <row>
            <entry><command><keycap>P</keycap></command></entry>

            <entry>inserisce il testo eliminato o <quote>strappato</quote> prima
              del cursore</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Manipolazione file:</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command>:w
                (<replaceable>file</replaceable>)</command></entry>

            <entry>scrive i cambiamenti nel file specificato (file corrente di
              default)</entry>
          </row>

          <row>
            <entry><command>:wq</command></entry>

            <entry>scrive i cambiamenti nel file corrente e conclude la sessione
              di editing</entry>
          </row>

          <row>
            <entry><command>:w!
                (<replaceable>file</replaceable>)</command></entry>

            <entry>sovrascrive il file (file corrente di default)</entry>
          </row>

          <row>
            <entry><command>:q</command></entry>

            <entry>esce dalla sessione di editing se non sono stati creati
              cambiamenti</entry>
          </row>

          <row>
            <entry><command>:q!</command></entry>

            <entry>esce dalla sessione di editing e scarta eventuali
              cambiamenti non salvati</entry>
          </row>

          <row>
            <entry><command>:n</command></entry>

            <entry>edita il prossimo file nella lista dell'argomento</entry>
          </row>

          <row>
            <entry><command>:f
                (<replaceable>nome</replaceable>)</command></entry>

            <entry>modifica il nome del file corrente in quello
              specificato</entry>
          </row>

          <row>
            <entry><command>:r
                (<replaceable>file</replaceable>)</command></entry>

            <entry>legge il contenuto del file specificato all'interno del
              corrente editing e alla corrente posizione del cursore
              (inserisce un file)</entry>
          </row>

          <row>
            <entry><command>:!(<replaceable>comando</replaceable>)</command></entry>

            <entry>escape di shell</entry>
          </row>

          <row>
            <entry><command>:r!(<replaceable>comando</replaceable>)</command></entry>

            <entry>inserisce il risultato del comando di shell specificato nella
              posizione corrente</entry>
          </row>

          <row>
            <entry><keycap>ZZ</keycap></entry>

            <entry>scrive i cambiamenti nel file corrente ed esce</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>
  </sect1>

  <sect1 id="editors-emacs-guide">
    <title>Veloce guida per emacs</title>

    <para>I comandi di &man.emacs.1; sono realizzati sia tramite la
      simultanea pressione del tasto <keycap>control</keycap> (indicato da
      <keycombo action="simul">
        <keycap>Ctrl</keycap>
        <keycap></keycap>
      </keycombo>), sia attraverso il primo colpo del tasto di
      <keycap>escape</keycap> (indicato da <keycap>M</keycap>,).</para>

    <para><emphasis>Comandi essenziali</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>h</keycap>
                </keycombo></command></entry>

            <entry>help</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycap>u</keycap></command></entry>

            <entry>undo (annulla operazione precedente)</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>g</keycap>
                </keycombo></command></entry>

            <entry>esce dalla operazione o comando corrente</entry>
          </row>

          <row>
              <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>s</keycap>
                </keycombo></command></entry>

            <entry>salva il file</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>c</keycap>
                </keycombo></command></entry>

            <entry>chiude &man.emacs.1;</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Movimenti cursore</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>f</keycap>
                </keycombo></command></entry>

            <entry>avanti di un carattere</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>b</keycap>
                </keycombo></command></entry>

            <entry>indietro di un carattere</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>p</keycap>
                </keycombo></command></entry>

            <entry>linea precedente</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>n</keycap>
                </keycombo></command></entry>

            <entry>linea successiva</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>a</keycap>
                </keycombo></command></entry>

            <entry>inizio linea</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>e</keycap>
                </keycombo></command></entry>

            <entry>fine linea</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>l</keycap>
                </keycombo></command></entry>

            <entry>al centro della corrente linea sullo schermo</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>v</keycap>
                </keycombo></command></entry>

            <entry>sfoglia avanti</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>v</keycap></command></entry>

            <entry>sfoglia indietro</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>f</keycap></command></entry>

            <entry>avanti di una parola</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>b</keycap></command></entry>

            <entry>indietro di una parola</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>a</keycap></command></entry>

            <entry>inizio periodo</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>e</keycap></command></entry>

            <entry>fine periodo</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>{</keycap></command></entry>

            <entry>inizio paragrafo</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>}</keycap></command></entry>

            <entry>fine paragrafo</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>&lt;</keycap></command></entry>

            <entry>inizio buffer</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>&gt;</keycap></command></entry>

            <entry>fine buffer</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para><emphasis>Altre funzioni importanti</emphasis></para>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycap>M</keycap>,
                (<replaceable>n</replaceable>)</command></entry>

            <entry>ripete il prossimo comando (<replaceable>n</replaceable>)
              volte</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>d</keycap>
                </keycombo></command></entry>

            <entry>cancella un carattere</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>d</keycap></command></entry>

            <entry>cancella una parola</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>k</keycap>
                </keycombo></command></entry>

            <entry>elimina linea</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>k</keycap></command></entry>

            <entry>elimina periodo</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>s</keycap>
                </keycombo></command></entry>

            <entry>ricerca in avanti</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>r</keycap>
                </keycombo></command></entry>

            <entry>ricerca al rovescio</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>%</keycap></command></entry>

            <entry>sostituzione di query</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>c</keycap></command></entry>

            <entry>capitalizza parola</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>u</keycap></command></entry>

            <entry>parola in lettere maiuscole</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>l</keycap></command></entry>

            <entry>parola in lettere minuscole</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>t</keycap>
                </keycombo></command></entry>

            <entry>commuta caratteri</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>t</keycap></command></entry>

            <entry>commuta parole</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>@</keycap>
                </keycombo></command></entry>

            <entry>marca l'inizio di una regione</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>w</keycap>
                </keycombo></command></entry>

            <entry>taglia/cancella tutto dalla marcatura al punto</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>y</keycap>
                </keycombo></command></entry>

            <entry>incolla il testo eliminato o <quote>strappato</quote>
              all'interno della locazione corrente</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>q</keycap></command></entry>

            <entry>riformatta il paragrafo</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>g</keycap></command></entry>

            <entry>riformatta ogni paragrafo nella regione</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="4.5in">

        <tbody>
          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap>
                auto-fill-mode</command></entry>

            <entry>mette on word wrap</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap> set-variable
                <keycap>&lt;return&gt;</keycap> fill-column
                <keycap>&lt;return&gt;</keycap> 45</command></entry>

            <entry>setta la lunghezza di linea a 45 caratteri</entry>
          </row>

          <row>
            <entry><command><keycap>M</keycap>, <keycap>x</keycap> goto-line
                <keycap>&lt;return&gt;</keycap> 16</command></entry>

            <entry>muove il cursore alla linea 16</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <informaltable frame="none">
      <tgroup cols="2">
        <colspec colwidth="1.5in">

        <tbody>
          <row>
            <entry><command><keycap>M</keycap>,
                <keycap>w</keycap></command></entry>

            <entry>copia la regione marcata</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>f</keycap>
                </keycombo></command></entry>

            <entry>cerca un file e lo legge</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>v</keycap>
                </keycombo></command></entry>

            <entry>cerca e legge un file alternativo</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycap>i</keycap></command></entry>

            <entry>inserisce un file alla posizione corrente</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>s</keycap>
                </keycombo></command></entry>

            <entry>salva il file</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>w</keycap>
                </keycombo></command></entry>

            <entry>scrive il buffer in un file differente</entry>
          </row>

          <row>
            <entry><command><keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>x</keycap>
                </keycombo>, <keycombo action="simul">
                  <keycap>Ctrl</keycap>
                  <keycap>c</keycap>
                </keycombo></command></entry>

            <entry>esce da &man.emacs.1; e chiede di salvare</entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "book" "chapter")
     End:
-->