<chapter id="editing">
<title
>Strumenti di editing</title>

<sect1 id="editing-snippets">
<title
>Frammenti di codice</title>

<itemizedlist>
  <title
>Caratteristiche (panoramica preliminare)</title>
  <listitem
><para
>SnippetPart aggiunge un vista che viene agganciata a destra </para
></listitem>
  <listitem
><para
>L'aggiunta, la modifica e la rimozione di frammenti di codice può essere fatta attraverso un menu a comparsa </para
></listitem>
  <listitem
><para
>Facendo doppio clic su una porzione di codice la inserirà nella vista attiva nella posizione attuale del cursore </para
></listitem>
  <listitem
><para
>Gli aiuti mostrano i contenuti di un frammento di codice </para
></listitem>
  <listitem
><para
>I frammenti di codice sono memorizzati nella cartella home, quindi ogni utente può avere i propri. </para
></listitem>
  <listitem
><para
>I frammenti di codice possono contenere variabili sotto forma di $<varname
>NOMEVARIABILE</varname
>$. Quando vengono usati sarà chiesto all'utente di fornire i valori sostitutivi per le variabili </para
></listitem>
</itemizedlist>
</sect1
> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title
>Tasti Speciali</title>
<indexterm zone="keyboardmapping"
><primary
>scorciatorie da tastiera</primary
></indexterm>

<para
>Di seguito verranno elencate le scorciatoie dell'editor di default. Possono essere configurate a piacimento. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Sinistra </keycap
></para
></entry>
<entry
><para
>Si muove di un carattere a sinistra </para
></entry
></row>

<row
><entry
><para
><keycap
>Destra </keycap
></para
></entry>
<entry
><para
>Si muove di un carattere a destra </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Sinistra </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove di una parola a sinistra </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Destra </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove di una parola a destra </para
></entry
></row>

<row
><entry
><para
><keycap
>Su </keycap
></para
></entry>
<entry
><para
>Si muove in alto di una linea </para
></entry
></row>

<row
><entry
><para
><keycap
>Giù </keycap
></para
></entry>
<entry
><para
>Si muove in basso di una linea </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Up </keycap
></para
></entry>
<entry
><para
>Si muove in alto di una pagina </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Down </keycap
></para
></entry>
<entry
><para
>Si muove in basso di una pagina </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Page Down </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove all'inizio del file </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl; <keycap
> Page Down </keycap
></keycombo
></para
></entry>
<entry
><para
>Si muove alla fine del file </para
></entry
></row>

<row
><entry
><para
><keycap
>Home </keycap
></para
></entry>
<entry
><para
>Si muove all'inizio della linea </para
></entry
></row>

<row
><entry
><para
><keycap
>End </keycap
></para
></entry>
<entry
><para
>Si muove alla fine della linea </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>Per tutti le combinazioni sopra elencate, può essere premuto in aggiunta il tasto &Shift; per selezionare dalla posizione attuale a quella seguente. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Backspace </keycap
></para
></entry>
<entry
><para
>Cancella il carattere a sinistra </para
></entry
></row>

<row
><entry
><para
><keycap
>Delete </keycap
></para
></entry>
<entry
><para
>Cancella il carattere sotto al cursore </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl; <keycap
> C </keycap
></keycombo
></para
></entry>
<entry
><para
>Copia il testo selezionato negli appunti </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> V </keycap
></keycombo
></para
></entry>
<entry
><para
>Incolla il testo selezionato negli appunti </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> X </keycap
></keycombo
></para
></entry>
<entry
><para
>Cancella il testo selezionato e lo mette negli appunti </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Annulla </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Shift;&Ctrl;<keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Ripete </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

</sect1
> <!-- keyboardmapping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="editing-reporter">
<title
>Reporter di problema</title>

<para
>(... da scrivere ...) </para>
</sect1
> <!-- editing-reporter -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="searchinggrepping">
<title
>Cercare e usare grep</title>
<indexterm zone="searchinggrepping"
><primary
>cercare</primary
></indexterm>
<indexterm zone="searchinggrepping"
><primary
>trovare</primary
></indexterm>

<sect2 id="searching">
<title
>cercare il testo</title>

<para
><keycombo
>&Ctrl;<keycap
>F</keycap
></keycombo
>- Trova <keycombo
>&Ctrl;<keycap
>R</keycap
></keycombo
>- Sostituisci </para>

</sect2
> <!-- searching -->


<sect2 id="isearch">
<title
>ISearch</title>
<indexterm zone="isearch"
><primary
>isearch</primary
></indexterm>
<indexterm zone="isearch"
><primary
>ricerca incrementale</primary
></indexterm>
<indexterm zone="isearch"
><primary
>ricerca</primary
><secondary
>incrementale</secondary
></indexterm>

<para
>La ricerca tradizionale con il comando <menuchoice
><guimenu
>Modifica</guimenu
> <guimenuitem
>Trova</guimenuitem
></menuchoice
> richiede di specificare l'intero termine da cercare prima di avviare la ricerca. Spesso è molto più veloce cercare in modo incrementale. Se si fa clic nel campo chiamato <guilabel
>ISearch</guilabel
> nella barra degli strumenti, la ricerca verrà effettuata mentre si digita. Spesso il termine desiderato viene trovato dopo aver scritto 3 o 4 lettere. </para>

</sect2
> <!-- isearch -->


<sect2 id="grep">
<title
>Grep</title>
<indexterm zone="grep"
><primary
>ricerca</primary
><secondary
>nei file</secondary
></indexterm>

<para
>Entrambi i meccanismi di ricerca descritti prima sono limitati all'interno di un file sorgente. Attraverso la voce <guimenuitem
>Trova nei file...</guimenuitem
> nel menu <guimenu
>Modifica</guimenu
> è disponibile uno strumento aggiuntivo che permette di cercare attraverso un insieme (anche grande) di file. Fondamentalmente è un frontend per il programma &grep;(1). </para>

<para
>Nella finestra di dialogo si può specificare in quali file effettuare la ricerca. In una casella a scelta multipla sono disponibili parecchi caratteri jolly. In questo modo si può facilmente restringere il meccanismo di ricerca ai file header. Inoltre, si può specificare la directory da dove far partire la ricerca. Se si seleziona la casella <guibutton
>Ricorsivo</guibutton
>, la ricerca proseguirà in tutte le sottodirectory della gerarchia sottostante alla directory specificata. </para>

<para
>Generalmente il termine da cercare è un'espressione regolare che segue la sintassi POSIX. Per esempio, si può usare il termine <literal
>"\&lt;K.*"</literal
> per trovare tutte le parole che iniziano con la lettera K. I seguenti caratteri sono interpretati in maniera speciale: </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry>
  <literal
>.</literal>
</entry
><entry
>Corrisponde ad ogni carattere </entry
></row>
<row
><entry>
  <literal
>^</literal>
</entry
><entry
>Corrisponde all'inizio di una linea </entry
></row>
<row
><entry>
  <literal
>$</literal>
</entry
><entry
>Corrisponde alla fine di una linea </entry
></row>
<row
><entry>
  <literal
>\&lt;</literal>
</entry
><entry
>Corrisponde all'inizio di una parola </entry
></row>
<row
><entry>
  <literal
>\&gt;</literal>
</entry
><entry
>Corrisponde alla fine di una parola </entry
></row>
<row
><entry>
  <literal
>?</literal>
</entry
><entry
>L'elemento precedente è presente meno di una volta </entry
></row>
<row
><entry>
  <literal
>*</literal>
</entry
><entry
>L'elemento precedente è presente zero o più volte </entry
></row>
<row
><entry>
  <literal
>+</literal>
</entry
><entry
>L'elemento precedente è presente una o più volte </entry
></row>
<row
><entry>
  <literal
>{n}</literal>
</entry
><entry
>L'elemento precedente è presente esattamente n volte </entry
></row>
<row
><entry>
  <literal
>{n,}</literal>
</entry
><entry
>L'elemento precedente è presente n o più volte </entry
></row>
<row
><entry>
  <literal
>{,n}</literal>
</entry
><entry
>L'elemento precedente è presente meno di n volte </entry
></row>
<row
><entry>
  <literal
>{n,m}</literal>
</entry
><entry
>L'elemento precedente è presente almeno <literal
>n</literal
> volte ma meno di <literal
>m</literal
> volte </entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>I riferimenti alle espressioni tra parentesi sono disponibili tramite la notazione <literal
>\n</literal
>. </para>

<para
>In aggiunta per i programmatori C++ ci sono alcuni modelli di ricerca tipici. Questi permettono ad esempio di cercare tutte le chiamate alle funzioni membro di un certo oggetto. </para>

<para
>Quando si avvia una ricerca facendo clic sul pulsante <guibutton
>Trova</guibutton
>, essa verrà effettuata da un processo asincrono esterno. Tutti gli elementi trovati appariranno nella vista chiamata <guilabel
>Grep</guilabel
>. Si può saltare direttamente all'elemento trovato facendo clic su di esso. Notare che grep scansiona i file come sono memorizzati nel file system. Se si hanno versioni modificate di questi file nel proprio editor si potrebbero ricevere errori nel numero di linea o alcuni elementi potrebbero non essere validi — si possono evitare questi problemi salvando anticipatamente tutti i file. </para>

</sect2
> <!-- grep -->

</sect1
> <!-- searchinggrepping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="code-completion">
<title
>Completamento del codice</title>

<para
>(... da scrivere ...) </para>
</sect1
> <!-- code-completion -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="newfiles">
<title
>Creare nuovi file e classi</title>

<para
>(... da scrivere ...) </para>

<sect2 id="newfiles-edittemplates">
<title
>Modificare i modelli</title>

<para
>(... da scrivere ...) </para>
</sect2
> <!-- newfiles-edittemplates -->

</sect1
> <!-- newfiles -->

</chapter
> <!-- editing -->
<!-- ====================================================================== -->
