<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 -->
<!-- ====================================================================== -->
