<chapter id="editing">
<title>Herramientas de edición</title>

<sect1 id="editing-snippets">
<title>Fragmentos de código</title>

<itemizedlist>
  <title>Características (visión general)</title>
  <listitem><para>SnippetPart añade una vista de herramientas que se ancla a la derecha de forma predeterminada </para></listitem>
  <listitem><para>Es posible añadir, editar y eliminar fragmentos de código mediante un menú desplegable </para></listitem>
  <listitem><para>Si hace doble clic sobre un fragmento de la lista, se inserta en la vista activa, en la posición actual del cursor </para></listitem>
  <listitem><para>Las ayudas emergentes muestran el contenido del fragmento de código </para></listitem>
  <listitem><para>Los fragmentos de código se almacenan en la carpeta del usuario, de modo que cada usuario puede tener sus propios fragmentos </para></listitem>
  <listitem><para>Los fragmentos de código pueden contener variables con el formato $<varname>NOMBREDEVARIABLE</varname>$. Al usar el fragmento se le solicita al usuario que introduzca el valor de las variables </para></listitem>
</itemizedlist>
</sect1> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title>Mapa del teclado</title>
<indexterm zone="keyboardmapping"><primary>accesos rápidos</primary></indexterm>

<para>A continuación listaremos los accesos rápidos de teclado predeterminados para el editor predeterminado. Los puede configurar según sus preferencias (¿cómo?) </para>

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

<row><entry><para><keycap>Izquierda </keycap></para></entry>
<entry><para>Mueve un carácter a la izquierda </para></entry></row>

<row><entry><para><keycap>Derecha </keycap></para></entry>
<entry><para>Mueve un carácter a la derecha </para></entry></row>

<row><entry><para><keycombo>&Ctrl;<keycap> Izquierda </keycap></keycombo></para></entry>
<entry><para>Mueve una palabra a la izquierda </para></entry></row>

<row><entry><para><keycombo>&Ctrl;<keycap> Derecha </keycap></keycombo></para></entry>
<entry><para>Mueve una palabra a la derecha </para></entry></row>

<row><entry><para><keycap>Arriba </keycap></para></entry>
<entry><para>Mueve una línea hacia arriba </para></entry></row>

<row><entry><para><keycap>Abajo </keycap></para></entry>
<entry><para>Mueve una línea hacia abajo </para></entry></row>

<row><entry><para><keycap>RePág </keycap></para></entry>
<entry><para>Retrocede una página </para></entry></row>

<row><entry><para><keycap>AvPág </keycap></para></entry>
<entry><para>Avanza una página </para></entry></row>

<row><entry><para><keycombo>&Ctrl;<keycap> RePág </keycap></keycombo></para></entry>
<entry><para>Salta al principio del archivo </para></entry></row>

<row><entry><para><keycombo>&Ctrl; <keycap> AvPág </keycap></keycombo></para></entry>
<entry><para>Salta al final del archivo </para></entry></row>

<row><entry><para><keycap>Inicio </keycap></para></entry>
<entry><para>Salta al inicio de la línea </para></entry></row>

<row><entry><para><keycap>Fin </keycap></para></entry>
<entry><para>Salta al final de la línea </para></entry></row>

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

<para>Se puede pulsar la tecla &Shift; junto con cualquiera de las teclas anteriores para marcar desde la posición actual del cursor hasta un punto posterior. </para>

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

<row><entry><para><keycap>Retroceso </keycap></para></entry>
<entry><para>Elimina el carácter situado a la izquierda </para></entry></row>

<row><entry><para><keycap>Supr </keycap></para></entry>
<entry><para>Elimina el carácter bajo el cursor </para></entry></row>

<row><entry><para><keycombo>&Ctrl; <keycap> C </keycap></keycombo></para></entry>
<entry><para>Copia el texto seleccionado en el portapapeles </para></entry></row>

<row><entry><para><keycombo>&Ctrl;<keycap> V </keycap></keycombo></para></entry>
<entry><para>Pega el texto del portapapeles </para></entry></row>

<row><entry><para><keycombo>&Ctrl;<keycap> X </keycap></keycombo></para></entry>
<entry><para>Elimina el texto seleccionado y lo pone en el portapapeles </para></entry></row>

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

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

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

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

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

<sect1 id="editing-reporter">
<title>El informador de fallos</title>

<para>(... pendiente de escribir ...) </para>
</sect1> <!-- editing-reporter -->

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

<sect1 id="searchinggrepping">
<title>Búsqueda y uso de la herramienta «grep»</title>
<indexterm zone="searchinggrepping"><primary>buscar</primary></indexterm>
<indexterm zone="searchinggrepping"><primary>encontrar</primary></indexterm>

<sect2 id="searching">
<title>Búsqueda de texto</title>

<para><keycombo>&Ctrl;<keycap>F</keycap></keycombo>- Buscar <keycombo>&Ctrl;<keycap>R</keycap></keycombo>- Reemplazar </para>

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


<sect2 id="isearch">
<title>ISearch</title>
<indexterm zone="isearch"><primary>isearch</primary></indexterm>
<indexterm zone="isearch"><primary>búsqueda incremental</primary></indexterm>
<indexterm zone="isearch"><primary>buscar</primary><secondary>incremental</secondary></indexterm>

<para>La búsqueda convencional con <menuchoice><guimenu>Editar</guimenu> <guimenuitem>Buscar</guimenuitem></menuchoice> requiere que especifique el término completo a buscar antes de comenzar. La mayoría de veces resulta mucho más rápido buscar incrementalmente. Si pulsa sobre el campo de edición etiquetado <guilabel>ISearch</guilabel> que hay en la barra de herramientas, la búsqueda se realiza mientras escribe. A menudo encontrará el término deseado tras escribir 3 ó 4 letras. </para>

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


<sect2 id="grep">
<title>Grep</title>
<indexterm zone="grep"><primary>buscar</primary><secondary>en archivos</secondary></indexterm>

<para>Los dos mecanismos de búsqueda descritos se limitan a buscar dentro de un único archivo de texto. Pero dispone de una herramienta adicional que le permite buscar en un conjunto (posiblemente grande) de archivos en la opción <guimenuitem>Buscar en archivos...</guimenuitem> del menú <guimenu>Editar</guimenu>. Consiste básicamente en una interfaz para el programa &grep;(1). </para>

<para>En el diálogo, puede especificar en qué archivos se va a buscar. Dispone de cierto número de patrones de comodines en una lista desplegable. De este modo puede restringir fácilmente el mecanismo de búsqueda, por ejemplo, a archivos de cabecera. También puede especificar una carpeta donde iniciar la búsqueda. Si marca la opción <guibutton>Recursivo</guibutton>, la búsqueda se realiza en toda la jerarquía de carpetas que existe bajo la de inicio. </para>

<para>El término a buscar es generalmente una expresión regular que sigue la sintaxis POSIX. Por ejemplo, puede usar el término <literal>"\&lt;K.*"</literal> si quiere encontrar todas las palabras que comiencen con la letra «K». Los siguientes caracteres se interpretan de un modo especial: </para>

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

<row><entry>
  <literal>.</literal>
</entry><entry>Representa cualquier carácter </entry></row>
<row><entry>
  <literal>^</literal>
</entry><entry>Representa el inicio de una línea </entry></row>
<row><entry>
  <literal>$</literal>
</entry><entry>Representa el final de una línea </entry></row>
<row><entry>
  <literal>\&lt;</literal>
</entry><entry>Representa el principio de una palabra </entry></row>
<row><entry>
  <literal>\&gt;</literal>
</entry><entry>Representa el final de una palabra </entry></row>
<row><entry>
  <literal>?</literal>
</entry><entry>El elemento anterior representa menor que una vez </entry></row>
<row><entry>
  <literal>*</literal>
</entry><entry>El elemento anterior representa cero o más veces </entry></row>
<row><entry>
  <literal>+</literal>
</entry><entry>El elemento anterior representa una o más veces </entry></row>
<row><entry>
  <literal>{n}</literal>
</entry><entry>El elemento anterior representa exactamente «n» veces </entry></row>
<row><entry>
  <literal>{n,}</literal>
</entry><entry>El elemento anterior representa «n» o más veces </entry></row>
<row><entry>
  <literal>{,n}</literal>
</entry><entry>El elemento anterior representa menos de «n» veces </entry></row>
<row><entry>
  <literal>{n,m}</literal>
</entry><entry>El elemento anterior representa al menos <literal>n</literal> veces, pero menos de <literal>m</literal> veces </entry></row>

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

<para>Las referencias a subexpresiones entre paréntesis también se pueden realizar mediante la notación <literal>\n</literal>. </para>

<para>Como añadido especial, los programadores de C++ disponen de varias plantillas de búsqueda de patrones típicos, que le permiten buscar, por ejemplo, todas las llamadas a funciones miembro de un objeto determinado. </para>

<para>Una vez que ha comenzado la búsqueda tras pulsar el botón <guibutton>Buscar</guibutton>, esta se llevará a cabo por un proceso externo asíncrono. Todos los elementos encontrados aparecerán en la vista denominada <guilabel>Grep</guilabel>. A continuación podrá ir a un elemento encontrado pulsando sobre él. Tenga en cuenta que «grep» procesa los archivos tal y como los almacena el sistema de archivos. Si tiene versiones modificadas de ellos en su editor, cabe la posibilidad de que el número de línea sea erróneo, o de que algunos elementos encontrados sean incorrectos. Puede evitar esta situación si guarda previamente todos los archivos abiertos. </para>

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

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

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

<sect1 id="code-completion">
<title>Terminación de código</title>

<para>(... pendiente de escribir ...) </para>
</sect1> <!-- code-completion -->

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

<sect1 id="newfiles">
<title>Creación de archivos y clases nuevas</title>

<para>(... pendiente de escribir ...) </para>

<sect2 id="newfiles-edittemplates">
<title>Edición de las plantillas</title>

<para>(... pendiente de escribir ...) </para>
</sect2> <!-- newfiles-edittemplates -->

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

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