magit; sphinx GNU/Emacs 29.1

Confirmación (commit) tanomarcelo-git
This commit is contained in:
tanomarcelo 2023-12-23 12:26:38 -03:00
parent 4ed4a53fa0
commit 6da7972a24
85 changed files with 1952 additions and 9645 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,67 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Sun Jul 23 18:39:53 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>pass</title>
</head>
<body>
<h1 align="center">pass</h1>
<a href="#NOMBRE">NOMBRE</a><br>
<a href="#SINOPSIS">SINOPSIS</a><br>
<a href="#DESCRIPCI&#211;N">DESCRIPCI&#211;N</a><br>
<hr>
<h2>NOMBRE
<a name="NOMBRE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">pass -
almacena, recupera, genera y sincroniza las
contrase&#241;as de forma segura</p>
<h2>SINOPSIS
<a name="SINOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">pass [
<i>COMANDO</i> ] [ <i>OPCIONES</i> ]... [ <i>ARGUMENTOS</i>
]...</p>
<h2>DESCRIPCI&#211;N
<a name="DESCRIPCI&#211;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>Pass</b> es
un almac&#233;n de
contrase&#241;as muy simple que mantiene
contrase&#241;as dentro de <b>gpg2</b>
(1) archivos cifrados dentro de un
&#225;rbol de directorio simple que
reside en <i>~/.password-store.</i> Esta utilidad
proporciona una serie de comandos para manipular el
almac&#233;n de
contrase&#241;as, lo que permite al
usuario agregar, eliminar, editar, sincronizar, generar y
manipular contrase&#241;as.</p>
<hr>
</body>
</html>

View File

@ -0,0 +1,64 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Sun Jul 23 18:04:11 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>pass</title>
</head>
<body>
<h1 align="center">pass</h1>
<a href="#NOMBRE">NOMBRE</a><br>
<a href="#SINOPSIS">SINOPSIS</a><br>
<a href="#DESCRIPCI&Oacute;N">DESCRIPCI&Oacute;N</a><br>
<hr>
<h2>NOMBRE
<a name="NOMBRE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">pass -
almacena, recupera, genera y sincroniza las
contrase&ntilde;as de forma segura</p>
<h2>SINOPSIS
<a name="SINOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">pass [
<i>COMANDO</i> ] [ <i>OPCIONES</i> ]... [ <i>ARGUMENTOS</i>
]...</p>
<h2>DESCRIPCI&Oacute;N
<a name="DESCRIPCI&Oacute;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>Pass</b> es
un almac&eacute;n de contrase&ntilde;as muy simple que
mantiene contrase&ntilde;as dentro de <b>gpg2</b> (1)
archivos cifrados dentro de un &aacute;rbol de directorio
simple que reside en <i>~/.password-store.</i> Esta utilidad
proporciona una serie de comandos para manipular el
almac&eacute;n de contrase&ntilde;as, lo que permite al
usuario agregar, eliminar, editar, sincronizar, generar y
manipular contrase&ntilde;as.</p>
<hr>
</body>
</html>

View File

@ -0,0 +1,6 @@
Content-type: text/html
<HTML><HEAD><TITLE>Invalid Manpage</TITLE></HEAD>
<BODY>
<H1>Invalid Manpage</H1>
The requested file man-pass-es.1 is not a valid (unformatted) man page.</BODY></HTML>

View File

@ -0,0 +1,22 @@
.TH pass
.SH NOMBRE
pass - almacena, recupera, genera y sincroniza las contraseñas de forma segura
.SH SINOPSIS
pass [
.I COMANDO
] [
.I OPCIONES
]... [
.I ARGUMENTOS
]...
.SH DESCRIPCIÓN
.B Pass
es un almacén de contraseñas muy simple que mantiene contraseñas dentro de
.fam monospace
.B gpg2
(1) archivos cifrados dentro de un árbol de directorio simple que reside en
.I ~/.password-store.
Esta utilidad proporciona una serie de comandos para manipular el almacén de contraseñas, lo que permite al usuario agregar, eliminar, editar, sincronizar, generar y manipular contraseñas.
https://unix.stackexchange.com/questions/550106/cant-use-different-font-families-in-groff-ms

View File

@ -0,0 +1,92 @@
Content-type: text/html
<HTML><HEAD><TITLE>Manpage of cdspeed</TITLE>
</HEAD><BODY>
<H1>cdspeed</H1>
Section: COMANDOS DE USUARIO (1)<BR>Updated: 10 de Septiembre de 2.003<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NOMBRE</H2>
cdspeed - reduce la velocidad del cdrom para obtener un tiempo de
acceso más rápido.
<A NAME="lbAC">&nbsp;</A>
<H2>SINOPSIS</H2>
[-h] [-d dispositivo] -s velocidad
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPCIÓN</H2>
Las unidades de cdrom modernas son demasiado rápidas. Puede
llevar bastantes segundos en una unidad de cdrom de velocidad 60x
empezar a girar y leer datos de la unidad. El resultado en estas
unidades es precisamente mucho más lento que en unidades a 8x o 24x.
Esto es particularmente cierto si sólo se lee ocasionalmente (e.g. cada
5 segundos) ficheros pequeños. Esta utilidad limita la velocidad
y hace que la unidad responda mejor cuando se accede a ficheros pequeños.
<P>
cdspeed también hace a la unidad menos ruidosa lo que es muy útil
para escuchar música en el ordenador.
<A NAME="lbAE">&nbsp;</A>
<H2>OPCIONES</H2>
<DL COMPACT>
<DT>-h<DD>
presenta un pequeño texto de ayuda
<DT>-d<DD>
usa el dispositivo dado en lugar de /dev/cdrom
<DT>-s<DD>
establece a velocidad. El argumento es un entero. Cero significa restaurar
a la velocidad máxima.
</DL>
<A NAME="lbAF">&nbsp;</A>
<H2>EJEMPLOS</H2>
<DL COMPACT>
<DT>Establecer la velocidad máxima del cdrom a 8:<DD>
<B>cdspeed</B>
-s 8
</DL>
<P>
<DL COMPACT>
<DT></DL>
<A NAME="lbAG">&nbsp;</A>
<H2>ESTADO DE SALIDA</H2>
<DD>
cdspeed devuelve un cero si consigue cambiar la velocidad máxima de la
unidad de cdrom a la establecida. Se devuelve no cero en caso de fallo.
<A NAME="lbAH">&nbsp;</A>
<H2>AUTOR</H2>
Tano (<A HREF="mailto:tano@texto-plano.xyz">tano@texto-plano.xyz</A>)
<A NAME="lbAI">&nbsp;</A>
<H2>VÉASE TAMBIÉN</H2>
<A HREF="http://localhost/cgi-bin/man/man2html?1+eject">eject</A>(1)
<P>
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NOMBRE</A><DD>
<DT><A HREF="#lbAC">SINOPSIS</A><DD>
<DT><A HREF="#lbAD">DESCRIPCIÓN</A><DD>
<DT><A HREF="#lbAE">OPCIONES</A><DD>
<DT><A HREF="#lbAF">EJEMPLOS</A><DD>
<DT><A HREF="#lbAG">ESTADO DE SALIDA</A><DD>
<DT><A HREF="#lbAH">AUTOR</A><DD>
<DT><A HREF="#lbAI">VÉASE TAMBIÉN</A><DD>
</DL>
<HR>
This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 23:30:00 GMT, July 22, 2023
</BODY>
</HTML>

View File

@ -0,0 +1,46 @@
<h1>NOMBRE</h1>
<p>cdspeed - reduce la velocidad del cdrom para obtener un tiempo de
acceso más rápido.</p>
<h1>SINOPSIS</h1>
<p>[-h] [-d dispositivo] -s velocidad</p>
<h1>DESCRIPCIÓN</h1>
<p>Las unidades de cdrom modernas son demasiado rápidas. Puede llevar
bastantes segundos en una unidad de cdrom de velocidad 60x empezar a
girar y leer datos de la unidad. El resultado en estas unidades es
precisamente mucho más lento que en unidades a 8x o 24x. Esto es
particularmente cierto si sólo se lee ocasionalmente (e.g. cada 5
segundos) ficheros pequeños. Esta utilidad limita la velocidad y hace
que la unidad responda mejor cuando se accede a ficheros pequeños.</p>
<p>cdspeed también hace a la unidad menos ruidosa lo que es muy útil
para escuchar música en el ordenador.</p>
<h1>OPCIONES</h1>
<dl>
<dt>-h</dt>
<dd>
<p>presenta un pequeño texto de ayuda</p>
</dd>
<dt>-d</dt>
<dd>
<p>usa el dispositivo dado en lugar de /dev/cdrom</p>
</dd>
<dt>-s</dt>
<dd>
<p>establece a velocidad. El argumento es un entero. Cero significa
restaurar a la velocidad máxima.</p>
</dd>
</dl>
<h1>EJEMPLOS</h1>
<dl>
<dt>Establecer la velocidad máxima del cdrom a 8:</dt>
<dd>
<p><strong>cdspeed</strong> -s 8</p>
</dd>
</dl>
<h1>ESTADO DE SALIDA</h1>
<p>cdspeed devuelve un cero si consigue cambiar la velocidad máxima de
la unidad de cdrom a la establecida. Se devuelve no cero en caso de
fallo.</p>
<h1>AUTOR</h1>
<p>Tano (tano@texto-plano.xyz)</p>
<h1>VÉASE TAMBIÉN</h1>
<p>eject(1)</p>

View File

@ -0,0 +1,152 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Sat Jul 22 20:54:49 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>cdspeed</title>
</head>
<body>
<h1 align="center">cdspeed</h1>
<a href="#NOMBRE">NOMBRE</a><br>
<a href="#SINOPSIS">SINOPSIS</a><br>
<a href="#DESCRIPCI&Oacute;N">DESCRIPCI&Oacute;N</a><br>
<a href="#OPCIONES">OPCIONES</a><br>
<a href="#EJEMPLOS">EJEMPLOS</a><br>
<a href="#ESTADO DE SALIDA">ESTADO DE SALIDA</a><br>
<a href="#AUTOR">AUTOR</a><br>
<a href="#V&Eacute;ASE TAMBI&Eacute;N">V&Eacute;ASE TAMBI&Eacute;N</a><br>
<hr>
<h2>NOMBRE
<a name="NOMBRE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">cdspeed &minus;
reduce la velocidad del cdrom para obtener un tiempo de
acceso m&aacute;s r&aacute;pido.</p>
<h2>SINOPSIS
<a name="SINOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">[&minus;h]
[&minus;d dispositivo] &minus;s velocidad</p>
<h2>DESCRIPCI&Oacute;N
<a name="DESCRIPCI&Oacute;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Las unidades de
cdrom modernas son demasiado r&aacute;pidas. Puede llevar
bastantes segundos en una unidad de cdrom de velocidad 60x
empezar a girar y leer datos de la unidad. El resultado en
estas unidades es precisamente mucho m&aacute;s lento que en
unidades a 8x o 24x. Esto es particularmente cierto si
s&oacute;lo se lee ocasionalmente (e.g. cada 5 segundos)
ficheros peque&ntilde;os. Esta utilidad limita la velocidad
y hace que la unidad responda mejor cuando se accede a
ficheros peque&ntilde;os.</p>
<p style="margin-left:11%; margin-top: 1em">cdspeed
tambi&eacute;n hace a la unidad menos ruidosa lo que es muy
&uacute;til para escuchar m&uacute;sica en el ordenador.</p>
<h2>OPCIONES
<a name="OPCIONES"></a>
</h2>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p style="margin-top: 1em">&minus;h</p></td>
<td width="8%"></td>
<td width="78%">
<p style="margin-top: 1em">presenta un peque&ntilde;o texto
de ayuda</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p>&minus;d</p></td>
<td width="8%"></td>
<td width="78%">
<p>usa el dispositivo dado en lugar de /dev/cdrom</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p>&minus;s</p></td>
<td width="8%"></td>
<td width="78%">
<p>establece a velocidad. El argumento es un entero. Cero
significa restaurar a la velocidad m&aacute;xima.</p></td></tr>
</table>
<h2>EJEMPLOS
<a name="EJEMPLOS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Establecer la
velocidad m&aacute;xima del cdrom a 8:</p>
<p style="margin-left:22%;"><b>cdspeed</b> &minus;s 8</p>
<h2>ESTADO DE SALIDA
<a name="ESTADO DE SALIDA"></a>
</h2>
<p style="margin-left:22%;">cdspeed devuelve un cero si
consigue cambiar la velocidad m&aacute;xima de la unidad de
cdrom a la establecida. Se devuelve no cero en caso de
fallo.</p>
<h2>AUTOR
<a name="AUTOR"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Tano
(tano@texto-plano.xyz)</p>
<h2>V&Eacute;ASE TAMBI&Eacute;N
<a name="V&Eacute;ASE TAMBI&Eacute;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">eject(1)</p>
<hr>
</body>
</html>

View File

@ -0,0 +1,161 @@
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Sun Jul 23 16:13:52 2023 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>cdspeed</title>
</head>
<body>
<h1 align="center">cdspeed</h1>
<a href="#NOMBRE">NOMBRE</a><br>
<a href="#SINOPSIS">SINOPSIS</a><br>
<a href="#DESCRIPCI&#211;N">DESCRIPCI&#211;N</a><br>
<a href="#OPCIONES">OPCIONES</a><br>
<a href="#EJEMPLOS">EJEMPLOS</a><br>
<a href="#ESTADO DE SALIDA">ESTADO DE SALIDA</a><br>
<a href="#AUTOR">AUTOR</a><br>
<a href="#V&#201;ASE TAMBI&#201;N">V&#201;ASE TAMBI&#201;N</a><br>
<hr>
<h2>NOMBRE
<a name="NOMBRE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">cdspeed &minus;
reduce la velocidad del cdrom para obtener un tiempo de
acceso m&#225;s
r&#225;pido.</p>
<h2>SINOPSIS
<a name="SINOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">[&minus;h]
[&minus;d dispositivo] &minus;s velocidad</p>
<h2>DESCRIPCI&#211;N
<a name="DESCRIPCI&#211;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Las unidades de
cdrom modernas son demasiado
r&#225;pidas. Puede llevar bastantes
segundos en una unidad de cdrom de velocidad 60x empezar a
girar y leer datos de la unidad. El resultado en estas
unidades es precisamente mucho m&#225;s
lento que en unidades a 8x o 24x. Esto es particularmente
cierto si s&#243;lo se lee
ocasionalmente (e.g. cada 5 segundos) ficheros
peque&#241;os. Esta utilidad limita la
velocidad y hace que la unidad responda mejor cuando se
accede a ficheros peque&#241;os.</p>
<p style="margin-left:11%; margin-top: 1em">cdspeed
tambi&#233;n hace a la unidad menos
ruidosa lo que es muy &#250;til para
escuchar m&#250;sica en el
ordenador.</p>
<h2>OPCIONES
<a name="OPCIONES"></a>
</h2>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p style="margin-top: 1em">&minus;h</p></td>
<td width="8%"></td>
<td width="78%">
<p style="margin-top: 1em">presenta un
peque&#241;o texto de ayuda</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p>&minus;d</p></td>
<td width="8%"></td>
<td width="78%">
<p>usa el dispositivo dado en lugar de /dev/cdrom</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p>&minus;s</p></td>
<td width="8%"></td>
<td width="78%">
<p>establece a velocidad. El argumento es un entero. Cero
significa restaurar a la velocidad
m&#225;xima.</p> </td></tr>
</table>
<h2>EJEMPLOS
<a name="EJEMPLOS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Establecer la
velocidad m&#225;xima del cdrom a 8:</p>
<p style="margin-left:22%;"><b>cdspeed</b> &minus;s 8</p>
<h2>ESTADO DE SALIDA
<a name="ESTADO DE SALIDA"></a>
</h2>
<p style="margin-left:22%;">cdspeed devuelve un cero si
consigue cambiar la velocidad
m&#225;xima de la unidad de cdrom a la
establecida. Se devuelve no cero en caso de fallo.</p>
<h2>AUTOR
<a name="AUTOR"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Tano
(tano@texto-plano.xyz)</p>
<h2>V&#201;ASE TAMBI&#201;N
<a name="V&#201;ASE TAMBI&#201;N"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">eject(1)</p>
<p style="margin-left:11%; margin-top: 1em">pandoc --from
man --to html</p>
<hr>
</body>
</html>

View File

@ -0,0 +1,45 @@
.TH cdspeed 1 "10 de Septiembre de 2.003" "versión 0.3" "COMANDOS DE USUARIO"
.SH NOMBRE
cdspeed \- reduce la velocidad del cdrom para obtener un tiempo de
acceso más rápido.
.SH SINOPSIS
[\-h] [\-d dispositivo] \-s velocidad
.SH DESCRIPCIÓN
Las unidades de cdrom modernas son demasiado rápidas. Puede
llevar bastantes segundos en una unidad de cdrom de velocidad 60x
empezar a girar y leer datos de la unidad. El resultado en estas
unidades es precisamente mucho más lento que en unidades a 8x o 24x.
Esto es particularmente cierto si sólo se lee ocasionalmente (e.g. cada
5 segundos) ficheros pequeños. Esta utilidad limita la velocidad
y hace que la unidad responda mejor cuando se accede a ficheros pequeños.
.PP
cdspeed también hace a la unidad menos ruidosa lo que es muy útil
para escuchar música en el ordenador.
.SH OPCIONES
.TP
\-h
presenta un pequeño texto de ayuda
.TP
\-d
usa el dispositivo dado en lugar de /dev/cdrom
.TP
\-s
establece a velocidad. El argumento es un entero. Cero significa restaurar
a la velocidad máxima.
.SH EJEMPLOS
.TP
Establecer la velocidad máxima del cdrom a 8:
.B cdspeed
\-s 8
.PP
.TP
.SH ESTADO DE SALIDA
cdspeed devuelve un cero si consigue cambiar la velocidad máxima de la
unidad de cdrom a la establecida. Se devuelve no cero en caso de fallo.
.SH AUTOR
Tano (tano@texto-plano.xyz)
.SH VÉASE TAMBIÉN
eject(1)
pandoc --from man --to html

View File

@ -85,7 +85,7 @@
</tr>
<tr>
<td><a href="./archivos-gendoc/00_Emacs.html" target="_blank" title="Traducido por Tano">Manual GNU Emacs 28.2</a> <strong>**</strong></td>
<td><a href="./sphinx/emacs29/doc/build/html/index.html" target="_blank">Manual GNU/Emacs 29.1</a> <strong>**</strong></td>
<td><a href="./sphinx/emacs29/doc/build/index.html" target="_blank">Manual GNU/Emacs 29.1</a> <strong>**</strong></td>
</tr>
</table>
<h4>Funcionalidades GNU/Emacs</h4>

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -35,7 +35,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -1,4 +0,0 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 91805b3a8189c2a01e58d2029f0aaef9
tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@ -1,498 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>8 Comandos Básicos de Edición &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="next" title="9 El Minibúfer" href="09_ElMinibufer.html" />
<link rel="prev" title="7 Cómo Salir de Emacs" href="../07_SalirDeEmacs.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">8 Comandos Básicos de Edición</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#insercion-de-texto">8.1 Inserción de Texto</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cambiar-la-ubicacion-del-punto">8.2 Cambiar la Ubicación del Punto</a></li>
<li class="toctree-l2"><a class="reference internal" href="#borrar-texto">8.3 Borrar Texto</a></li>
<li class="toctree-l2"><a class="reference internal" href="#deshacer-cambios">8.4 Deshacer cambios</a></li>
<li class="toctree-l2"><a class="reference internal" href="#archivos">8.5 Archivos</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ayuda">8.6 Ayuda</a></li>
<li class="toctree-l2"><a class="reference internal" href="#lineas-en-blanco">8.7 Líneas en blanco</a></li>
<li class="toctree-l2"><a class="reference internal" href="#lineas-de-continuacion">8.8 Líneas de continuación</a></li>
<li class="toctree-l2"><a class="reference internal" href="#informacion-sobre-la-posicion-del-cursor">8.9 Información sobre la posición del cursor</a></li>
<li class="toctree-l2"><a class="reference internal" href="#argumentos-numericos">8.9 Argumentos Numéricos</a></li>
<li class="toctree-l2"><a class="reference internal" href="#repeticion-de-una-orden">8.11 Repetición de una orden</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="09_ElMinibufer.html">9 El Minibúfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="10_EjecutarComndPorNombre.html">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1"><a class="reference internal" href="11_Ayuda.html">11 Ayuda</a></li>
<li class="toctree-l1"><a class="reference internal" href="12_LaMarca-y-LaRegion.html">12 La marca y la región</a></li>
<li class="toctree-l1"><a class="reference internal" href="13_MatarMoverTxt.html">13 Matar y Mover Texto</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">8 Comandos Básicos de Edición</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/08_ComBasicEdic.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="comandos-basicos-de-edicion">
<h1>8 Comandos Básicos de Edición<a class="headerlink" href="#comandos-basicos-de-edicion" title="Link to this heading"></a></h1>
<p>Aquí explicamos lo básico sobre cómo escribir texto, hacer correcciones y guardar el texto en un archivo. Si este material es nuevo para Usted, le sugerimos que primero ejecute el tutorial Emacs <em>learning-by-doing</em> (aprender-haciendo), tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">t</span></code>, <code class="docutils literal notranslate"><span class="pre">help-with-tutorial</span></code>, ayuda-con-tutorial).</p>
<section id="insercion-de-texto">
<h2>8.1 Inserción de Texto<a class="headerlink" href="#insercion-de-texto" title="Link to this heading"></a></h2>
<p>Puede insertar un carácter gráfico normal (por ejemplo, <code class="docutils literal notranslate"><span class="pre">a</span></code>, <code class="docutils literal notranslate"><span class="pre">B</span></code>, <code class="docutils literal notranslate"><span class="pre">3</span></code> y <code class="docutils literal notranslate"><span class="pre">=</span></code>) tecleando la tecla asociada. Esto añade al búfer el carácter en el punto. La inserción desplaza el punto hacia delante, de modo que el punto queda justo después del texto insertado. <strong>Véase Punto</strong>.</p>
<p>Para terminar una línea e iniciar una nueva, escriba <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>, nueva línea). (La tecla <kbd class="kbd docutils literal notranslate">RETURN</kbd> puede estar etiquetada como <em>Return</em>, o <em>Enter</em>, o con una flecha de aspecto gracioso apuntando hacia la izquierda en su teclado, pero en este manual nos referimos a ella como <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>)). Este comando inserta un carácter de nueva línea en el búfer, y luego aplica una sangría (<strong>véase Sangría</strong>) de acuerdo con el modo principal. Si el punto está al final de la línea, el efecto es crear una nueva línea en blanco después de él y sangrar la nueva línea; si el punto está en medio de una línea, la línea se divide en esa posición. Para desactivar la sangría automática, puede desactivar el modo de sangría eléctrica (<strong>véase Funciones Convenientes para la Sangría</strong>) o teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-j</span></code>), que inserta sólo una nueva línea, sin ninguna sangría automática.</p>
<p>Como explicaremos más adelante en este manual, puede cambiar la forma en que Emacs maneja la inserción de texto activando modos menores. Por ejemplo, el modo secundario llamado Auto Fill Mode (Modo de Relleno Automático) divide las líneas automáticamente cuando son demasiado largas (<strong>ver Rellenado de Texto</strong>). El modo secundario, o modo menor llamado Overwrite Mode (Modo Sobrescribir) hace que los caracteres insertados reemplacen (sobrescriban) el texto existente, en lugar de desplazarlo a la derecha. <strong>Véase Modos Menores</strong>.</p>
<p>Sólo se pueden insertar caracteres gráficos tecleando la tecla asociada; otras teclas actúan como comandos de edición y no se insertan. Por ejemplo, <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) ejecuta el comando <code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code> (borrar-carácter-atrás) por defecto (algunos modos lo vinculan a un comando diferente); no inserta un carácter literal <code class="docutils literal notranslate"><span class="pre">DEL</span></code> (código de carácter ASCII 127).</p>
<p>Para insertar un carácter no gráfico, o un carácter que su teclado no admita, primero cítelo escribiendo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span></code>, <code class="docutils literal notranslate"><span class="pre">quoted-insert</span></code>). Hay dos formas de utilizar <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd>:</p>
<blockquote>
<div><ul>
<li><p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span></code>) seguido de cualquier carácter no gráfico (incluso <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>)) inserta ese carácter. Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> <kbd class="kbd docutils literal notranslate">DEL</kbd>
(<code class="docutils literal notranslate"><span class="pre">C-q</span> <span class="pre">DEL</span></code>) inserta un carácter literal “DEL”.</p></li>
<li><p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span></code>) seguido de una secuencia de dígitos octales inserta el carácter con el código de carácter octal especificado. Puede utilizar cualquier número de dígitos
octales; cualquier carácter que no sea un dígito termina la secuencia. Si el carácter de terminación es <code class="docutils literal notranslate"><span class="pre">RET</span></code>, ese <code class="docutils literal notranslate"><span class="pre">RET</span></code> sólo sirve para terminar la secuencia. Cualquier otro
carácter que no sea un dígito termina la secuencia y actúa como una entrada normal, por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> <kbd class="kbd docutils literal notranslate">1</kbd> <kbd class="kbd docutils literal notranslate">0</kbd> <kbd class="kbd docutils literal notranslate">1</kbd> <kbd class="kbd docutils literal notranslate">B</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span> <span class="pre">1</span> <span class="pre">0</span> <span class="pre">1</span> <span class="pre">B</span></code>) inserta
<code class="docutils literal notranslate"><span class="pre">AB</span></code>.</p>
<p>El uso de secuencias octales está desactivado en el modo de sobrescritura ordinario no binario, para ofrecerle una forma cómoda de insertar un dígito en lugar de sobrescribirlo.</p>
</li>
</ul>
</div></blockquote>
<p>Para utilizar decimal o hexadecimal en lugar de octal, establezca la variable <code class="docutils literal notranslate"><span class="pre">read-quoted-char-radix</span></code> en 10 o 16. Si el radix es 16, las letras <code class="docutils literal notranslate"><span class="pre">a</span></code> a <code class="docutils literal notranslate"><span class="pre">f</span></code> sirven como parte de un código de carácter, igual que los dígitos. Se ignoran las mayúsculas y minúsculas.</p>
<p>Se pueden insertar algunos caracteres Unicode comunes mediante un comando que empiece por <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span></code>). Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">[</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">[</span></code>) inserta <code class="docutils literal notranslate"><span class="pre"></span></code>, que es el punto de código Unicode U+2018 COMILLA SIMPLE IZQUIERDA, a veces llamada «comilla curva» o «comilla rizada». Del mismo modo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">]</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">]</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">{</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">{</span></code>) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">}</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">}</span></code>) insertan las comillas curvas <code class="docutils literal notranslate"><span class="pre"></span></code>, <code class="docutils literal notranslate"><span class="pre"></span></code> y <code class="docutils literal notranslate"><span class="pre"></span></code>, respectivamente. La tecla <kbd class="kbd docutils literal notranslate">Alt</kbd> también puede actuar como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span></code>) (a menos que vaya seguida de <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>)); por ejemplo, <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">[</kbd> (<code class="docutils literal notranslate"><span class="pre">M-[</span></code>) actúa como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">[</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">[</span></code>) e inserta <code class="docutils literal notranslate"><span class="pre"></span></code>. Para ver qué caracteres tienen abreviaturas <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span></code>), escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">C-h</span></code>).</p>
<p>También puede utilizar el comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">RET</span></code>, <code class="docutils literal notranslate"><span class="pre">insert-chart</span></code>, insertar carácter). Este comando solicita el nombre Unicode o el punto de código de un carácter, utilizando el minibuffer. Si introduce un nombre, el comando lo completa (<strong>véase Completar</strong>). Si introduce un punto de código, debe ser como un número hexadecimal (la convención para Unicode), o un número con un radix especificado, por ejemplo, <code class="docutils literal notranslate"><span class="pre">#o23072</span></code> (octal); <strong>Ver Conceptos Básicos de Enteros</strong> en el Manual de Referencia de Emacs Lisp. A continuación, el comando inserta el carácter correspondiente en el búfer.</p>
<p>Por ejemplo, todos los siguientes insertan el mismo carácter:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>C-x 8 RET left single quotation mark RET
C-x 8 RET left sin TAB RET
C-x 8 RET 2018 RET
C-x 8 [
A-[ (if the Alt key works)
` (in Electric Quote mode)
</pre></div>
</div>
<p>Un argumento numérico para <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> <code class="docutils literal notranslate"><span class="pre">...</span></code> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span> <span class="pre">...</span></code>) especifica cuántas copias del carácter se insertarán (véase <strong>Argumentos Numéricos</strong>).</p>
<p>Como alternativa a <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span></code>, puede seleccionar el método de entrada transitorio correspondiente tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">\</kbd> <code class="docutils literal notranslate"><span class="pre">iso-transl</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">\</span> <span class="pre">iso-transl</span> <span class="pre">RET</span></code>) , luego activar temporalmente este método de entrada transitorio tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">\</kbd> <kbd class="kbd docutils literal notranslate">[</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">\</span> <span class="pre">[</span></code>) insertará el mismo carácter <code class="docutils literal notranslate"><span class="pre"></span></code> (<strong>ver Método de Entrada Transitorio</strong>).</p>
<p>Además, en algunos contextos, si escribe una cita utilizando acento grave y apóstrofo <code class="docutils literal notranslate"><span class="pre">\`como</span> <span class="pre">esta'</span></code>, se convierte en una forma <code class="docutils literal notranslate"><span class="pre">\``como</span> <span class="pre">esta''</span></code> usando comillas simples, incluso sin comandos <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">8</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">8</span></code>). Del mismo modo, si escribe una cita <code class="docutils literal notranslate"><span class="pre">como</span> <span class="pre">ésta''</span></code> usando doble acento grave y apóstrofo, se convierte en una forma <code class="docutils literal notranslate"><span class="pre">“como</span> <span class="pre">ésta”</span></code> usando comillas dobles. <strong>Véase Comillas</strong>.</p>
</section>
<section id="cambiar-la-ubicacion-del-punto">
<h2>8.2 Cambiar la Ubicación del Punto<a class="headerlink" href="#cambiar-la-ubicacion-del-punto" title="Link to this heading"></a></h2>
<p>Para hacer algo más que insertar caracteres, debe saber cómo mover el punto (<strong>véase Punto</strong>). Los comandos de teclado <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-f</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-b</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-n</span></code>) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-p</span></code>) mueven el punto a la derecha, izquierda, abajo y arriba, respectivamente. También puede mover el punto usando las teclas de flecha presentes en la mayoría de los teclados: DERECHA, IZQUIERDA, ABAJO y ARRIBA; sin embargo, muchos usuarios de Emacs encuentran que es más lento usar las teclas de flecha que las teclas de control, porque necesita mover su mano al área del teclado donde se encuentran esas teclas.</p>
<p>También puede pulsar el botón izquierdo del ratón para mover el punto a la posición pulsada. Emacs también proporciona una variedad de comandos de teclado adicionales que mueven el punto de formas más sofisticadas.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-f</span></code>)</p>
<blockquote>
<div><p>Avanza el punto un caraceter (<code class="docutils literal notranslate"><span class="pre">forward-chart</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">right</span></code>)</p>
<blockquote>
<div><p>Este comando (<code class="docutils literal notranslate"><span class="pre">right-char</span></code>) se comporta como <code class="docutils literal notranslate"><span class="pre">C-f</span></code>, excepto cuando el punto está en un párrafo de derecha a izquierda (<strong>véase Edición bidireccional</strong>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-b</span></code>)</p>
<blockquote>
<div><p>Mueve el punto un caracter hacia atras (<code class="docutils literal notranslate"><span class="pre">backward-chart</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">left</span></code>)</p>
<blockquote>
<div><p>Este comando (<code class="docutils literal notranslate"><span class="pre">left-char</span></code>) se comporta como <code class="docutils literal notranslate"><span class="pre">C-b</span></code>, excepto si el párrafo actual es de derecha a izquierda (<strong>véase Edición Bidireccional</strong>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-n</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd></div>
</div>
<blockquote>
<div><p>Se desplaza hacia abajo una línea de la pantalla (<code class="docutils literal notranslate"><span class="pre">next-line</span></code>). Este comando intenta mantener la posición horizontal sin cambios, por lo que si empieza en medio de una línea, se
mueve a la mitad de la siguiente.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-p</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd></div>
</div>
<blockquote>
<div><p>Mueve el punto una línea hacia arriba (<code class="docutils literal notranslate"><span class="pre">previous-line</span></code>). Este comando conserva la posición dentro de la línea, como <code class="docutils literal notranslate"><span class="pre">C-n</span></code>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-a</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Inicio</kbd></div>
</div>
<blockquote>
<div><p>Mueve el punto al comienzo de la línea (<code class="docutils literal notranslate"><span class="pre">move-beginning-of-line</span></code>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-e</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Fin</kbd></div>
</div>
<blockquote>
<div><p>Mueve el punto al final de la línea (<code class="docutils literal notranslate"><span class="pre">move-end-of-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-f</span></code>)</p>
<blockquote>
<div><p>Avanza el punto una palabra (<code class="docutils literal notranslate"><span class="pre">forward-word</span></code>). <strong>Vea Palabras</strong>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-right</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">M-right</span></code>)</div>
</div>
<blockquote>
<div><p>Este comando (<code class="docutils literal notranslate"><span class="pre">right-word</span></code>) se comporta como <code class="docutils literal notranslate"><span class="pre">M-f</span></code>, excepto que retrocede una palabra si el párrafo actual es de derecha a izquierda. Véase <strong>Edición Bidireccional</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">M-b</span></code>)</p>
<blockquote>
<div><p>Mueve el punto una palabra hacia atrás (<code class="docutils literal notranslate"><span class="pre">backward-word</span></code>). <strong>Vea Palabra</strong>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-left</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">M-right</span></code>)</div>
</div>
<blockquote>
<div><p>Este comando (<code class="docutils literal notranslate"><span class="pre">left-word</span></code>) se comporta como <code class="docutils literal notranslate"><span class="pre">M-b</span></code>, excepto que <em>avanza</em> una palabra si el párrafo actual es de derecha a izquierda. <strong>Véase Edición Bidireccional</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">r</kbd> (<code class="docutils literal notranslate"><span class="pre">M-r</span></code>)</p>
<blockquote>
<div><p>Sin mover el texto en la pantalla, reposiciona el punto en el margen izquierdo de la línea de texto situada más al centro de la ventana; en invocaciones consecutivas posteriores,
mueve el punto al margen izquierdo de la línea situada más arriba, a la línea situada más abajo, y así sucesivamente, en orden cíclico (<code class="docutils literal notranslate"><span class="pre">move-to-window-line-top-bottom</span></code>).</p>
<p>Un argumento numérico dice en qué línea de la pantalla colocar el punto, contando hacia abajo desde la parte superior de la ventana (cero significa la línea superior). Un argumento
negativo cuenta las líneas hacia arriba desde la parte inferior (-1 significa la línea inferior). <strong>Véase Argumentos Numéricos</strong>, para más información sobre argumentos numéricos.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">&lt;</kbd> (<code class="docutils literal notranslate"><span class="pre">M-&lt;</span></code>)</p>
<blockquote>
<div><p>Se desplaza a la parte superior del búfer (<code class="docutils literal notranslate"><span class="pre">beginning-of-buffer</span></code>, del búfer). Con argumento numérico n, se desplaza a n/10 de la parte superior. En pantallas gráficas,
<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Inicio</kbd> (<code class="docutils literal notranslate"><span class="pre">C-Inicio</span></code>) hace lo mismo.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">&gt;</kbd> (<code class="docutils literal notranslate"><span class="pre">M-&gt;</span></code>)</p>
<blockquote>
<div><p>Se desplaza al final del búfer (<code class="docutils literal notranslate"><span class="pre">end-of-buffer</span></code> pantallas gráficas, (<code class="docutils literal notranslate"><span class="pre">C-Fin</span></code>) hace lo mismo.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-v</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">PageDown</kbd></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">next</span></code></div>
</div>
<blockquote>
<div><p>Desplaza la visualización una pantalla hacia delante y, si es necesario, desplaza un punto en la pantalla (comando de desplazamiento hacia arriba). <strong>Véase Desplazamiento</strong>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">M-v</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">PageUp</kbd></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">prior</span></code></div>
</div>
<blockquote>
<div><p>Desplaza una pantalla hacia atrás y, si es necesario, desplaza un punto en la pantalla (comando de desplazamiento hacia abajo). <strong>Véase Desplazamiento</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g-c</span></code>)</p>
<blockquote>
<div><p>Lee un número <em>n</em> y mueve el punto a la posición <em>n</em> del buffer. La posición 1 es el principio del buffer. Si el punto está sobre o justo después de un número en el buffer, ese es el
valor por defecto para <em>n</em>. Sólo tiene que escribir <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) en el minibuffer para usarlo. También puede especificar <em>n</em> dándole a <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span>
<span class="pre">c</span></code>) un argumento prefijo numérico.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">M-g</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd><kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">g</span></code>)</div>
</div>
<blockquote>
<div><p>Lee un número <em>n</em> y mueve el punto al principio de la línea número <em>n</em> (<code class="docutils literal notranslate"><span class="pre">goto-línea</span></code>). La línea 1 es el principio del buffer. Si el punto está sobre o justo después de un número en
el buffer, ese es el valor por defecto para <em>n</em>. Simplemente teclee <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) en el minibuffer para usarlo. También puede especificar <em>n</em> dándole a <code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">M-g</span></code> un
argumento de prefijo numérico. <strong>Ver Crear y Seleccionar Buffers</strong>, para el comportamiento de <code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">M-g</span></code> cuando le da un argumento de prefijo simple. Alternativamente, puede usar el
comando <code class="docutils literal notranslate"><span class="pre">goto-line-relative</span></code> para mover el punto a la línea relativa a la porción accesible del buffer reducido.</p>
<p><code class="docutils literal notranslate"><span class="pre">goto-line</span></code> tiene su propia lista de historial (ver <strong>Historial del Minibuffer</strong>). Puede tener una única lista compartida entre todos los buffers (por defecto) o una lista separada
para cada buffer, personalizando la opción de usuario <code class="docutils literal notranslate"><span class="pre">goto-line-history-local</span></code>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p>Lee un número <em>n</em> y se desplaza a la columna <em>n</em> de la línea actual. La columna 0 es la columna más a la izquierda. Si se llama con un argumento prefijo, se mueve al número de
columna especificado por el valor numérico del argumento.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-x</span> <span class="pre">Ctrl-n</span></code>)</p>
<blockquote>
<div><p>Usa la columna actual del punto como <em>columna meta semipermanente</em> (<code class="docutils literal notranslate"><span class="pre">set-goal-column</span></code>) en el buffer actual. Cuando una columna meta semipermanente está en efecto,
<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-n</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-p</span></code>), <code class="docutils literal notranslate"><span class="pre">&lt;prior&gt;</span></code> y <code class="docutils literal notranslate"><span class="pre">&lt;next&gt;</span></code> siempre intentan moverse a esta columna, o lo más cerca posible de ella, después de moverse
verticalmente. La columna de meta permanece vigente hasta que se cancela.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">C-n</span></code>)</p>
<blockquote>
<div><p>Anula la columna de meta. En adelante, <code class="docutils literal notranslate"><span class="pre">C-n</span></code> y <code class="docutils literal notranslate"><span class="pre">C-p</span></code> intentan conservar la posición horizontal, como de costumbre.</p>
</div></blockquote>
<p>Cuando una línea de texto en el buffer es más larga que el ancho de la ventana, Emacs normalmente la muestra en dos o más líneas de pantalla. Por comodidad, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-n</span></code>) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-p</span></code>) mueven el punto por líneas de pantalla, al igual que las teclas equivalentes abajo y arriba. Puede forzar que estos comandos se muevan según las líneas lógicas (es decir, según las líneas de texto en el buffer) estableciendo la variable <code class="docutils literal notranslate"><span class="pre">line-move-visual</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>; si una línea lógica ocupa varias líneas de pantalla, el cursor se salta entonces las líneas de pantalla adicionales. Para más detalles, <strong>véase Líneas de Continuación</strong>. <strong>Véase Variables</strong>, para saber cómo establecer variables como <code class="docutils literal notranslate"><span class="pre">line-move-visual</span></code>.</p>
<p>A diferencia de <code class="docutils literal notranslate"><span class="pre">C-n</span></code> y <code class="docutils literal notranslate"><span class="pre">C-p</span></code>, la mayoría de los comandos Emacs que trabajan sobre líneas trabajan sobre líneas lógicas. Por ejemplo, <code class="docutils literal notranslate"><span class="pre">C-a</span></code> (<code class="docutils literal notranslate"><span class="pre">move-beginning-of-line</span></code>, mover-principio-de-línea) y <code class="docutils literal notranslate"><span class="pre">C-e</span></code> (<code class="docutils literal notranslate"><span class="pre">move-end-of-line</span></code>, mover-fin-de-línea) se mueven respectivamente al principio y al final de la línea lógica. Siempre que encontremos comandos que trabajen sobre líneas de pantalla, como <code class="docutils literal notranslate"><span class="pre">C-n</span></code> y <code class="docutils literal notranslate"><span class="pre">C-p</span></code>, los señalaremos.</p>
<p>Cuando <code class="docutils literal notranslate"><span class="pre">line-move-visual</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code> (nulo), también puede establecer la variable <code class="docutils literal notranslate"><span class="pre">track-eol</span></code> a un valor no nulo. Entonces <code class="docutils literal notranslate"><span class="pre">C-n</span></code> y <code class="docutils literal notranslate"><span class="pre">C-p</span></code>, cuando empiezan al final de la línea lógica, se mueven al final de la siguiente línea lógica. Normalmente, <code class="docutils literal notranslate"><span class="pre">track-eol</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-n</span></code> normalmente se detiene al final del buffer cuando lo usa en la última línea del buffer. Sin embargo, si establece la variable next-line-add-newlines a un valor no nulo, <code class="docutils literal notranslate"><span class="pre">C-n</span></code> en la última línea de un buffer crea una línea adicional al final y se mueve hacia abajo en ella.</p>
</section>
<section id="borrar-texto">
<h2>8.3 Borrar Texto<a class="headerlink" href="#borrar-texto" title="Link to this heading"></a></h2>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">BACKSPACE</span></code>)</div>
</div>
<blockquote>
<div><p>Borrar el carácter anterior al punto, o la región si está activa (<code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code>).</p>
</div></blockquote>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">Delete</span></code></dt><dd><p>Borrar el carácter tras el punto, o la región si está activa (<code class="docutils literal notranslate"><span class="pre">delete-forward-char</span></code>).</p>
</dd>
</dl>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd></p>
<blockquote>
<div><p>Borrar el caracter después del punto (<code class="docutils literal notranslate"><span class="pre">delete-char</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd></p>
<blockquote>
<div><p>Mata hasta el fina de la línea (<code class="docutils literal notranslate"><span class="pre">kill-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">M-d</span></code>)</p>
<blockquote>
<div><p>Avanza hasta el final de la siguiente palabra (<code class="docutils literal notranslate"><span class="pre">kill-word</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">DEL</kbd></p>
<blockquote>
<div><p>Mata al principio de la palabra anterior (<code class="docutils literal notranslate"><span class="pre">backward-kill-word</span></code>)</p>
</div></blockquote>
<p>El comando <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>, <code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code>) elimina el carácter anterior al punto, moviendo el cursor y los caracteres posteriores hacia atrás. Si el punto estaba al principio de una línea, borra la nueva línea precedente, uniendo esta línea a la anterior.</p>
<p>Si, por el contrario, la región está activa, <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) borra el texto de la región. <strong>Véase La Marca y la Región</strong>, para una descripción de la región.</p>
<p>En la mayoría de los teclados, la tecla <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) se denomina <em>BACKSPACE</em> (RETROCESO), pero en este manual nos referiremos a ella como <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>). (No confunda <code class="docutils literal notranslate"><span class="pre">DEL</span></code> con la tecla <kbd class="kbd docutils literal notranslate">Supr</kbd> (Suprimir); hablaremos de Suprimir momentáneamente.) En algunos terminales de texto, Emacs puede no reconocer la tecla <kbd class="kbd docutils literal notranslate">DEL</kbd> correctamente. <strong>Vea Si DEL Falla al Borrar</strong>, si se encuentra con este problema.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">Delete</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-forward-char</span></code>) borra en la dirección opuesta: borra el carácter después del punto, es decir, el carácter bajo el cursor. Si el punto estaba al final de una línea, une la línea siguiente a ésta. Al igual que <code class="docutils literal notranslate"><span class="pre">Delete</span></code>, borra el texto de la región si ésta está activa (<strong>véase La Marca y la Región</strong>).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-d</span></code>, <code class="docutils literal notranslate"><span class="pre">delete-char</span></code>) borra el carácter después del punto, de forma similar a Supr, pero independientemente de si la región está activa.</p>
<p>Consulte Borrado, para obtener información más detallada sobre los comandos de borrado anteriores.</p>
<p><strong>Consulte Matar y Mover Texto</strong>, para más información sobre <code class="docutils literal notranslate"><span class="pre">C-k</span></code> y comandos relacionados.</p>
</section>
<section id="deshacer-cambios">
<h2>8.4 Deshacer cambios<a class="headerlink" href="#deshacer-cambios" title="Link to this heading"></a></h2>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">/</kbd></div>
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">u</kbd></div>
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">_</kbd></div>
</div>
<blockquote>
<div><p>Deshace una entrada de los registros de deshacer, usualmente, un comando que sea valido (<code class="docutils literal notranslate"><span class="pre">undo</span></code>, deshacer). (La primera tecla puede no estar disponible en pantallas en modo texto).</p>
</div></blockquote>
<p>Emacs registra una lista de los cambios realizados en el texto del buffer, por lo que puede deshacer los cambios recientes. Esto se hace usando el comando deshacer, que está ligado a <code class="docutils literal notranslate"><span class="pre">C-/</span></code> (así como <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">u</span></code> y <code class="docutils literal notranslate"><span class="pre">C-_</span></code>). Normalmente, este comando deshace el último cambio, devolviendo el punto a donde estaba antes del cambio. El comando deshacer sólo se aplica a los cambios en el búfer; no se puede utilizar para deshacer el movimiento del cursor.</p>
<p>En un terminal que admita el modificador <code class="docutils literal notranslate"><span class="pre">Control</span></code> en todas las demás teclas, la forma más sencilla de invocar deshacer es con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">/</kbd> (<code class="docutils literal notranslate"><span class="pre">C-/</span></code>), ya que no necesita el modificador <code class="docutils literal notranslate"><span class="pre">Shif</span></code> (Mayúsculas). En terminales que sólo permiten los caracteres de control ASCII, <code class="docutils literal notranslate"><span class="pre">C-/</span></code> no existe, pero para muchos de ellos <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">_</kbd> <code class="docutils literal notranslate"><span class="pre">C-_</span></code> todavía funciona porque realmente envía a Emacs el comando <code class="docutils literal notranslate"><span class="pre">C-_</span></code>, mientras que muchos otros le permiten omitir el modificador <code class="docutils literal notranslate"><span class="pre">Shift</span></code> cuando teclea <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">_</kbd> <code class="docutils literal notranslate"><span class="pre">C-_</span></code> (en efecto pulsando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">-</kbd> (<code class="docutils literal notranslate"><span class="pre">C--</span></code>)), haciendo que sea la forma más conveniente de invocar <code class="docutils literal notranslate"><span class="pre">undo</span></code>.</p>
<p>Aunque cada comando de edición suele tener una entrada independiente en los registros de deshacer, los comandos muy sencillos pueden agruparse. A veces, una entrada puede cubrir sólo parte de un comando complejo.</p>
<p>Si repite <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">/</kbd> (<code class="docutils literal notranslate"><span class="pre">C-/</span></code>) (o sus alias), cada repetición deshace otro cambio anterior, hasta el límite de la información de deshacer disponible. Si ya se han deshecho todos los cambios registrados, el comando deshacer muestra un mensaje de error y no hace nada.</p>
<p>Para obtener más información sobre el comando deshacer, <strong>consulte Deshacer</strong>.</p>
</section>
<section id="archivos">
<h2>8.5 Archivos<a class="headerlink" href="#archivos" title="Link to this heading"></a></h2>
<p>El texto que inserta en un búfer de Emacs sólo dura lo que dura la sesión de Emacs. Para mantener cualquier texto permanentemente, deberá ponerlo en un <em>fichero</em>.</p>
<p>Suponga que hay un fichero llamado <code class="docutils literal notranslate"><span class="pre">test.emacs</span></code> en su directorio personal. Para empezar a editar este fichero en Emacs, escriba</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> <code class="docutils literal notranslate"><span class="pre">test.emacs</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span> <span class="pre">test.emacs</span> <span class="pre">RET</span></code>)</p>
<p>Aquí el nombre del archivo se da como <em>argumento</em> al comando <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span></code> (<code class="docutils literal notranslate"><span class="pre">find-file</span></code>, buscar archivo). Ese comando usa el <em>minibuffer</em> para leer el argumento, y teclea <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) para terminar el argumento (ver <strong>El Minibuffer</strong>).</p>
<p>Emacs obedece este comando <em>visitando</em> el fichero: crea un buffer, copia el contenido del fichero en el buffer, y luego muestra el buffer para editarlo. Si altera el texto, puede <em>guardar</em> el nuevo texto en el archivo tecleando (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-s</span></code>, <code class="docutils literal notranslate"><span class="pre">save-buffer</span></code>). Esto copia el contenido alterado del buffer en el archivo <code class="docutils literal notranslate"><span class="pre">test.emacs</span></code>, haciéndolo permanente. Hasta que lo guarde, el texto modificado sólo existe dentro de Emacs, y dicho archivo permanece inalterado.</p>
<p>Para crear un fichero, basta con visitarlo con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span></code>) como si ya existiera. Esto crea un buffer vacío, en el que puede insertar el texto que quiera poner en el fichero. Emacs realmente crea el fichero la primera vez que guarda este buffer con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-s</span></code>).</p>
<p>Para aprender más sobre el uso de ficheros en Emacs, <strong>vea Manejo de Ficheros</strong>.</p>
</section>
<section id="ayuda">
<h2>8.6 Ayuda<a class="headerlink" href="#ayuda" title="Link to this heading"></a></h2>
<p>Si olvida lo que hace una tecla, puede averiguarlo escribiendo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-key</span></code>, describir-tecla), seguido de la tecla que le interesa; por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span> <span class="pre">C-n</span></code>) le dice lo que hace <code class="docutils literal notranslate"><span class="pre">C-n</span></code>.</p>
<p>El prefijo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code>) significa «help» (ayuda). La tecla <kbd class="kbd docutils literal notranslate">F1</kbd> sirve de alias para <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code>). Aparte de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code>), hay muchos otros comandos de ayuda que proporcionan diferentes tipos de ayuda.</p>
<p>Para más detalles, consulte <strong>Ayuda</strong>.</p>
</section>
<section id="lineas-en-blanco">
<h2>8.7 Líneas en blanco<a class="headerlink" href="#lineas-en-blanco" title="Link to this heading"></a></h2>
<p>Aquí encontrará comandos y técnicas especiales para insertar y eliminar líneas en blanco.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">Ctrl-o</span></code>)</p>
<blockquote>
<div><p>Inserta una línea en blanco después del cursor (<code class="docutils literal notranslate"><span class="pre">open-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code>)</p>
<blockquote>
<div><p>Borrar todas las líneas en blanco consecutivas menos una (<code class="docutils literal notranslate"><span class="pre">delete-blank-lines</span></code>).</p>
</div></blockquote>
<p>Hemos visto cómo <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>, <code class="docutils literal notranslate"><span class="pre">new-line</span></code> , nueva línea) inicia una nueva línea de texto. Sin embargo, puede ser más fácil ver lo que está haciendo si primero hace una línea en blanco y luego inserta en ella el texto deseado. Esto es fácil de hacer usando la tecla <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-o</span></code>, <code class="docutils literal notranslate"><span class="pre">open-line</span></code>), que inserta una nueva línea después del punto pero deja el punto delante de la nueva línea. Después de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-o</span></code>), escriba el texto de la nueva línea.</p>
<p>Puede crear varias líneas en blanco tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-o</span></code>) varias veces, o dándole un argumento numérico que especifique cuántas líneas en blanco debe crear. <strong>Vea Argumentos Numéricos</strong>, para saber cómo. Si tiene un prefijo de relleno, el comando <code class="docutils literal notranslate"><span class="pre">C-o</span></code> inserta el prefijo de relleno en la nueva línea, si se escribe al principio de una línea. <strong>Véase El Prefijo de Relleno</strong>.</p>
<p>La forma más fácil de deshacerse de las líneas en blanco extra es con el comando <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-blank-lines</span></code>). Si el punto se encuentra dentro de una serie de líneas en blanco, <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code> borra todas menos una. Si el punto se encuentra en una sola línea en blanco, <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code> lo borra. Si el punto se encuentra en una línea que no está en blanco, <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code> borra todas las líneas en blanco siguientes, si existen.</p>
</section>
<section id="lineas-de-continuacion">
<h2>8.8 Líneas de continuación<a class="headerlink" href="#lineas-de-continuacion" title="Link to this heading"></a></h2>
<p>A veces, una línea de texto en el buffer -una <em>línea lógica</em>- es demasiado larga para caber en la ventana, y Emacs la muestra como dos o más <em>líneas en pantalla</em>. Esto se llama <em>ajuste de línea o continuación</em>, y la línea lógica larga se llama <em>línea continuada</em>. En una pantalla gráfica, el Editor indica el ajuste de línea con pequeñas flechas dobladas en los bordes izquierdo y derecho de la ventana. En un terminal de texto, Emacs indica el ajuste de línea mostrando un carácter <code class="docutils literal notranslate"><span class="pre">\</span></code> en el margen derecho.</p>
<p>La mayoría de los comandos que actúan sobre líneas lo hacen sobre líneas lógicas, no sobre líneas de pantalla. Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-k</span></code>) elimina una línea lógica. Como se describió anteriormente, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-n</span></code>, <code class="docutils literal notranslate"><span class="pre">next-line</span></code>, línea siguiente) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-p</span></code>, <code class="docutils literal notranslate"><span class="pre">previous-line</span></code>, línea anterior) son excepciones especiales: mueven el punto hacia abajo y hacia arriba, respectivamente, una línea de pantalla (<strong>ver Cambiar la Ubicación del Punto</strong>).</p>
<p>Emacs puede opcionalmente <em>truncar</em> líneas lógicas largas en lugar de continuarlas. Esto significa que cada línea lógica ocupa una sola línea de pantalla; si es más larga que el ancho de la ventana, el resto de la línea no se muestra. En una pantalla gráfica, una línea truncada se indica mediante una pequeña flecha recta en la franja derecha; en un terminal de texto, se indica mediante un carácter <code class="docutils literal notranslate"><span class="pre">$</span></code> en el margen derecho. <strong>Véase Truncamiento de Línea</strong>.</p>
<p>Por defecto, las líneas continuas se ajustan al borde derecho de la ventana. Dado que el ajuste puede producirse en medio de una palabra, las líneas continuas pueden ser difíciles de leer. La solución habitual es romper las líneas antes de que sean demasiado largas, insertando nuevas líneas. Si lo prefiere, puede hacer que Emacs inserte una nueva línea automáticamente cuando una línea se hace demasiado larga, usando el modo Auto Relleno (Auto Fill mode). <strong>Vea Rellenando Texto</strong>.</p>
<p>A veces, puede que necesite editar ficheros que contienen muchas líneas lógicas largas, y puede que no sea práctico romperlas todas añadiendo nuevas líneas. En ese caso, puedes usar el modo Línea Visual, que activa el <em>ajuste de palabras:</em> en lugar de ajustar las líneas largas exactamente en el borde derecho de la ventana, Emacs las ajusta en los límites de palabra (es decir, espacios o tabuladores) más cercanos al borde derecho de la ventana. El modo Línea Visual también redefine comandos de edición como <code class="docutils literal notranslate"><span class="pre">C-a</span></code>, <code class="docutils literal notranslate"><span class="pre">C-n</span></code>, y <code class="docutils literal notranslate"><span class="pre">C-k</span></code> para operar en líneas de pantalla en lugar de líneas lógicas. <strong>Véase Modo de Línea Visual</strong>.</p>
</section>
<section id="informacion-sobre-la-posicion-del-cursor">
<h2>8.9 Información sobre la posición del cursor<a class="headerlink" href="#informacion-sobre-la-posicion-del-cursor" title="Link to this heading"></a></h2>
<p>Aquí hay comandos para obtener información sobre el tamaño y la posición de partes del buffer, y para contar palabras y líneas.</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">what-line</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">what-line</span></code>)</p>
<blockquote>
<div><p>Muestra el número de línea del punto.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">line-number-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">line-number-mode</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">column-number-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">column-number-mode</span></code>)</div>
</div>
<blockquote>
<div><p>Alterna la visualización automática del número de línea o columna actual. <strong>Véase Características Opcionales del Modo de Línea</strong>. Si desea que se muestre un número de línea antes de
cada línea, <strong>consulte Personalización de la Visualización</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<cite>x</cite> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>)</p>
<blockquote>
<div><p>Muestra el número de líneas, frases, palabras y caracteres presentes en la región (<code class="docutils literal notranslate"><span class="pre">count-words-region</span></code>). <strong>Consulte La Marca y la Región</strong>, para obtener información sobre la región.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">count-words</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">count-words</span></code>)</p>
<blockquote>
<div><p>Muestra el número de líneas, frases, palabras y caracteres presentes en la memoria intermedia. Si la región está activa (<strong>véase La marca y la Región</strong>), muestra en su lugar los
números de la región.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">=</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">=</span></code>)</p>
<blockquote>
<div><p>Muestra el código de carácter del carácter después del punto, la posición del caracter y la columna del punto (<code class="docutils literal notranslate"><span class="pre">what-cursor-position</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">hl-line-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">hl-line-mode</span></code>)</p>
<blockquote>
<div><p>Activa o desactiva el resaltado de la línea actual. <strong>Véase Visualización del Cursor</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd> <kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">size-indication-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">size-indication-mode</span></code>)</p>
<blockquote>
<div><p>Alterna la visualización automática del tamaño del buffer. <strong>Véase Características Opcionales de la Línea de Modo</strong>.</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">what-line</span></code> muestra el número de línea actual en el área de eco. Este comando suele ser redundante porque dicho número de línea se muestra en la línea de modo (<strong>véase Línea de Modo</strong>). Sin embargo, si se estrecha el búfer, la línea de modo muestra el número de línea relativo a la parte accesible (<strong>véase Estrechamiento</strong>). Por el contrario, <code class="docutils literal notranslate"><span class="pre">what-line</span></code> muestra tanto el número de línea relativo a la región reducida como el relativo a toda la memoria intermedia.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-=</span></code> (<code class="docutils literal notranslate"><span class="pre">count-words-region</span></code>) muestra un mensaje que informa del número de líneas, frases, palabras y caracteres de la región (véase La marca y la Región, para una explicación de la región). Con un argumento prefijo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">=</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">M-=</span></code>), el comando muestra un recuento para todo el buffer.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">count-words</span></code> hace el mismo trabajo, pero con una convención de llamada diferente. Muestra un recuento para la región si la región está activa, y para el búfer en caso contrario.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">=</span></code> (<code class="docutils literal notranslate"><span class="pre">what-cursor-position</span></code>) muestra información sobre la posición actual del cursor y el contenido del buffer en esa posición. Aparece una línea en el área de eco con el siguiente aspecto:</p>
<div class="highlight-lisp notranslate"><div class="highlight"><pre><span></span><span class="nv">Char:</span><span class="w"> </span><span class="nv">c</span><span class="w"> </span><span class="p">(</span><span class="mi">99</span><span class="o">,</span><span class="w"> </span><span class="mo">#o143</span><span class="o">,</span><span class="w"> </span><span class="mh">#x63</span><span class="p">)</span><span class="w"> </span><span class="nv">point=28062</span><span class="w"> </span><span class="nv">of</span><span class="w"> </span><span class="mi">36168</span><span class="w"> </span><span class="p">(</span><span class="nv">78%</span><span class="p">)</span><span class="w"> </span><span class="nv">column=53</span>
</pre></div>
</div>
<p>Después de <code class="docutils literal notranslate"><span class="pre">Char:</span></code>, muestra el carácter que está en el búfer justo en el punto. El texto dentro del paréntesis muestra los códigos de caracteres decimal, octal y hexadecimal correspondientes; para más información sobre cómo <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">=</span></code> muestra la información de caracteres, véase <strong>Introducción a los Juegos de Caracteres Internacionales</strong>. Después de <code class="docutils literal notranslate"><span class="pre">point=</span></code> está la posición del punto como una cuenta de caracteres (el primer carácter en el buffer es la posición 1, el segundo carácter es la posición 2, y así sucesivamente). El número que sigue es el número total de caracteres del búfer, y el número entre paréntesis expresa la posición como porcentaje del total. Después de <code class="docutils literal notranslate"><span class="pre">column=</span></code>” está la posición horizontal del punto, en columnas contando desde el borde izquierdo de la ventana.</p>
<p>Si la opción de usuario <code class="docutils literal notranslate"><span class="pre">what-cursor-show-names</span></code> no es nula, se muestra también el nombre del carácter, tal y como lo define la base de datos de caracteres Unicode. La parte entre paréntesis sería entonces:</p>
<div class="highlight-lisp notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="mi">99</span><span class="o">,</span><span class="w"> </span><span class="mo">#o143</span><span class="o">,</span><span class="w"> </span><span class="mh">#x63</span><span class="o">,</span><span class="w"> </span><span class="nv">LATIN</span><span class="w"> </span><span class="nv">SMALL</span><span class="w"> </span><span class="nv">LETTER</span><span class="w"> </span><span class="nv">C</span><span class="p">)</span>
</pre></div>
</div>
<p>Si el búfer se ha estrechado, haciendo que parte del texto del principio y del final sea temporalmente inaccesible, <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">=</span></code> muestra texto adicional que describe el rango actualmente accesible. Por ejemplo, puede aparecer lo siguiente:</p>
<div class="highlight-lisp notranslate"><div class="highlight"><pre><span></span><span class="nv">Char:</span><span class="w"> </span><span class="nv">C</span><span class="w"> </span><span class="p">(</span><span class="mi">67</span><span class="o">,</span><span class="w"> </span><span class="mo">#o103</span><span class="o">,</span><span class="w"> </span><span class="mh">#x43</span><span class="p">)</span><span class="w"> </span><span class="nv">point=252</span><span class="w"> </span><span class="nv">of</span><span class="w"> </span><span class="mi">889</span><span class="w"> </span><span class="p">(</span><span class="nv">28%</span><span class="p">)</span><span class="w"> </span><span class="nv">&lt;231-599&gt;</span><span class="w"> </span><span class="nv">column=0</span>
</pre></div>
</div>
<p>donde los dos números extra dan la posición de carácter más pequeño y más grande que ese punto puede asumir. Los caracteres entre esas dos posiciones son los accesibles. <strong>Véase Estrechamiento</strong>.</p>
<p>Una función relacionada, pero diferente, es el modo de visualización de números de línea (<strong>véase Personalización de la Visualización</strong>).</p>
</section>
<section id="argumentos-numericos">
<h2>8.9 Argumentos Numéricos<a class="headerlink" href="#argumentos-numericos" title="Link to this heading"></a></h2>
<p>En la terminología de las matemáticas y la informática, <em>argumento</em> significa «datos proporcionados a una función u operación». Puede dar a cualquier comando de Emacs un <em>argumento numérico</em> (también llamado <em>argumento prefijo</em>). Algunos comandos interpretan el argumento como un recuento de repeticiones. Por ejemplo, dar a <code class="docutils literal notranslate"><span class="pre">C-f</span></code> un argumento de diez hace que avance el punto diez caracteres en lugar de uno. Con estos comandos, ningún argumento es equivalente a un argumento de uno, y los argumentos negativos hacen que se muevan o actúen en sentido contrario.</p>
<p>La forma más sencilla de especificar un argumento numérico es escribir un dígito y/o un signo menos mientras se mantiene pulsada la tecla Meta (<kbd class="kbd docutils literal notranslate">Alt</kbd>). Por ejemplo,</p>
<blockquote>
<div><p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">5</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-5</span> <span class="pre">C-n</span></code>)</p>
</div></blockquote>
<p>avanza cinco líneas. Las teclas <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">M-1</span></code>), <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">2</kbd> (<code class="docutils literal notranslate"><span class="pre">M-2</span></code>), etc., así como <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">-</kbd> (<code class="docutils literal notranslate"><span class="pre">M--</span></code>), están vinculadas a comandos (<code class="docutils literal notranslate"><span class="pre">digit-argument</span></code> y <code class="docutils literal notranslate"><span class="pre">negative-argument</span></code>) que establecen un argumento para el siguiente comando. <code class="docutils literal notranslate"><span class="pre">M--</span></code> sin dígitos normalmente significa -1.</p>
<p>Si introduce más de un dígito, no necesita mantener pulsada la tecla <kbd class="kbd docutils literal notranslate">Alt</kbd> (<code class="docutils literal notranslate"><span class="pre">Meta</span></code>) para el segundo dígito y los siguientes. Así, para avanzar cincuenta líneas, teclee</p>
<blockquote>
<div><p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">5</kbd><kbd class="kbd docutils literal notranslate">0</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-5</span> <span class="pre">0</span> <span class="pre">C-n</span></code>)</p>
</div></blockquote>
<p>Tenga en cuenta que esto <em>no inserta</em> cinco copias de <code class="docutils literal notranslate"><span class="pre">0</span></code> y se desplaza una línea hacia abajo, como cabría esperar: <code class="docutils literal notranslate"><span class="pre">0</span></code> se trata como parte del argumento del prefijo.</p>
<p>(¿Y si quiere insertar cinco copias de <code class="docutils literal notranslate"><span class="pre">0</span></code>? Escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">5</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">0</kbd> (<code class="docutils literal notranslate"><span class="pre">M-5</span> <span class="pre">C-u</span> <span class="pre">0</span></code>). Aquí, <code class="docutils literal notranslate"><span class="pre">C-u</span></code> termina el argumento prefijo, de modo que la siguiente pulsación de tecla inicia el comando que desea ejecutar. Tenga en cuenta que este significado de <code class="docutils literal notranslate"><span class="pre">C-u</span></code> sólo se aplica a este caso. Para la función habitual de <code class="docutils literal notranslate"><span class="pre">C-u</span></code>, véase más adelante).</p>
<p>En lugar de escribir <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">M-1</span></code>), <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">2</kbd> (<code class="docutils literal notranslate"><span class="pre">M-2</span></code>), etc., otra forma de especificar un argumento numérico es escribir <code class="docutils literal notranslate"><span class="pre">C-u</span></code> (<code class="docutils literal notranslate"><span class="pre">universal-argument</span></code>) seguido de algunos dígitos, o (para un argumento negativo) un signo menos seguido de dígitos. Un signo menos sin dígitos normalmente significa -1.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code>) sola tiene el significado especial de «cuatro veces»: multiplica por cuatro el argumento de la siguiente orden. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span></code>) lo multiplica por dieciséis. Así, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span> <span class="pre">C-f</span></code>) avanza dieciséis caracteres. Otras combinaciones útiles son <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-n</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span> <span class="pre">C-n</span></code>) (baja una buena fracción de pantalla), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span> <span class="pre">C-o</span></code>) (hace dieciséis líneas en blanco) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-k</span></code>, mata cuatro líneas).</p>
<p>Puede utilizar un argumento numérico antes de un carácter autoinsertado para insertar varias copias del mismo. Esto es sencillo cuando el carácter no es un dígito; por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">6</kbd><kbd class="kbd docutils literal notranslate">4</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">6</span> <span class="pre">4</span></code>) a inserta 64 copias del carácter <code class="docutils literal notranslate"><span class="pre">a</span></code>. Pero esto no funciona para insertar dígitos; <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">6</kbd><kbd class="kbd docutils literal notranslate">4</kbd><kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">6</span> <span class="pre">4</span> <span class="pre">1</span></code>) especifica un argumento de 641. Puede separar el argumento del dígito a insertar con otra combinación de teclas <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code>); por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">6</kbd><kbd class="kbd docutils literal notranslate">4</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">6</span> <span class="pre">4</span> <span class="pre">C-u</span> <span class="pre">1</span></code>) inserta 64 copias del carácter <code class="docutils literal notranslate"><span class="pre">1</span></code>.</p>
<p>Algunos comandos se preocupan de si hay un argumento, pero ignoran su valor. Por ejemplo, el comando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">M-q</span></code>. <code class="docutils literal notranslate"><span class="pre">fill-paragraph</span></code>, rellenar-párrafo) rellena texto; con un argumento, también justifica el texto. (<strong>Véase Rellenar Texto</strong>, para más información sobre <code class="docutils literal notranslate"><span class="pre">M-q</span></code>.) Para estos comandos, basta con especificar el argumento con una sola <code class="docutils literal notranslate"><span class="pre">C-u</span></code>.</p>
<p>Algunos comandos usan el valor del argumento como contador de repeticiones, pero hacen algo especial cuando no hay argumento. Por ejemplo, el comando (<code class="docutils literal notranslate"><span class="pre">C-k</span></code>, <code class="docutils literal notranslate"><span class="pre">kill-line</span></code>) con argumento <em>n</em> mata <em>n</em> líneas, incluyendo sus nuevas líneas finales. Pero <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-k</span></code>) sin argumento es especial: mata el texto hasta la siguiente nueva línea o, si el punto está justo al final de la línea, mata la propia nueva línea. Así, dos comandos <code class="docutils literal notranslate"><span class="pre">C-k</span></code> sin argumentos pueden eliminar una línea que no esté en blanco, igual que <code class="docutils literal notranslate"><span class="pre">C-k</span></code> con un argumento de uno. (<strong>Ver Matar y Mover Texto</strong>, para más información sobre <code class="docutils literal notranslate"><span class="pre">C-k</span></code>.)</p>
<p>Algunos comandos tratan a <code class="docutils literal notranslate"><span class="pre">C-u</span></code> de forma diferente a un argumento ordinario. Otros pocos pueden tratar un argumento de sólo un signo menos de forma diferente a un argumento de -1. Estos casos inusuales se describen cuando aparecen; existen para hacer que un comando individual sea más conveniente, y están documentados en la cadena de documentación de ese comando.</p>
<p>Usamos el término <em>argumento prefijo</em> para enfatizar que estos argumentos se escriben <em>antes</em> del comando, y para distinguirlos de los argumentos del minibuffer (<strong>vea El Minibuffer</strong>), que se introducen <em>después</em> de invocar el comando.</p>
<p>En las pantallas gráficas, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">0</kbd> (<code class="docutils literal notranslate"><span class="pre">C-0</span></code>), <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">C-1</span></code>), etc. actúan igual que <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">0</kbd> (<code class="docutils literal notranslate"><span class="pre">M-0</span></code>), <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">1</kbd> (<code class="docutils literal notranslate"><span class="pre">M-1</span></code>), etc.</p>
</section>
<section id="repeticion-de-una-orden">
<h2>8.11 Repetición de una orden<a class="headerlink" href="#repeticion-de-una-orden" title="Link to this heading"></a></h2>
<p>Muchos comandos sencillos, como los que se invocan con una sola tecla o con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">nombre-comando</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">nombre-comando</span> <span class="pre">RET</span></code>), pueden repetirse invocándolos con un argumento numérico que sirve como contador de repeticiones (<strong>véase Argumentos Numéricos</strong>). Sin embargo, si el comando que desea repetir solicita entrada, o utiliza un argumento numérico de otra forma, ese método no funcionará.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">z</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">z</span></code>, <code class="docutils literal notranslate"><span class="pre">repeat</span></code>, repetir) proporciona otra forma de repetir un comando Emacs muchas veces. Este comando repite el último comando del Editor, sea cual sea. Repetir un comando usa los mismos argumentos que se usaron antes; no lee nuevos argumentos cada vez.</p>
<p>Para repetir el comando más de una vez, escriba <code class="docutils literal notranslate"><span class="pre">z</span></code>s adicionales: cada <code class="docutils literal notranslate"><span class="pre">z</span></code> repite el comando una vez más. La repetición finaliza cuando se teclea un carácter distinto de <code class="docutils literal notranslate"><span class="pre">z</span></code> o se pulsa un botón del ratón.</p>
<p>También puede activar el modo de repetición, que permite repetir comandos vinculados a secuencias de dos o más teclas tecleando un solo carácter. Por ejemplo, después de teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">u</span></code>, <code class="docutils literal notranslate"><span class="pre">undo</span></code>, deshacer, <strong>véase Deshacer</strong>) para deshacer las ediciones más recientes, puede deshacer muchas más ediciones tecleando <kbd class="kbd docutils literal notranslate">u</kbd><kbd class="kbd docutils literal notranslate">u</kbd><kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">u</span> <span class="pre">u</span> <span class="pre">u</span></code>)…. Del mismo modo, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">x</kbd><kbd class="kbd docutils literal notranslate">o</kbd><kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">o</span> <span class="pre">o</span> <span class="pre">o</span></code>)… en lugar de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">o</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">o</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span></code> <code class="docutils literal notranslate"><span class="pre">o</span></code> <code class="docutils literal notranslate"><span class="pre">C-x</span></code> <code class="docutils literal notranslate"><span class="pre">o</span></code> <code class="docutils literal notranslate"><span class="pre">C-x</span></code> <code class="docutils literal notranslate"><span class="pre">o</span></code>)… para cambiar a la ventana situada a varias ventanas de distancia. Esto funciona entrando en un modo de repetición transitorio después de teclear la secuencia de teclas completa que invoca el comando; los atajos de una sola tecla se muestran en el área de eco.</p>
<p>Sólo algunos comandos admiten la repetición en este modo (<code class="docutils literal notranslate"><span class="pre">repeat-mode</span></code>); escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">describe-repeat-maps</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">describe-repeat-maps</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>) para ver cuáles.</p>
<p>Los atajos de un solo carácter habilitados por el modo de repetición transitoria no tienen por qué ser idénticos: por ejemplo, después de teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">{</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span></code> <code class="docutils literal notranslate"><span class="pre">{</span></code>), tanto <code class="docutils literal notranslate"><span class="pre">{</span></code> como <code class="docutils literal notranslate"><span class="pre">}</span></code> o <code class="docutils literal notranslate"><span class="pre">^</span></code> o <code class="docutils literal notranslate"><span class="pre">v</span></code>, o cualquier serie que mezcle estos caracteres en cualquier orden, redimensionará la ventana seleccionada de las formas respectivas. Del mismo modo, después de <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">n</span></code>) o <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span></code> <code class="docutils literal notranslate"><span class="pre">p</span></code>), teclear cualquier secuencia de <code class="docutils literal notranslate"><span class="pre">n</span></code> y/o <code class="docutils literal notranslate"><span class="pre">p</span></code> en cualquier mezcla repetirá <code class="docutils literal notranslate"><span class="pre">next-error</span></code> y <code class="docutils literal notranslate"><span class="pre">previous-error</span></code> para navegar en un buffer <em>compilación</em> o <em>grep</em> (<strong>ver Modo Compilación</strong>).</p>
<p>Al teclear cualquier tecla distinta de las definidas para repetir el comando anterior, se sale del modo de repetición transitoria y, a continuación, la tecla que pulsó se ejecuta normalmente. También puede definir una tecla que salga del modo de repetición transitoria <em>sin</em> ejecutar la tecla que provocó la salida. Para ello, personalice la opción de usuario <code class="docutils literal notranslate"><span class="pre">repeat-exit-key</span></code> para nombrar una tecla; un valor natural es <code class="docutils literal notranslate"><span class="pre">RET</span></code>. Finalmente, es posible romper la cadena de repetición automáticamente después de cierto tiempo de inactividad: personalice la opción de usuario <code class="docutils literal notranslate"><span class="pre">repeat-exit-timeout</span></code> para especificar el tiempo de inactividad en segundos después del cual este modo de repetición transitoria se desactivará automáticamente.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="../07_SalirDeEmacs.html" class="btn btn-neutral float-left" title="7 Cómo Salir de Emacs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
<a href="09_ElMinibufer.html" class="btn btn-neutral float-right" title="9 El Minibúfer" accesskey="n" rel="next">Siguiente <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,441 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>9 El Minibúfer &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="next" title="10 Ejecutar Comandos por Nombre" href="10_EjecutarComndPorNombre.html" />
<link rel="prev" title="8 Comandos Básicos de Edición" href="08_ComBasicEdic.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="08_ComBasicEdic.html">8 Comandos Básicos de Edición</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">9 El Minibúfer</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#utilizacion-del-minibuffer">9.1 Utilización del minibuffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="#minibuffers-para-nombres-de-ficheros">9.2 Minibuffers para nombres de ficheros</a></li>
<li class="toctree-l2"><a class="reference internal" href="#edicion-en-el-minibuffer">9.3 Edición en el minibuffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="#completado">9.4 Completado</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#ejemplos-de-completado">9.4.1 Ejemplos de Completado</a></li>
<li class="toctree-l3"><a class="reference internal" href="#comandos-de-finalizacion">9.4.2 Comandos de finalización</a></li>
<li class="toctree-l3"><a class="reference internal" href="#salida-del-completado">9.4.3 Salida del Completado</a></li>
<li class="toctree-l3"><a class="reference internal" href="#como-se-eligen-las-alternativas-de-completado">9.4.4. Cómo se Eligen las Alternativas de Completado</a></li>
<li class="toctree-l3"><a class="reference internal" href="#opciones-de-completado">9.4.5 Opciones de Completado</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#historial-del-minibufer">9.5 Historial del Minibúfer</a></li>
<li class="toctree-l2"><a class="reference internal" href="#repeticion-de-comandos-del-minibuffer">9.6 Repetición de Comandos del Minibuffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ingresar-contrasenas">9.7 Ingresar Contraseñas</a></li>
<li class="toctree-l2"><a class="reference internal" href="#preguntas-si-o-no">9.8 Preguntas Sí o No</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="10_EjecutarComndPorNombre.html">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1"><a class="reference internal" href="11_Ayuda.html">11 Ayuda</a></li>
<li class="toctree-l1"><a class="reference internal" href="12_LaMarca-y-LaRegion.html">12 La marca y la región</a></li>
<li class="toctree-l1"><a class="reference internal" href="13_MatarMoverTxt.html">13 Matar y Mover Texto</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">9 El Minibúfer</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/09_ElMinibufer.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="el-minibufer">
<h1>9 El Minibúfer<a class="headerlink" href="#el-minibufer" title="Link to this heading"></a></h1>
<p>El <em>minibuffer</em> es donde los comandos Emacs leen argumentos complejos, como nombres de ficheros, nombres de buffer, nombres de comandos Emacs o expresiones Lisp. Lo llamamos «minibuffer» porque es un buffer de propósito especial con una pequeña cantidad de espacio en pantalla. Puede usar los comandos de edición habituales de Emacs en el minibuffer para editar el texto del argumento.</p>
<section id="utilizacion-del-minibuffer">
<h2>9.1 Utilización del minibuffer<a class="headerlink" href="#utilizacion-del-minibuffer" title="Link to this heading"></a></h2>
<p>Cuando el minibuffer está en uso, aparece en el área de eco, con un cursor. El minibuffer comienza con un prompt, que suele terminar con dos puntos. En él se indica qué tipo de entrada se espera y cómo se utilizará. El prompt se resalta usando la cara configurada mediante <code class="docutils literal notranslate"><span class="pre">minibuffer-prompt</span></code> (<strong>ver Caras de Texto</strong>).</p>
<p>La forma más sencilla de introducir un argumento en el minibuffer es teclear el texto, luego <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) para enviar el argumento y salir del minibuffer. Alternativamente, puede teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) para salir del minibuffer cancelando el comando que pide el argumento (<strong>ver Salir y Abortar</strong>).</p>
<p>A veces, el prompt muestra un <em>argumento por defecto</em>, entre paréntesis antes de los dos puntos. Este argumento por defecto se usará como argumento si teclea <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>). Por ejemplo, los comandos que leen nombres de buffer usualmente muestran un nombre de buffer como argumento por defecto; puede teclear <kbd class="kbd docutils literal notranslate">RETURN</kbd> ( para operar en ese buffer por defecto. Puede personalizar cómo se muestra el argumento por defecto con la opción de usuario <code class="docutils literal notranslate"><span class="pre">minibuffer-default-prompt-format</span></code>.</p>
<p>Si activa el modo Minibuffer Electric Default, un modo global menor, Emacs oculta el argumento por defecto tan pronto como modifica el contenido del minibuffer (ya que tecleando <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) dejaría de presentar ese valor por defecto). Si alguna vez vuelve al texto original del minibuffer, el prompt vuelve a mostrar el argumento por defecto. Para activar este modo menor, escriba <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">minibuffer-electric-default-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">minibuffer-electric-default-mode</span></code>).</p>
<p>Dado que el minibuffer aparece en el área de eco, puede entrar en conflicto con otros usos del área de eco. Si se emite un mensaje de error o un mensaje informativo mientras el minibuffer está activo, el mensaje se muestra entre corchetes tras el texto del minibuffer durante unos segundos, o hasta que se teclea algo; entonces el mensaje desaparece. Mientras el minibuffer está en uso, Emacs no hace eco de las pulsaciones de teclado.</p>
<p>Mientras usa el minibuffer, puede cambiar a un marco diferente, quizás para anotar texto que necesita introducir (<strong>ver Comandos de Marco</strong>). Por defecto, el minibuffer activo se mueve a este nuevo marco. Si establece la opción de usuario <code class="docutils literal notranslate"><span class="pre">minibuffer-follows-selected-frame</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, entonces el minibuffer permanece en el marco donde lo abrió, y debe volver a ese marco para completar (o abortar) el comando actual. Si establece esa opción a un valor que no sea ni <code class="docutils literal notranslate"><span class="pre">nil</span></code> ni <code class="docutils literal notranslate"><span class="pre">t</span></code>, el minibuffer se mueve de marco sólo después de que se haya abierto un minibuffer recursivo en el comando actual (<strong>véase (elisp)Mini recursivo</strong>). Esta opción es principalmente para mantener (aproximadamente) el comportamiento anterior a Emacs 28.1. Tenga en cuenta que el efecto del comando, cuando finalmente termina de usar el minibuffer, siempre tiene lugar en el marco donde lo abrió por primera vez. La única excepción es que cuando ese marco ya no existe, la acción tiene lugar en el marco actualmente seleccionado.</p>
</section>
<section id="minibuffers-para-nombres-de-ficheros">
<h2>9.2 Minibuffers para nombres de ficheros<a class="headerlink" href="#minibuffers-para-nombres-de-ficheros" title="Link to this heading"></a></h2>
<p>Comandos como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span></code>, <code class="docutils literal notranslate"><span class="pre">find-file</span></code>) usan el minibuffer para leer un argumento de nombre de archivo (<strong>ver Archivos</strong>). Cuando se usa el minibuffer para leer un nombre de fichero, normalmente empieza con un texto inicial que termina en una barra. Este es el directorio <em>por defecto</em>. Por ejemplo, puede empezar así:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Find</span> <span class="n">file</span><span class="p">:</span> <span class="o">/</span><span class="n">u2</span><span class="o">/</span><span class="n">emacs</span><span class="o">/</span><span class="n">src</span><span class="o">/</span>
</pre></div>
</div>
<p>Aquí, <code class="docutils literal notranslate"><span class="pre">Find</span> <span class="pre">file</span></code> (Buscar archivo): es el prompt y <code class="docutils literal notranslate"><span class="pre">/u2/emacs/src/</span></code> es el directorio por defecto. Si ahora escribe <code class="docutils literal notranslate"><span class="pre">buffer.c</span></code> como entrada, eso especifica el archivo <code class="docutils literal notranslate"><span class="pre">/u2/emacs/src/buffer.c</span></code>. <strong>Vea Nombres de Archivos</strong>, para información sobre el directorio por defecto.</p>
<p>Los valores por defecto alternativos para el nombre de archivo que Usted puede necesitar están disponibles tecleando (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>), <strong>vea Historia del Minibuffer</strong>.</p>
<p>Puede especificar un archivo en el directorio padre con <code class="docutils literal notranslate"><span class="pre">..:</span> <span class="pre">/a/b/../foo.el</span></code> es equivalente a <code class="docutils literal notranslate"><span class="pre">/a/foo.el</span></code>. Alternativamente, puede usar <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">M-DEL</span></code>) para matar nombres de directorio al revés (vea <strong>Palabras</strong>).</p>
<p>Para especificar un archivo en un directorio completamente diferente, puede eliminar todo el valor predeterminado con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-a</span> <span class="pre">C-k</span></code>) (<strong>consulte Edición en el Minibuffer</strong>). Alternativamente, puede ignorar el valor por defecto, e introducir un nombre de fichero absoluto que empiece con una barra o una tilde después del directorio por defecto. Por ejemplo, puede especificar <code class="docutils literal notranslate"><span class="pre">/etc/termcap</span></code> como sigue:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Find</span> <span class="n">file</span><span class="p">:</span> <span class="o">/</span><span class="n">u2</span><span class="o">/</span><span class="n">emacs</span><span class="o">/</span><span class="n">src</span><span class="o">//</span><span class="n">etc</span><span class="o">/</span><span class="n">termcap</span>
</pre></div>
</div>
<p>Una doble barra hace que Emacs ignore todo lo que hay antes de la segunda barra del par. En el ejemplo anterior, <code class="docutils literal notranslate"><span class="pre">/u2/emacs/src/</span></code> es ignorado, por lo que el argumento suministrado es <code class="docutils literal notranslate"><span class="pre">/etc/termcap</span></code>. La parte ignorada del nombre del fichero se atenúa si el terminal lo permite. (Para desactivar este atenuación, desactive el modo File Name Shadow con el comando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">file-name-shadow-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">file-name-shadow-mode</span></code>)).</p>
<p>Cuando se completan nombres de ficheros remotos (<strong>ver Archivos Remotos</strong>), una doble barra se comporta de forma ligeramente diferente: hace que Emacs ignore sólo la parte del nombre del fichero, dejando el resto (método, host y nombre de usuario, etc.) intacto. Escribir tres barras seguidas ignora todo en los nombres de ficheros remotos. <strong>Ver Completar Nombre de Fichero</strong> en el Manual de Tramp.</p>
<p>Emacs interpreta <code class="docutils literal notranslate"><span class="pre">~/</span></code> como su directorio personal. Así, <code class="docutils literal notranslate"><span class="pre">~/foo/bar.txt</span></code> especifica un fichero llamado <code class="docutils literal notranslate"><span class="pre">bar.txt</span></code>, dentro de un directorio llamado <code class="docutils literal notranslate"><span class="pre">foo</span></code>, que a su vez se encuentra en su directorio personal. Además, <code class="docutils literal notranslate"><span class="pre">~user-id/</span></code> significa el directorio personal de un usuario cuyo nombre de usuario es <em>user-id</em>. Cualquier nombre de directorio delante de <code class="docutils literal notranslate"><span class="pre">~</span></code> se ignora: así, <code class="docutils literal notranslate"><span class="pre">/u2/emacs/~/foo/bar.txt</span></code> es equivalente a <code class="docutils literal notranslate"><span class="pre">~/foo/bar.txt</span></code>.</p>
<p>En sistemas MS-Windows y MS-DOS, donde un usuario no siempre tiene un directorio home, Emacs usa varias alternativas. Para MS-Windows, ver HOME y Startup Directories en MS-Windows; para MS-DOS, ver Nombres de Archivo en MS-DOS. En estos sistemas, la construcción <code class="docutils literal notranslate"><span class="pre">~user-id/</span></code> está soportada sólo para el usuario actual, es decir, sólo si user-id es el nombre de inicio de sesión del usuario actual.</p>
<p>Para evitar que Emacs inserte el directorio por defecto al leer nombres de ficheros, cambie la variable <code class="docutils literal notranslate"><span class="pre">insert-default-directory</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>. En ese caso, el minibuffer comienza vacío. No obstante, los argumentos relativos a nombres de fichero se siguen interpretando basándose en el mismo directorio por defecto.</p>
<p>También puede introducir nombres de archivos remotos en el minibuffer. <strong>Véase Archivos remotos</strong>.</p>
</section>
<section id="edicion-en-el-minibuffer">
<h2>9.3 Edición en el minibuffer<a class="headerlink" href="#edicion-en-el-minibuffer" title="Link to this heading"></a></h2>
<p>El minibuffer es un buffer Emacs, aunque peculiar, y los comandos Emacs habituales están disponibles para editar el texto del argumento. (El prompt, sin embargo, es de sólo lectura, y no puede cambiarse).</p>
<p>Como <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) en el minibuffer envía el argumento, no puedes usarlo para insertar una nueva línea. Puede hacerlo con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span> <span class="pre">C-j</span></code>), que inserta un carácter de control <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">j</kbd> (<code class="docutils literal notranslate"><span class="pre">C-j</span></code>), que es formalmente equivalente a un carácter de nueva línea (<strong>véase Insertar texto</strong>). También puede utilizar el comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-o</span></code>, <code class="docutils literal notranslate"><span class="pre">open-line</span></code>) (<strong>véase Líneas en Blanco</strong>).</p>
<p>Dentro de un minibuffer, las teclas <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>), <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>) y <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">?</span></code>) suelen estar vinculadas a <em>comandos de completado</em>, que permiten rellenar fácilmente el texto deseado sin tener que escribirlo todo. <strong>Véase Completar</strong>. Al igual que con <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>), puede utilizar <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">C-q</span></code>) para insertar un <code class="docutils literal notranslate"><span class="pre">TAB</span></code>, <code class="docutils literal notranslate"><span class="pre">SPC</span></code> o un carácter <code class="docutils literal notranslate"><span class="pre">?</span></code> Si quiere hacer que <code class="docutils literal notranslate"><span class="pre">SPC</span></code> y <code class="docutils literal notranslate"><span class="pre">?</span></code> se inserten normalmente en lugar de iniciar el completado, puede poner lo siguiente en su archivo init:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">keymap</span><span class="o">-</span><span class="n">unset</span> <span class="n">minibuffer</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">completion</span><span class="o">-</span><span class="nb">map</span> <span class="s2">&quot;SPC&quot;</span><span class="p">)</span>
<span class="p">(</span><span class="n">keymap</span><span class="o">-</span><span class="n">unset</span> <span class="n">minibuffer</span><span class="o">-</span><span class="n">local</span><span class="o">-</span><span class="n">completion</span><span class="o">-</span><span class="nb">map</span> <span class="s2">&quot;?&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>Por comodidad, (<code class="docutils literal notranslate"><span class="pre">C-a</span></code>, <code class="docutils literal notranslate"><span class="pre">move-beginning-of-line</span></code>, mover-principio-de-línea) en un minibuffer mueve el punto al principio del texto del argumento, no al principio del prompt. Por ejemplo, esto le permite borrar todo el argumento con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">a</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-a</span> <span class="pre">C-k</span></code>).</p>
<p>Cuando el minibuffer está activo, el área de eco se trata como una ventana ordinaria de Emacs. Por ejemplo, puede cambiar a otra ventana (con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">o</span></code>)), editar texto allí, y luego volver a la ventana del minibuffer para terminar el argumento. Incluso puedes eliminar texto en otra ventana, volver a la ventana del minibuffer y arrastrar el texto al argumento. Sin embargo, la ventana del minibuffer tiene algunas restricciones: por ejemplo, no se puede dividir. <strong>Véase Ventanas Múltiples</strong>.</p>
<p>Normalmente, la ventana del minibuffer ocupa una sola línea de pantalla. Sin embargo, si añade dos o más líneas de texto en el minibuffer, éste se expande automáticamente para acomodar el texto. La variable <code class="docutils literal notranslate"><span class="pre">resize-mini-windows</span></code> controla el cambio de tamaño del minibuffer. El valor por defecto es <code class="docutils literal notranslate"><span class="pre">grow-only</span></code>, que significa el comportamiento que acabamos de describir. Si el valor es <code class="docutils literal notranslate"><span class="pre">t</span></code>, la ventana del minibuffer también se encogerá automáticamente si eliminas algunas líneas de texto del minibuffer, hasta un mínimo de una línea de pantalla. Si el valor es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, la ventana del minibuffer nunca cambia de tamaño automáticamente, pero puede usar los comandos habituales de redimensionamiento de ventanas (<strong>vea Ventanas Múltiples</strong>).</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">max-mini-window-height</span></code> controla la altura máxima para redimensionar la ventana del minibuffer. Un número en coma flotante especifica una fracción de la altura del marco; un número entero especifica el número máximo de líneas; <code class="docutils literal notranslate"><span class="pre">nil</span></code> significa que no se redimensiona automáticamente la ventana del minibuffer. El valor por defecto es 0,25.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-v</span></code>) en el minibuffer desplaza el texto de ayuda de los comandos que muestran texto de ayuda de cualquier tipo en otra ventana. También puede desplazar el texto de ayuda con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">PageUp</kbd> (<code class="docutils literal notranslate"><span class="pre">M-PageUp</span></code>) y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">PageDown</kbd> (<code class="docutils literal notranslate"><span class="pre">M-PageDown</span></code>) (o, equivalentemente, <code class="docutils literal notranslate"><span class="pre">M-prior</span></code> y <code class="docutils literal notranslate"><span class="pre">M-next</span></code>). Esto es especialmente útil con listas largas de posibles terminaciones. <strong>Véase Utilización de Otras Ventanas</strong>.</p>
<p>Emacs normalmente deshabilita la mayoría de los comandos que usan el minibuffer mientras el minibuffer está activo. Para permitir tales comandos en el minibuffer, configure la variable <code class="docutils literal notranslate"><span class="pre">enable-recursive-minibuffers</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>. Puede que también necesite habilitar <code class="docutils literal notranslate"><span class="pre">minibuffer-depth-indicate-mode</span></code> para mostrar la profundidad de recursión actual en el prompt del minibuffer en el uso recursivo del minibuffer.</p>
<p>Cuando está activo, el minibuffer está normalmente en <code class="docutils literal notranslate"><span class="pre">minibuffer-mode</span></code> (modo minibúfer). Este es un modo interno de Emacs sin ninguna característica especial.</p>
<p>Cuando no está activo, el minibuffer está <code class="docutils literal notranslate"><span class="pre">minibuffer-inactive-mode</span></code> (en modo minibuffer-inactivo), y hacer clic con ratón-1 allí muestra el buffer <code class="docutils literal notranslate"><span class="pre">*Messages*</span></code>. Si usa un marco dedicado para minibúferes, Emacs también reconoce ciertas teclas allí, por ejemplo, <kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">n</span></code>) para crear un nuevo marco.</p>
</section>
<section id="completado">
<h2>9.4 Completado<a class="headerlink" href="#completado" title="Link to this heading"></a></h2>
<p>A menudo puede usar una característica llamada <em>completado</em> para ayudar a introducir argumentos. Esto significa que después de teclear parte del argumento, Emacs puede rellenar el resto, o parte de él, basándose en lo tecleado hasta el momento.</p>
<p>Cuando el completado está disponible, ciertas teclas (normalmente <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>), <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>), y <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>)) son redirigidas en el minibuffer a comandos
especiales de completado <strong>(ver Comandos de Completado</strong>). Estos comandos intentan completar el texto en el minibuffer, basándose en un conjunto de <em>alternativas de finalización</em> proporcionadas por el comando que solicitó el argumento. Normalmente puede teclear <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">?</span></code>) para ver una lista de alternativas de completado.</p>
<p>Aunque el completado normalmente se lleva a cabo en el minibuffer, a veces esta función también está disponible en los buffers normales. <strong>Véase Completar Nombres de Símbolos</strong>.</p>
<section id="ejemplos-de-completado">
<h3>9.4.1 Ejemplos de Completado<a class="headerlink" href="#ejemplos-de-completado" title="Link to this heading"></a></h3>
<p>Un simple ejemplo puede ser de ayuda. <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>) usa el minibuffer para leer el nombre de un comando, por lo que el completado funciona comparando el texto del minibuffer con los nombres de los comandos Emacs existentes. Suponga que desea ejecutar el comando auto-fill-mode. Puede hacerlo tecleando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>), pero es más fácil usar el completado.</p>
<p>Si escribe <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">a</kbd><kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">a</span> <span class="pre">u</span> <span class="pre">TAB</span></code>), el <code class="docutils literal notranslate"><span class="pre">TAB</span></code> busca alternativas de completado (en este caso, nombres de comandos) que empiecen por <code class="docutils literal notranslate"><span class="pre">au</span></code>. Hay varios, incluyendo <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> y <code class="docutils literal notranslate"><span class="pre">autoconf-mode</span></code>, pero todos comienzan con <code class="docutils literal notranslate"><span class="pre">auto</span></code>, así que el <code class="docutils literal notranslate"><span class="pre">au</span></code> en el minibuffer se completa con <code class="docutils literal notranslate"><span class="pre">auto</span></code>. (Se pueden definir más comandos en su sesión Emacs. Por ejemplo, si se definiera un comando llamado <code class="docutils literal notranslate"><span class="pre">authorize-me</span></code>, Emacs sólo podría completar hasta <code class="docutils literal notranslate"><span class="pre">aut</span></code>).</p>
<p>Si vuelve a teclear <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) inmediatamente, no puede determinar el siguiente carácter; podría ser <code class="docutils literal notranslate"><span class="pre">-</span></code>, <code class="docutils literal notranslate"><span class="pre">a</span></code> o <code class="docutils literal notranslate"><span class="pre">c</span></code>. Así que no añade ningún carácter; en su lugar, <code class="docutils literal notranslate"><span class="pre">TAB</span></code> muestra una lista de todas las posibles terminaciones en otra ventana.</p>
<p>A continuación, escriba <code class="docutils literal notranslate"><span class="pre">-f</span></code>. El minibuffer ahora contiene <code class="docutils literal notranslate"><span class="pre">auto-f</span></code>, y el único nombre de comando que comienza con esto es <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>. Si ahora teclea <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>), el completado rellena el resto del argumento <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> en el minibuffer.</p>
<p>Por lo tanto, teclear sólo <kbd class="kbd docutils literal notranslate">u</kbd><kbd class="kbd docutils literal notranslate">TAB</kbd><kbd class="kbd docutils literal notranslate">-</kbd><kbd class="kbd docutils literal notranslate">f</kbd><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">u</span> <span class="pre">TAB</span> <span class="pre">-</span> <span class="pre">f</span> <span class="pre">TAB</span></code>) le permite entrar en <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>.</p>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> también funciona cuando el punto no está al final del minibuffer. En ese caso, rellenará el texto tanto en el punto como al final del minibuffer. Si escribe <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">autocom</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">autocm</span></code>), luego presiona <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-b</span></code>) mover el punto antes de la <code class="docutils literal notranslate"><span class="pre">m</span></code>, puede escribir <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) para insertar el texto <code class="docutils literal notranslate"><span class="pre">onf-</span></code> en el punto y <code class="docutils literal notranslate"><span class="pre">ode</span></code> al final del minibuffer, de modo que el minibuffer contenga <code class="docutils literal notranslate"><span class="pre">autoconf-mode</span></code>.</p>
</section>
<section id="comandos-de-finalizacion">
<h3>9.4.2 Comandos de finalización<a class="headerlink" href="#comandos-de-finalizacion" title="Link to this heading"></a></h3>
<p>Esta es una lista de los comandos de finalización definidos en el minibuffer cuando se permite la finalización.</p>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p>Completa el texto del minibuffer en la medida de lo posible; si no se puede completar, muestra una lista de posibles terminaciones (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">SPC</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>)</p>
<blockquote>
<div><p>Completa hasta una palabra del texto del minibuffer antes del punto (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete-word</span></code>). Este comando no está disponible para argumentos que suelen incluir espacios, como
los nombres de archivo.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">RET</kbd></p>
<blockquote>
<div><p>Envía el texto en el minibuffer como argumento, posiblemente completando primero (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete-and-exit</span></code>). <strong>Véase Salida de Completado</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">?</kbd></p>
<blockquote>
<div><p>Mostrará una lista de finalizaciones</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">TAB</span></code> (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete</span></code>) es el comando de completado más fundamental. Busca todas las terminaciones posibles que coincidan con el texto existente en el minibúfer e intenta completar todo lo que pueda. <strong>Vea Cómo se Eligen las Alternativas de Completado</strong>, para saber cómo se eligen estas alternativas.</p>
<p><code class="docutils literal notranslate"><span class="pre">SPC</span></code> (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete-word</span></code>) completa como <code class="docutils literal notranslate"><span class="pre">TAB</span></code>, pero sólo hasta el siguiente guión o espacio. Si tiene <code class="docutils literal notranslate"><span class="pre">auto-f</span></code> en el minibuffer y teclee <kbd class="kbd docutils literal notranslate">SPCACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>), encuentra que la terminación es <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>, pero sólo inserta <code class="docutils literal notranslate"><span class="pre">ill-</span></code>, dando <code class="docutils literal notranslate"><span class="pre">auto-fill-</span></code>. Otro :kbd:<code class="docutils literal notranslate"><span class="pre">SPCACE</span></code> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>) en este punto completa hasta <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>.</p>
<p>Si <code class="docutils literal notranslate"><span class="pre">TAB</span></code> o <code class="docutils literal notranslate"><span class="pre">SPC</span></code> no puede completar, muestra una lista de alternativas de finalización coincidentes (si las hay) en otra ventana. Puede mostrar la misma lista con <code class="docutils literal notranslate"><span class="pre">?</span></code> (<code class="docutils literal notranslate"><span class="pre">minibuffer-completion-help</span></code>). Los siguientes comandos se pueden usar con la lista de finalización o completado:</p>
<div class="line-block">
<div class="line"><kbd class="kbd compound docutils literal notranslate"><kbd class="kbd docutils literal notranslate">M</kbd>-<kbd class="kbd docutils literal notranslate">DOWN</kbd></kbd> (<code class="docutils literal notranslate"><span class="pre">Alt-Down</span></code>)</div>
<div class="line"><kbd class="kbd compound docutils literal notranslate"><kbd class="kbd docutils literal notranslate">M</kbd>-<kbd class="kbd docutils literal notranslate">UP</kbd></kbd> (<code class="docutils literal notranslate"><span class="pre">Alt-Up</span></code>)</div>
</div>
<blockquote>
<div><p>Mientras se está en el minibuffer, <code class="docutils literal notranslate"><span class="pre">M-DOWN</span></code> (<code class="docutils literal notranslate"><span class="pre">minibuffer-next-completion</span></code>) y <code class="docutils literal notranslate"><span class="pre">M-UP</span></code> (<code class="docutils literal notranslate"><span class="pre">minibuffer-previous-completion</span></code>) navegan a través de las opciones de finalización y se
muestran en el buffer de completado. Cuando <code class="docutils literal notranslate"><span class="pre">minibuffer-completion-auto-choose</span></code> es distinto de cero (que es el valor predeterminado), el uso de estos comandos también inserta el
candidato de finalización actual en el minibuffer. Si <code class="docutils literal notranslate"><span class="pre">minibuffer-completion-auto-choose</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, puede utilizar el comando (<code class="docutils literal notranslate"><span class="pre">M-RET</span></code>, <code class="docutils literal notranslate"><span class="pre">minibuffer-choose-completion</span></code>) para
insertar los candidatos de finalización en el minibuffer. Por defecto, esto sale del minibuffer, pero con un argumento prefijo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span>
<span class="pre">M-RET</span></code>) inserta el candidato actualmente activo sin salir del minibuffer.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">M-v</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">PageUp</kbd> (<code class="docutils literal notranslate"><span class="pre">PageUp</span></code>)</div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">prior</span></code></div>
</div>
<blockquote>
<div><p>Tecleando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">M-v</span></code>), mientras se está en el minibuffer, se selecciona la ventana que muestra la lista de opciones de completado (<code class="docutils literal notranslate"><span class="pre">switch-to-completions</span></code>). Esto
facilita el uso de los siguientes comandos. <code class="docutils literal notranslate"><span class="pre">PageUp</span></code>, <code class="docutils literal notranslate"><span class="pre">prior</span></code> y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">M-g</span> <span class="pre">M-c</span></code>) hace lo mismo. También puede seleccionar la ventana de otras
formas (<strong>véase Ventanas Múltiples</strong>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>)</div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">mouse-1</span></code></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">mouse-2</span></code></div>
</div>
<blockquote>
<div><p>Mientras está en el buffer de la lista de finalizaciones, esto escoge una terminación en el punto (<code class="docutils literal notranslate"><span class="pre">choose-completion</span></code>, escoger-terminación). Con un argumento prefijo, (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">RET</span></code>)
inserta la terminación en el punto en el minibuffer, pero no sale del minibuffer, por lo que puede cambiar de opinión y elegir otro candidato.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">RIGHT</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">n</span></code>)</div>
</div>
<blockquote>
<div><p>Mientras están en el buffer de la lista de finalización, estas teclas se mueven apuntando a la siguiente alternativa de completado (<code class="docutils literal notranslate"><span class="pre">next-completion</span></code>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">S-TAB</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">LEFT</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">p</span></code>)</div>
</div>
<blockquote>
<div><p>Mientras están en el búfer de la lista de finalización, estas teclas se mueven apuntando a la alternativa de completado anterior (<code class="docutils literal notranslate"><span class="pre">previous-completion</span></code>, completado-anterior).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">a</span></code>)</p>
<blockquote>
<div><p>En el búfer de la lista de finalización, sale de la ventana que lo muestra y selecciona la ventana que muestra el minibúfer (<code class="docutils literal notranslate"><span class="pre">quit-window</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">z</kbd> (<code class="docutils literal notranslate"><span class="pre">z</span></code>)</p>
<blockquote>
<div><p>Mientras esté en el búfer de la lista de finalización, elimínelo y borre la ventana que lo muestra (<code class="docutils literal notranslate"><span class="pre">kill-current-buffer</span></code>).</p>
</div></blockquote>
</section>
<section id="salida-del-completado">
<h3>9.4.3 Salida del Completado<a class="headerlink" href="#salida-del-completado" title="Link to this heading"></a></h3>
<p>Cuando un comando lee un argumento utilizando el minibuffer con finalización, también controla lo que ocurre cuando se teclea <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) (<code class="docutils literal notranslate"><span class="pre">minibuffer-complete-and-exit</span></code>) para enviar el argumento. Existen cuatro tipos de comportamiento:</p>
<blockquote>
<div><ul>
<li><p>La <em>finalización estricta</em> sólo acepta coincidencias de finalización exactas. Tecleando RET se sale del minibuffer sólo si el texto del minibuffer es una coincidencia exacta, o
se completa con una. De lo contrario, Emacs se niega a salir del minibuffer; en su lugar intenta completar, y si no se puede completar muestra momentáneamente <code class="docutils literal notranslate"><span class="pre">[No-match]</span></code>
([Sin coincidencia]) después del texto del minibuffer. (Aún puede salir del minibuffer tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) para cancelar el comando).</p>
<p>Un ejemplo de comando que usa este comportamiento es <code class="docutils literal notranslate"><span class="pre">M-x</span></code>, ya que no tiene sentido que acepte un nombre de comando inexistente.</p>
</li>
<li><p>La <em>terminación cautelosa</em> es como la terminación estricta, excepto que <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) sólo sale si el texto ya es una coincidencia exacta. Si el texto se completa
con una coincidencia exacta, <code class="docutils literal notranslate"><span class="pre">RET</span></code> realiza esa compleción pero no sale todavía; debe teclear un segundo <code class="docutils literal notranslate"><span class="pre">RET</span></code> para salir.</p>
<p>Este completado se usa para leer nombres de archivos que ya deben existir, por ejemplo.</p>
</li>
<li><p>El <em>completado permisivo</em> acepta cualquier entrada; los candidatos a completado son sólo sugerencias. Escribir <kbd class="kbd docutils literal notranslate">RETUTRN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) no completa, sólo envía el argumento tal y
como lo ha introducido.</p></li>
<li><p>El <em>completado permisivo con confirmación</em> es como el completado permisivo, con una excepción: si ha tecleado <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) y esto ha completado el texto hasta algún estado
intermedio (es decir, uno que todavía no es una coincidencia de completado exacta), teclear <kbd class="kbd docutils literal notranslate">RETURN</kbd> justo después no envía el argumento. En su lugar, Emacs pide confirmación
mostrando momentáneamente <code class="docutils literal notranslate"><span class="pre">[Confirm]</span></code> después del texto; teclee <kbd class="kbd docutils literal notranslate">RETURN</kbd> de nuevo para confirmar y enviar el texto. Esto detecta un error común, en el que uno teclea
<kbd class="kbd docutils literal notranslate">RETURN</kbd> antes de darse cuenta de que <code class="docutils literal notranslate"><span class="pre">TAB</span></code> no completó todo lo que deseaba.</p>
<p>Puede modificar el comportamiento de la confirmación personalizando la variable <code class="docutils literal notranslate"><span class="pre">confirm-nonexistent-file-or-buffer</span></code>. El valor por defecto, <code class="docutils literal notranslate"><span class="pre">after-completion</span></code>, da el
comportamiento que acabamos de describir. Si lo cambia a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, Emacs no pide confirmación, volviendo a la finalización permisiva. Si lo cambia a cualquier otro valor que no
sea <code class="docutils literal notranslate"><span class="pre">nil</span></code>, Emacs pide confirmación tanto si el comando precedente era <code class="docutils literal notranslate"><span class="pre">TAB</span></code> como si no.</p>
<p>Este comportamiento es usado por la mayoría de los comandos que leen nombres de ficheros, como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span></code>), y comandos que leen
nombres de buffer, como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">b</span></code>).</p>
</li>
</ul>
</div></blockquote>
</section>
<section id="como-se-eligen-las-alternativas-de-completado">
<h3>9.4.4. Cómo se Eligen las Alternativas de Completado<a class="headerlink" href="#como-se-eligen-las-alternativas-de-completado" title="Link to this heading"></a></h3>
<p>Los comandos de completado funcionan reduciendo una gran lista de posibles alternativas de completado a un subconjunto más pequeño que coincide con lo que ha escrito en el minibuffer. En Ejemplo de Completado, dimos un ejemplo simple de este tipo de comparación. El procedimiento para determinar qué constituye una coincidencia es bastante intrincado. Emacs intenta ofrecer complementos plausibles en la mayoría de las circunstancias.</p>
<p>Emacs lleva a cabo el completado usando uno o más <em>estilos de completado</em>, conjuntos de criterios para emparejar el texto del minibuffer con las alternativas de completado. Durante el proceso, Emacs prueba cada estilo de completado uno por uno. Si un estilo produce una o más coincidencias, se usa como lista de alternativas de completado. Si no hay coincidencias, pasa al siguiente estilo.</p>
<p>La variable de lista <code class="docutils literal notranslate"><span class="pre">completion-styles</span></code> especifica los estilos de completado a usar. Cada elemento de la lista es el nombre de un estilo de completado (un símbolo Lisp). Los símbolos de estilo disponibles se almacenan en la variable <code class="docutils literal notranslate"><span class="pre">completion-styles-alist</span></code> (<strong>ver Variables de Completado</strong> en el Manual de Referencia de Emacs Lisp). Los estilos de completado por defecto son (en orden):</p>
<dl>
<dt>basic</dt><dd><p>Una alternativa de terminación o completado que coincida debe tener el mismo comienzo que el texto en el minibuffer antes del punto. Además, si hay algún texto en el minibúfer después
del punto, el resto de la alternativa de finalización debe contener ese texto como subcadena.</p>
</dd>
<dt>partial-completion</dt><dd><p>Este estilo de completado dinámico divide el texto del minibuffer en palabras separadas por guiones o espacios, y completa cada palabra por separado. (Por ejemplo, al completar
nombres de comandos, <code class="docutils literal notranslate"><span class="pre">em-l-m</span></code> se completa como <code class="docutils literal notranslate"><span class="pre">emacs-lisp-mode</span></code>).</p>
<p>Además, un <code class="docutils literal notranslate"><span class="pre">*</span></code> en el texto del minibuffer se trata como un <em>comodín</em>: coincide con cualquier cadena de caracteres en la posición correspondiente de la alternativa de compleción.</p>
</dd>
<dt>emacs22</dt><dd><p>Este estilo de completado es similar a <strong>basic</strong>, excepto que ignora el texto en el minibuffer después del punto. Se llama así porque corresponde al comportamiento de completado de
Emacs 22.</p>
</dd>
</dl>
<p>También se definen los siguientes estilos de completado adicionales, que puede añadir a <code class="docutils literal notranslate"><span class="pre">completion-styles</span></code> si lo desea (<strong>consulte Personalización</strong>):</p>
<dl>
<dt>substring</dt><dd><p>Una alternativa de finalización que coincida debe contener el texto del minibúfer anterior a punto y el texto del minibúfer posterior a punto como subcadenas (en ese mismo orden).</p>
<p>Así, si el texto en el minibuffer es <code class="docutils literal notranslate"><span class="pre">foobar</span></code>, con el punto entre <code class="docutils literal notranslate"><span class="pre">foo</span></code> y <code class="docutils literal notranslate"><span class="pre">bar</span></code>, coincide con <em>a</em>foo<em>b</em>bar<em>c</em>, donde <em>a</em>, <em>b</em>, y <em>c</em> pueden ser cualquier cadena
incluyendo la cadena vacía.</p>
</dd>
<dt>flex</dt><dd><p>Este dinámico estilo de completado dinámico, también conocido como <code class="docutils literal notranslate"><span class="pre">flx</span></code>, <code class="docutils literal notranslate"><span class="pre">fluzzy</span></code>, <code class="docutils literal notranslate"><span class="pre">scatter</span></code> (completado difuso o disperso), intenta completar usando subcadenas en orden. Por
ejemplo, puede considerar que <code class="docutils literal notranslate"><span class="pre">foo</span></code> coincide con <code class="docutils literal notranslate"><span class="pre">frodo</span></code> o <code class="docutils literal notranslate"><span class="pre">fbarbazoo</span></code>.</p>
</dd>
<dt>initials</dt><dd><p>Este estilo de completado muy riguroso intenta completar acrónimos e inicialismos. Por ejemplo, al completar nombres de comandos, hace coincidir <code class="docutils literal notranslate"><span class="pre">lch</span></code> con <code class="docutils literal notranslate"><span class="pre">list-command-history</span></code>.</p>
</dd>
</dl>
<p>También existe un estilo de completado muy simple llamado <code class="docutils literal notranslate"><span class="pre">emacs21</span></code>. En este estilo, si el texto en el minibuffer es <code class="docutils literal notranslate"><span class="pre">foobar</span></code>, sólo se consideran las coincidencias que empiezan por <code class="docutils literal notranslate"><span class="pre">foobar</span></code>.</p>
<p>Puede usar diferentes estilos de completado en diferentes situaciones, configurando la variable <code class="docutils literal notranslate"><span class="pre">completion-category-overrides</span></code>. Por ejemplo, la configuración por defecto dice que sólo se utilice la terminación básica y de subcadena para los nombres de los búferes.</p>
</section>
<section id="opciones-de-completado">
<h3>9.4.5 Opciones de Completado<a class="headerlink" href="#opciones-de-completado" title="Link to this heading"></a></h3>
<p>El uso de mayúsculas y minúsculas es importante cuando se completan argumentos que distinguen entre mayúsculas y minúsculas, como los nombres de comandos. Por ejemplo, al completar nombres de comandos, <code class="docutils literal notranslate"><span class="pre">AU</span></code> no se completa con <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>. Las diferencias entre mayúsculas y minúsculas se ignoran al completar argumentos en los que las mayúsculas y minúsculas no importan.</p>
<p>Al completar los nombres de archivo, se ignoran las diferencias entre mayúsculas y minúsculas si la variable <code class="docutils literal notranslate"><span class="pre">read-file-name-completion-ignore-case</span></code> es distinta de <code class="docutils literal notranslate"><span class="pre">nil</span></code> (nulo). El valor por defecto es <code class="docutils literal notranslate"><span class="pre">nil</span></code> en sistemas que distinguen entre mayúsculas y minúsculas, como GNU/Linux; es no-<code class="docutils literal notranslate"><span class="pre">nil</span></code> en sistemas que no distinguen entre mayúsculas y minúsculas, como Microsoft Windows. Cuando se completan nombres de búferes, se ignoran las diferencias entre mayúsculas y minúsculas si la variable <code class="docutils literal notranslate"><span class="pre">read-buffer-completion-ignore-case</span></code> no es <code class="docutils literal notranslate"><span class="pre">nil</span></code>; por defecto es <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
<p>Cuando se completan nombres de archivos, Emacs normalmente omite ciertas alternativas que se consideran poco probables de ser elegidas, tal y como determina la variable de lista <code class="docutils literal notranslate"><span class="pre">completion-ignored-extensions</span></code>. Cada elemento de la lista debe ser una cadena; cualquier nombre de fichero que termine en tal cadena se ignora como alternativa de completado. Cualquier elemento que termine en una barra (<code class="docutils literal notranslate"><span class="pre">/</span></code>) representa un nombre de subdirectorio. El valor estándar de <code class="docutils literal notranslate"><span class="pre">completion-ignored-extensions</span></code> tiene varios elementos, incluidos <code class="docutils literal notranslate"><span class="pre">.o</span></code>, <code class="docutils literal notranslate"><span class="pre">.elc</span></code> y <code class="docutils literal notranslate"><span class="pre">~</span></code>. Por ejemplo, si un directorio contiene <code class="docutils literal notranslate"><span class="pre">foo.c</span></code> y <code class="docutils literal notranslate"><span class="pre">foo.elc</span></code>, <code class="docutils literal notranslate"><span class="pre">foo</span></code> se completa en <code class="docutils literal notranslate"><span class="pre">foo.c</span></code>. Sin embargo, si todas las terminaciones posibles terminan en cadenas omitidas, no se ignoran: en el ejemplo anterior, <code class="docutils literal notranslate"><span class="pre">foo.e</span></code> termina en <code class="docutils literal notranslate"><span class="pre">foo.elc</span></code>. Emacs no tiene en cuenta las extensiones ignoradas al mostrar las alternativas de completado en la lista de completado.</p>
<p>El completado Shell es una versión extendida del completado de nombre de fichero, ver <strong>Opciones del Modo Shell</strong>.</p>
<p>Si <code class="docutils literal notranslate"><span class="pre">completion-auto-help</span></code> se establece a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, los comandos de completado nunca muestran el buffer de la lista de completado; debe teclear <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">?</span></code>) para mostrar la lista. Si el valor es <code class="docutils literal notranslate"><span class="pre">lazy</span></code>, Emacs sólo muestra el buffer de la lista de completado en el segundo intento de completar. En otras palabras, si no hay nada que completar, la primera <code class="docutils literal notranslate"><span class="pre">TAB</span></code> se hace eco de <code class="docutils literal notranslate"><span class="pre">Next</span> <span class="pre">char</span> <span class="pre">not</span> <span class="pre">unique</span></code> (Siguiente carácter no único); la segunda <code class="docutils literal notranslate"><span class="pre">TAB</span></code> muestra el buffer de la lista de completado. Si el valor es siempre, el búfer de la lista de finalización se muestra siempre que se intenta completar.</p>
<p>La visualización del búfer de la lista de completado después de que se muestre por primera vez también está controlada por <code class="docutils literal notranslate"><span class="pre">completion-auto-help</span></code>. Si el valor es <code class="docutils literal notranslate"><span class="pre">t</span></code> o <code class="docutils literal notranslate"><span class="pre">lazy</span></code>, la ventana que muestra las compleciones aparece cuando Emacs es capaz de completar (y puede aparecer de nuevo si Emacs es de nuevo incapaz de completar después de que escriba algo más de texto); si el valor es <code class="docutils literal notranslate"><span class="pre">always</span></code>, la ventana aparece sólo cuando sale de la compleción. El valor visible es un híbrido: se comporta como <code class="docutils literal notranslate"><span class="pre">t</span></code> cuando decide si abrir o no la ventana que muestra el buffer de la lista de completado, y como <code class="docutils literal notranslate"><span class="pre">always</span></code> cuando decide si cerrarla o no.</p>
<p>Emacs puede seleccionar opcionalmente la ventana que muestra las terminaciones cuando muestra esa ventana. Para habilitar este comportamiento, personalice la opción de usuario <code class="docutils literal notranslate"><span class="pre">completion-auto-select</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>, que cambia el comportamiento de <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) cuando Emacs muestra las terminaciones: pulsando <kbd class="kbd docutils literal notranslate">TAB</kbd> cambiará al buffer de la lista de terminaciones, y entonces podrá moverse a un candidato mediante comandos de movimiento del cursor y seleccionarlo con <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>). Si el valor de <code class="docutils literal notranslate"><span class="pre">completion-auto-select</span></code> es <code class="docutils literal notranslate"><span class="pre">second-tab</span></code>, entonces el primer <kbd class="kbd docutils literal notranslate">TAB</kbd> abrirá el buffer de la lista de compleciones, y el segundo cambiará a él.</p>
<p>Si <code class="docutils literal notranslate"><span class="pre">completion-cycle-threshold</span></code> no es nulo, los comandos de completado pueden recorrer las alternativas de finalización. Normalmente, si hay más de una alternativa de completado para el texto en el minibuffer, un comando de completado completa hasta la subcadena común más larga. Si cambia el valor de <code class="docutils literal notranslate"><span class="pre">completion-cycle-threshold</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>, la orden de completado completará la primera de esas alternativas; cada invocación posterior de la orden de completado la sustituirá por la siguiente alternativa de forma cíclica. Si le da a <code class="docutils literal notranslate"><span class="pre">completion-cycle-threshold</span></code> un valor numérico <em>n</em>, los comandos de completado cambian a este comportamiento cíclico sólo cuando hay <em>n</em> o menos alternativas.</p>
<p>Cuando se muestran las terminaciones, Emacs normalmente abrirá un nuevo buffer para mostrar las compleciones. Por defecto, las opciones se ordenarán horizontalmente, usando tantas columnas como quepan en el ancho de la ventana, pero esto puede cambiarse personalizando la opción de usuario <code class="docutils literal notranslate"><span class="pre">completions-format</span></code>. Si su valor es <code class="docutils literal notranslate"><span class="pre">vertical</span></code>, Emacs ordenará las compleciones verticalmente, y si es <code class="docutils literal notranslate"><span class="pre">one-column</span></code> (una columna), Emacs usará sólo una columna.</p>
<p>La opción de usuario <code class="docutils literal notranslate"><span class="pre">completions-sort</span></code> controla el orden en que se ordenan las terminaciones en el búfer <code class="docutils literal notranslate"><span class="pre">*Completions*</span></code>. El valor predeterminado es <code class="docutils literal notranslate"><span class="pre">alphabetical</span></code>, que ordena por orden alfabético. El valor <code class="docutils literal notranslate"><span class="pre">nil</span></code> desactiva la clasificación. El valor también puede ser una función, que se llamará con la lista de posibles terminaciones, y debe devolver la lista en el orden deseado.</p>
<p>Cuando <code class="docutils literal notranslate"><span class="pre">completions-max-height</span></code> es distinto de <code class="docutils literal notranslate"><span class="pre">nil</span></code>, limita el tamaño de la ventana de compleciones. Se especifica en líneas e incluye el modo, la línea de cabecera y un divisor inferior, si lo hay. Para un control más complejo de las propiedades de visualización de la ventana Completions, puede usar <code class="docutils literal notranslate"><span class="pre">display-buffer-alist</span></code> (<strong>vea Acción de Alistas para Visualización de Buffer</strong> en El Manual de Referencia de Emacs Lisp).</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">completions-header-format</span></code> es una cadena de especificaciones de formato para controlar la línea informativa que se muestra antes de la lista de candidatos a completar. Si contiene una construcción <code class="docutils literal notranslate"><span class="pre">%s</span></code>, se sustituye por el número de terminaciones mostradas en el buffer de la lista de terminaciones. Para suprimir la visualización de la línea informativa, personalice esta variable a <code class="docutils literal notranslate"><span class="pre">nil</span></code>. La cadena que es el valor de esta variable puede tener propiedades de texto para cambiar la apariencia visual de la línea de encabezado; algunas propiedades útiles face o <code class="docutils literal notranslate"><span class="pre">cursor-intangible</span></code> (<strong>ver Propiedades con Significados Especiales</strong> en El Manual de Referencia de Emacs Lisp).</p>
<p>Cuando <code class="docutils literal notranslate"><span class="pre">completions-highlight-face</span></code> nombra una cara, el candidato de compleción actual, el que será seleccionado tecleando <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) o pulsando el ratón, será resaltado usando esa cara. El valor por defecto de esta variable es <code class="docutils literal notranslate"><span class="pre">completions-highlight</span></code>; el valor es <code class="docutils literal notranslate"><span class="pre">nil</span></code> desactiva este resaltado. Esta característica utiliza la propiedad de texto especial <code class="docutils literal notranslate"><span class="pre">cursor-face</span></code>.</p>
</section>
</section>
<section id="historial-del-minibufer">
<h2>9.5 Historial del Minibúfer<a class="headerlink" href="#historial-del-minibufer" title="Link to this heading"></a></h2>
<p>Todo lo que escriba en el minibuffer se guarda en una lista del historial del minibufer para que pueda volver a usarlo fácilmente más tarde. Esto incluye candidatos a completado (como nombres de archivos, nombres de búfer, nombres de comandos, etc.) y cualquier otro tipo de entrada en el minibúfer. Puede usar los siguientes comandos para obtener rápidamente una respuesta anterior o alternativa en el minibuffer:</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>)</p>
<blockquote>
<div><p>Se desplaza al elemento anterior del historial del minibuffer, un argumento anterior (<code class="docutils literal notranslate"><span class="pre">previous-history-element</span></code>, elemento-historial-anterior).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>)</p>
<blockquote>
<div><p>Se pasa al siguiente elemento del historial del minibuffer (<code class="docutils literal notranslate"><span class="pre">next-history-element</span></code>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">UP</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate"></kbd> (<code class="docutils literal notranslate"><span class="pre">DOWN</span></code>)</div>
</div>
<blockquote>
<div><p>Como <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>) y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>) pero se desplaza a la línea anterior o siguiente de un elemento multilínea antes de ir al elemento anterior del
historial (<code class="docutils literal notranslate"><span class="pre">previous-line-or-history-element</span></code> y <code class="docutils literal notranslate"><span class="pre">next-line-or-history-element</span></code>)</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">r</kbd> <code class="docutils literal notranslate"><span class="pre">expreg</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-r</span> <span class="pre">expreg</span> <span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Se mueve a un elemento anterior del historial del minibuffer que coincida con la expresión regular expreg (<code class="docutils literal notranslate"><span class="pre">previous-matching-history-element</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">s</kbd> <code class="docutils literal notranslate"><span class="pre">expreg</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-s</span> <span class="pre">expreg</span> <span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Se mueve a un elemento posterior en el historial del minibuffer que coincida con la expresión regular (<code class="docutils literal notranslate"><span class="pre">next-matching-history-element</span></code>).</p>
</div></blockquote>
<p>Mientras está en el minibuffer, <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>, <code class="docutils literal notranslate"><span class="pre">previous-history-element</span></code>) se mueve por la lista del historial del minibuffer, un elemento cada vez. Cada <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>) recupera un elemento anterior de la lista del historial en el minibuffer, reemplazando su contenido existente. Si se escribe <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>, <code class="docutils literal notranslate"><span class="pre">next-history-element</span></code>), la lista del historial del minibúfer se desplaza en sentido inverso, recuperando entradas posteriores en el minibúfer.</p>
<p>Si tipea <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>) en el minibuffer cuando no hay entradas posteriores en la historia del minibuffer (e.g., si no ha tipeado previamente <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>)), Emacs intenta buscar desde una lista de argumentos por defecto: valores que es probable que ingrese. Esto se puede considerar como un movimiento a través del «historial futuro».</p>
<p>El «historial futuro» para nombres de archivo incluye varias alternativas posibles que puede encontrar útiles, como el nombre de archivo o la URL en el punto del búfer actual. Los valores por defecto puestos en el «historial futuro» en este caso están controlados por las funciones mencionadas en el valor de la opción <code class="docutils literal notranslate"><span class="pre">file-name-at-point-functions</span></code>. Por defecto, su valor invoca al paquete <code class="docutils literal notranslate"><span class="pre">ffap</span></code> (<strong>ver Buscando Archivos y URLs en el Punto</strong>), que intenta adivinar el archivo o URL por defecto a partir del texto alrededor del punto. Para desactivar esta suposición, personalice la opción a un valor nulo, entonces el «historial futuro» de nombres de ficheros incluirá sólo el fichero, si lo hay, visitado por el buffer actual, y el directorio por defecto.</p>
<p>Las teclas <kbd class="kbd docutils literal notranslate"></kbd> y <kbd class="kbd docutils literal notranslate"></kbd> (flecha ARRIBA y ABAJO) funcionan como <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd>, pero si el ítem actual del historial es más largo que una sola línea, le permiten moverse a la línea anterior o siguiente del ítem actual del historial antes de ir al ítem anterior o siguiente del historial.</p>
<p>Si edita el texto insertado por los comandos de historial del minibúfer <code class="docutils literal notranslate"><span class="pre">M-p</span></code> o <code class="docutils literal notranslate"><span class="pre">M-n</span></code>, esto no cambia su entrada en la lista de historial. Sin embargo, el argumento editado sí va al final de la lista del historial cuando lo envía.</p>
<p>Puede utilizar <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">M-r</span></code>, <code class="docutils literal notranslate"><span class="pre">previous-matching-history-element</span></code>, elemento histórico coincidente anterior) para buscar entre los elementos más antiguos de la lista histórica, y (<code class="docutils literal notranslate"><span class="pre">M-s</span></code>, <code class="docutils literal notranslate"><span class="pre">next-matching-history-element</span></code>, elemento histórico coincidente siguiente) para buscar entre las entradas más recientes. Cada uno de estos comandos pide una expresión regular como argumento y busca la primera entrada coincidente en el minibuffer. <strong>Véase Sintaxis de Expresiones Regulares</strong>, para una explicación de las expresiones regulares. Un prefijo numérico <em>n</em> significa que se busca la enésima entrada que coincida. Estos comandos son inusuales, ya que usan el minibuffer para leer el argumento de la expresión regular, aunque se invoquen desde el minibuffer. Una letra mayúscula en la expresión regular hace que la búsqueda distinga entre mayúsculas y minúsculas (<strong>véase Coincidencia Laxa Durante la Búsqueda</strong>).</p>
<p>También puede buscar en el historial mediante una búsqueda incremental. <strong>Ver Buscando en el Minibuffer</strong>.</p>
<p>Emacs mantiene listas de historial separadas para diferentes tipos de argumentos. Por ejemplo, hay una lista para nombres de ficheros, usada por todos los comandos que leen nombres de ficheros. Otras listas de historial incluyen nombres de buffer, nombres de comandos (usados por <code class="docutils literal notranslate"><span class="pre">M-x</span></code>), y argumentos de comandos (usados por comandos como <code class="docutils literal notranslate"><span class="pre">query-replace</span></code>).</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">history-length</span></code> especifica la longitud máxima de una lista de historial del minibuffer; al añadir un nuevo elemento se borra el más antiguo si la lista se alarga demasiado. Si el valor es <code class="docutils literal notranslate"><span class="pre">t</span></code>, no hay longitud máxima.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">history-delete-duplicates</span></code> especifica si se borran los duplicados del historial. Si no es nula, al añadir un nuevo elemento se eliminan de la lista todos los elementos que sean iguales a él. Por defecto es nulo.</p>
</section>
<section id="repeticion-de-comandos-del-minibuffer">
<h2>9.6 Repetición de Comandos del Minibuffer<a class="headerlink" href="#repeticion-de-comandos-del-minibuffer" title="Link to this heading"></a></h2>
<p>Cada orden que usa el minibuffer una vez se registra en una lista especial del historial, el <em>historial de comandos</em>, junto con los valores de sus argumentos, para que pueda repetir la orden completa. En particular, cada uso de <code class="docutils literal notranslate"><span class="pre">M-x</span></code> se registra allí, ya que este usa el minibuffer para leer el nombre del comando.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">ESC</kbd><kbd class="kbd docutils literal notranslate">ESC</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code>)</p>
<blockquote>
<div><p>Vuelve a ejecutar un comando reciente del minibuffer desde el historial de comandos (<code class="docutils literal notranslate"><span class="pre">repeat-complex-command</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">list-command-history</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">list-command-history</span></code>)</p>
<blockquote>
<div><p>Muestra el historial de comandos completo, con todos los comandos que <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">ESC</kbd><kbd class="kbd docutils literal notranslate">ESC</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code>) puede repetir, los más recientes primero</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code> vuelve a ejecutar un comando reciente que usó el minibuffer. Sin argumento, repite la última orden. Un argumento numérico especifica qué comando repetir; 1 significa el último, 2 el anterior, y así sucesivamente.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code> funciona convirtiendo la orden anterior en una expresión Lisp y entrando en un minibuffer inicializado con el texto de esa expresión. Incluso si no conoce Lisp, probablemente será obvio qué comando se muestra para la repetición. Si escribe sólo <kbd class="kbd docutils literal notranslate">RETURN</kbd>, el comando se repetirá sin cambios. También puede cambiar el comando editando la expresión Lisp antes de ejecutarla. El comando ejecutado se añade al principio del historial de comandos a menos que sea idéntico al elemento más reciente.</p>
<p>Una vez dentro del minibuffer de <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code>, puede usar los comandos habituales del historial del minibuffer (<strong>véase Historial del Minibuffer</strong>) para moverse por la lista del historial. Después de encontrar el comando anterior deseado, puede editar su expresión como de costumbre y luego ejecutarlo tecleando <kbd class="kbd docutils literal notranslate">RETURN</kbd>.</p>
<p>La búsqueda incremental no usa, estrictamente hablando, el minibuffer. Por lo tanto, aunque se comporta como un comando complejo, normalmente no aparece en la lista del historial de <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">ESC</span> <span class="pre">ESC</span></code>. Puede hacer que los comandos de búsqueda incremental aparezcan en el historial estableciendo <code class="docutils literal notranslate"><span class="pre">isearch-resume-in-command-history</span></code> a un valor no nulo. <strong>Véase Búsqueda Incremental</strong>.</p>
<p>La lista de comandos anteriores que usan minibuffer se almacena como una lista Lisp en la variable command-history. Cada elemento es una expresión Lisp que describe una orden y sus argumentos. Los programas Lisp pueden volver a ejecutar una orden llamando a eval con el elemento <code class="docutils literal notranslate"><span class="pre">command-history</span></code>.</p>
</section>
<section id="ingresar-contrasenas">
<h2>9.7 Ingresar Contraseñas<a class="headerlink" href="#ingresar-contrasenas" title="Link to this heading"></a></h2>
<p>A veces, puede que necesite escribir una contraseña en Emacs. Por ejemplo, cuando le pide al Editor que visite un fichero en otra máquina a través de un protocolo de red como FTP, a menudo necesita proporcionar una contraseña para acceder a la máquina (vea Archivos Remotos).</p>
<p>Ingresar una contraseña es similar a usar un minibuffer. Emacs muestra un prompt en el área de eco (como <code class="docutils literal notranslate"><span class="pre">Password:</span></code>); después de escribir la contraseña requerida, pulse <kbd class="kbd docutils literal notranslate">RETURN</kbd>
(<code class="docutils literal notranslate"><span class="pre">RET</span></code>) para enviarla. Para evitar que otros vean su contraseña, cada carácter que escriba se muestra como un asterisco (<code class="docutils literal notranslate"><span class="pre">*</span></code>) en lugar de su forma habitual.</p>
<p>La mayoría de las características y comandos asociados con el minibuffer <em>no pueden usarse</em> cuando se introduce una contraseña. No hay historial ni completado, y no puede cambiar de ventana ni efectuar ninguna otra acción con Emacs hasta que haya introducido la contraseña.</p>
<p>Mientras esta escribiendo la contraseña, puede pulsar <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) para borrar hacia atrás, eliminando el último carácter tecleado. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code>) borra todo lo que haya escrito hasta el momento. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) sale de la petición de contraseña (<strong>ver Salir y Abortar</strong>). <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-y</span></code>) inserta el kill actual en la contraseña (<strong>ver Matar y Mover Texto</strong>). Puede teclear <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) o <kbd class="kbd docutils literal notranslate">ESC</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span></code>) para enviar la contraseña. Cualquier otra tecla de autoinserción de caracteres inserta el carácter asociado en la contraseña, y cualquier otra entrada es ignorada.</p>
</section>
<section id="preguntas-si-o-no">
<h2>9.8 Preguntas Sí o No<a class="headerlink" href="#preguntas-si-o-no" title="Link to this heading"></a></h2>
<p>Un comando de Emacs puede requerir que responda a una pregunta de sí o no durante el curso de su ejecución. Hay dos tipos principales de preguntas de este tipo.</p>
<p>Para el primer tipo de pregunta sí o no, el prompt termina con <code class="docutils literal notranslate"><span class="pre">(y</span> <span class="pre">or</span> <span class="pre">n)</span></code>. La respuesta se da con una sola tecla, <code class="docutils literal notranslate"><span class="pre">y</span></code> o <code class="docutils literal notranslate"><span class="pre">n</span></code>, que sale inmediatamente del minibuffer y proporciona la respuesta. Por ejemplo, si teclea (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-w</span></code>, <code class="docutils literal notranslate"><span class="pre">write-file</span></code>, escribir-archivo) para guardar un buffer, e introduce el nombre de un archivo existente, Emacs emite un prompt como este:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>File foo.el exists; overwrite? (y or n)
</pre></div>
</div>
<p>El segundo tipo de consulta <code class="docutils literal notranslate"><span class="pre">yes-or-no</span></code> (sí-o-no) se emplea normalmente si dar una respuesta errónea puede tener consecuencias graves; por tanto, presenta una pregunta más larga que termina con <code class="docutils literal notranslate"><span class="pre">((yes</span> <span class="pre">or</span> <span class="pre">no)</span></code>. Por ejemplo, si invoca <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">k</span></code>, <code class="docutils literal notranslate"><span class="pre">kill-buffer</span></code>) en un buffer que visita un fichero con cambios sin guardar, Emacs activa el minibuffer con un prompt como este:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Buffer foo.el modified; kill anyway? (yes or no)
</pre></div>
</div>
<p>Para responder, debe escribir <code class="docutils literal notranslate"><span class="pre">yes</span></code> o <code class="docutils literal notranslate"><span class="pre">no</span></code> en el minibuffer, seguido de <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>).</p>
<p>Con ambos tipos de consulta sí o no, el minibúfer se comporta como se describe en las secciones anteriores; puede recentrar la ventana seleccionada con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">l</kbd> (<code class="docutils literal notranslate"><span class="pre">C-l</span></code>), desplazarse por esa ventana (<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">C-v</span></code>) o <kbd class="kbd docutils literal notranslate">AvPag</kbd> (<code class="docutils literal notranslate"><span class="pre">AvPág</span></code>) se desplaza hacia delante, <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">v</kbd> (<code class="docutils literal notranslate"><span class="pre">M-v</span></code>) o <kbd class="kbd docutils literal notranslate">RePág</kbd> (<code class="docutils literal notranslate"><span class="pre">RePág</span></code>) se desplaza hacia atrás), se cambia a otra ventana con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">o</span></code>), utilizar los comandos de historial <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>) y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-n</span></code>), etc. Escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) para salir de la consulta y abandonar el minibuffer y el comando de consulta (<strong>consulte Salir y Abortar</strong>).</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="08_ComBasicEdic.html" class="btn btn-neutral float-left" title="8 Comandos Básicos de Edición" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
<a href="10_EjecutarComndPorNombre.html" class="btn btn-neutral float-right" title="10 Ejecutar Comandos por Nombre" accesskey="n" rel="next">Siguiente <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,150 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>10 Ejecutar Comandos por Nombre &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="next" title="11 Ayuda" href="11_Ayuda.html" />
<link rel="prev" title="9 El Minibúfer" href="09_ElMinibufer.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="08_ComBasicEdic.html">8 Comandos Básicos de Edición</a></li>
<li class="toctree-l1"><a class="reference internal" href="09_ElMinibufer.html">9 El Minibúfer</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1"><a class="reference internal" href="11_Ayuda.html">11 Ayuda</a></li>
<li class="toctree-l1"><a class="reference internal" href="12_LaMarca-y-LaRegion.html">12 La marca y la región</a></li>
<li class="toctree-l1"><a class="reference internal" href="13_MatarMoverTxt.html">13 Matar y Mover Texto</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">10 Ejecutar Comandos por Nombre</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/10_EjecutarComndPorNombre.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ejecutar-comandos-por-nombre">
<h1>10 Ejecutar Comandos por Nombre<a class="headerlink" href="#ejecutar-comandos-por-nombre" title="Link to this heading"></a></h1>
<p>Cada comando de Emacs tiene un nombre que puede usar para lanzarlo. Por conveniencia, muchos comandos también tienen teclas. Puede ejecutar esos comandos pulsando las teclas, o ejecutarlos por su nombre. La mayoría de los comandos de Emacs no tienen atajos de teclado, así que la única forma de ejecutarlos es por nombre. (<strong>Ver Personalización de las Combinaciones de Teclas</strong>, para saber cómo configurarlas).</p>
<p>Por convención, un nombre de comando consiste en una o más palabras, separadas por guiones; por ejemplo, <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> o <code class="docutils literal notranslate"><span class="pre">manual-entry</span></code>. Los nombres de comandos suelen usar palabras completas en inglés para que sean más fáciles de recordar.</p>
<p>Para ejecutar un comando por nombre, inicie con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>), escriba el nombre del comando y termine con <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>). <code class="docutils literal notranslate"><span class="pre">M-x</span></code> usa el minibuffer para leer el nombre de la orden. La cadena <code class="docutils literal notranslate"><span class="pre">M-x</span></code> aparece al principio del minibuffer como prompt para recordarle que introduzca el nombre de la orden a ejecutar. <code class="docutils literal notranslate"><span class="pre">RET</span></code> sale del minibuffer y ejecuta el comando. Para más información sobre el minibuffer, <strong>véase El Minibuffer</strong>.</p>
<p>Puede usar el completado para introducir el nombre del comando. Por ejemplo, para invocar el comando <code class="docutils literal notranslate"><span class="pre">forward-char</span></code>, puede escribir</p>
<blockquote>
<div><p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
</div></blockquote>
<p>o</p>
<blockquote>
<div><p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">forw</span></code> <kbd class="kbd docutils literal notranslate">TAB</kbd> <code class="docutils literal notranslate"><span class="pre">c</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">forw</span></code> <code class="docutils literal notranslate"><span class="pre">TAB</span></code> <code class="docutils literal notranslate"><span class="pre">c</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
</div></blockquote>
<p>Tenga en cuenta que <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> es el mismo comando que se invoca con la tecla <code class="docutils literal notranslate"><span class="pre">C-f</span></code>. La existencia de una vinculación de teclas no le impide ejecutar el comando por su nombre.</p>
<p>Cuando <code class="docutils literal notranslate"><span class="pre">M-x</span></code> completa los comandos, ignora los que fueron declarados obsoletos en cualquier versión mayor anterior de Emacs; para éstos, tendrá que escribir su nombre completo. Se listan los comandos que fueron marcados como <em>obsoletos</em> en la versión actual de Emacs. (Los comandos obsoletos son aquellos para los que existen alternativas más nuevas y mejores, y que están programados para ser eliminados en alguna versión futura de Emacs).</p>
<p>Además, el completado M-x puede excluir comandos que no son relevantes para, y generalmente no pueden funcionar con, el modo mayor del buffer actual (<strong>ver Modos Mayores</strong>) y los modos menores (<strong>ver Modos Menores</strong>). Por defecto, no se excluye ningún comando, pero puede personalizar la opción <code class="docutils literal notranslate"><span class="pre">read-extended-command-predicate</span></code> para excluir esos comandos irrelevantes de los resultados de la finalización.</p>
<p>A la inversa, Emacs puede excluir todos los comandos excepto aquellos que son particularmente relevantes para el buffer actual. El comando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">M-S-x</span></code> que significa «meta shift x») funciona igual que <code class="docutils literal notranslate"><span class="pre">M-x</span></code>, pero en lugar de listar todos (o la mayoría) de los comandos que Emacs conoce, sólo listará los comandos que han sido marcados como «pertenecientes» al modo mayor actual, o a cualquier modo menor habilitado.</p>
<p>Para cancelar <code class="docutils literal notranslate"><span class="pre">M-x</span></code> y no ejecutar un comando, teclee <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) en lugar de introducir el nombre del comando. Volverá al nivel de comandos.</p>
<p>Para pasar un argumento numérico al comando que está invocando con <code class="docutils literal notranslate"><span class="pre">M-x</span></code>, especifique el argumento numérico antes de <code class="docutils literal notranslate"><span class="pre">M-x</span></code>. El valor del argumento aparece en el prompt mientras se lee el nombre del comando, y finalmente <code class="docutils literal notranslate"><span class="pre">M-x</span></code> pasa el argumento a ese comando. Por ejemplo, para pasar el argumento numérico 42 al comando <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> puede escribir <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">4</kbd><kbd class="kbd docutils literal notranslate">2</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code> <code class="docutils literal notranslate"><span class="pre">42</span></code> <code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">forward-char</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>).</p>
<p>Cuando el comando que ejecuta con <code class="docutils literal notranslate"><span class="pre">M-x</span></code> tiene un atajo de teclado, Emacs lo menciona en el área de eco después de ejecutar el comando. Por ejemplo, si teclea <kbd class="kbd docutils literal notranslate">Alt</kbd>-:kbd.`x` <code class="docutils literal notranslate"><span class="pre">forward-word</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">forward-word</span></code>), el mensaje dice que puede ejecutar el mismo comando tecleando M-f. Puede desactivar estos mensajes estableciendo la variable <code class="docutils literal notranslate"><span class="pre">suggest-key-bindings</span></code> en <code class="docutils literal notranslate"><span class="pre">nil</span></code>. El valor de <code class="docutils literal notranslate"><span class="pre">suggest-key-bindings</span></code> también puede ser un número, en cuyo caso Emacs mostrará el enlace durante tantos segundos antes de quitarlo de la pantalla. El comportamiento por defecto es mostrar el enlace durante 2 segundos.</p>
<p>Además, cuando <code class="docutils literal notranslate"><span class="pre">suggest-key-bindings</span></code> es distinto de <code class="docutils literal notranslate"><span class="pre">nil</span></code>, la lista de finalización de <code class="docutils literal notranslate"><span class="pre">M-x</span></code> muestra las combinaciones de teclas equivalentes para todos los comandos que las tienen.</p>
<p>Los comandos que no tienen atajos de teclado, aún pueden ser invocados después de teclear menos que su nombre completo en el prompt <code class="docutils literal notranslate"><span class="pre">M-x</span></code>. Emacs menciona estos atajos en el área de eco si son significativamente más cortos que el nombre completo del comando, y <code class="docutils literal notranslate"><span class="pre">extended-command-suggest-shorter</span></code> es distinto de <code class="docutils literal notranslate"><span class="pre">nil</span></code>. La configuración de <code class="docutils literal notranslate"><span class="pre">suggest-key-bindings</span></code> también afecta a estas sugerencias.</p>
<p>En este manual, cuando hablamos de ejecutar un comando por su nombre, a menudo omitimos el <code class="docutils literal notranslate"><span class="pre">RET</span></code> que termina el nombre. Así, podríamos decir <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>) en lugar de <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code> <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>). Mencionamos <code class="docutils literal notranslate"><span class="pre">RET</span></code> sólo para enfatizar, como cuando el comando va seguido de argumentos.</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>) funciona ejecutando el comando <code class="docutils literal notranslate"><span class="pre">execute-extended-command</span></code>, que se encarga de leer el nombre de otro comando e invocarlo.</p>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="09_ElMinibufer.html" class="btn btn-neutral float-left" title="9 El Minibúfer" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
<a href="11_Ayuda.html" class="btn btn-neutral float-right" title="11 Ayuda" accesskey="n" rel="next">Siguiente <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,539 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>11 Ayuda &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="next" title="12 La marca y la región" href="12_LaMarca-y-LaRegion.html" />
<link rel="prev" title="10 Ejecutar Comandos por Nombre" href="10_EjecutarComndPorNombre.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="08_ComBasicEdic.html">8 Comandos Básicos de Edición</a></li>
<li class="toctree-l1"><a class="reference internal" href="09_ElMinibufer.html">9 El Minibúfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="10_EjecutarComndPorNombre.html">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">11 Ayuda</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#resumen-de-la-ayuda">11.1 Resumen de la Ayuda</a></li>
<li class="toctree-l2"><a class="reference internal" href="#documentacion-de-una-tecla">11.2 Documentación de una Tecla</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ayuda-por-comando-o-nombre-de-variable">11.3 Ayuda por Comando o Nombre de Variable</a></li>
<li class="toctree-l2"><a class="reference internal" href="#apropos">11.4 Apropos</a></li>
<li class="toctree-l2"><a class="reference internal" href="#comandos-del-modo-ayuda">11.5 Comandos del Modo Ayuda</a></li>
<li class="toctree-l2"><a class="reference internal" href="#busqueda-de-paquetes-por-palabras-clave">11.6 Búsqueda de Paquetes por Palabras Clave</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ayuda-para-el-soporte-linguistico-internacional">11.7 Ayuda para el Soporte Lingüístico Internacional</a></li>
<li class="toctree-l2"><a class="reference internal" href="#otros-comandos-de-ayuda">11.8 Otros comandos de ayuda</a></li>
<li class="toctree-l2"><a class="reference internal" href="#archivos-de-ayuda">11.9 Archivos de Ayuda</a></li>
<li class="toctree-l2"><a class="reference internal" href="#ayuda-sobre-texto-activo-y-tooltips">11.10 Ayuda sobre Texto Activo y Tooltips</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="12_LaMarca-y-LaRegion.html">12 La marca y la región</a></li>
<li class="toctree-l1"><a class="reference internal" href="13_MatarMoverTxt.html">13 Matar y Mover Texto</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">11 Ayuda</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/11_Ayuda.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ayuda">
<h1>11 Ayuda<a class="headerlink" href="#ayuda" title="Link to this heading"></a></h1>
<p>Emacs proporciona una amplia variedad de comandos de ayuda, todos accesibles a través de la tecla prefijo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code> o, equivalentemente, la tecla de función
<kbd class="kbd docutils literal notranslate">F1</kbd> (<code class="docutils literal notranslate"><span class="pre">F1</span></code>)). Estos comandos de ayuda se describen en las siguientes secciones. También puede escribir <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-h</span></code>) para ver una lista de comandos de ayuda (<code class="docutils literal notranslate"><span class="pre">help-for-help</span></code>). Puede desplazarse por la lista con <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>) y <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) y, a continuación, escribir el comando de ayuda que desee. Para cancelar, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>).</p>
<p>Muchos comandos de ayuda muestran su información en un búfer especial, el <em>búfer de ayuda</em>. En este búfer, puede escribir <kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">SPC</span></code>) y <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>) para desplazarse y
<kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) para seguir los hipervínculos. <strong>Consulte Comandos del Modo Ayuda</strong>.</p>
<p>Por defecto, los comandos de ayuda muestran el búfer de ayuda en una ventana separada sin seleccionar dicha ventana. La variable <code class="docutils literal notranslate"><span class="pre">help-window-select</span></code> controla esto: su valor por defecto es <code class="docutils literal notranslate"><span class="pre">nil</span></code>; si se personaliza con el valor <code class="docutils literal notranslate"><span class="pre">t</span></code>, la ventana de ayuda es seleccionada incondicionalmente por los comandos de ayuda, y si su valor es <code class="docutils literal notranslate"><span class="pre">other</span></code>, la ventana de ayuda es seleccionada sólo si hay más de dos ventanas en el marco seleccionado.</p>
<p>Por el contrario, muchos comandos del búfer <code class="docutils literal notranslate"><span class="pre">*Help*</span></code> (Ayuda) abrirán una nueva ventana para mostrar los resultados. Por ejemplo, hacer clic en el enlace para mostrar el código fuente, o usar el comando <code class="docutils literal notranslate"><span class="pre">i</span></code> para mostrar la entrada del manual, abrirá (por defecto) una nueva ventana. Si <code class="docutils literal notranslate"><span class="pre">help-window-keep-selected</span></code> se cambia a no-<code class="docutils literal notranslate"><span class="pre">nil</span></code>, la ventana que muestra el búfer <code class="docutils literal notranslate"><span class="pre">*Help*</span></code> se reutilizará en su lugar.</p>
<p>Si está buscando una determinada función, pero no sabe cómo se llama o dónde buscarla, le recomendamos tres métodos. Primero, pruebe un comando apropos, luego intente buscar en el índice del manual, después busque en las FAQ y en las palabras clave del paquete, y finalmente intente listar paquetes externos.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">a</kbd> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Busca comandos cuyos nombres coincidan con los temas del argumento. El argumento puede ser una palabra clave, una lista de palabras clave o una expresión regular (<strong>véase Sintaxis
de Expresiones Regulares</strong>). <strong>Véase Apropos</strong>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">i</kbd><kbd class="kbd docutils literal notranslate">d</kbd><kbd class="kbd docutils literal notranslate">m</kbd> <code class="docutils literal notranslate"><span class="pre">emacs</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> <kbd class="kbd docutils literal notranslate">i</kbd> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd></div>
<div class="line">(<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span> <span class="pre">d</span> <span class="pre">m</span></code> <code class="docutils literal notranslate"><span class="pre">emacs</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code> <code class="docutils literal notranslate"><span class="pre">i</span></code> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</div>
</div>
<blockquote>
<div><p>Busca en los índices del manual Emacs Info el <em>tema</em> especificado como <em>argumento</em>, mostrando la primera coincidencia encontrada. Pulse <code class="docutils literal notranslate"><span class="pre">,</span></code> para ver las siguientes coincidencias.
Puede usar una expresión regular como <em>argumento</em>.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">i</kbd><kbd class="kbd docutils literal notranslate">d</kbd><kbd class="kbd docutils literal notranslate">m</kbd> <code class="docutils literal notranslate"><span class="pre">emacs</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> <kbd class="kbd docutils literal notranslate">s</kbd> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd></div>
<div class="line">(<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span> <span class="pre">d</span> <span class="pre">m</span></code> <code class="docutils literal notranslate"><span class="pre">emacs</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code> <code class="docutils literal notranslate"><span class="pre">s</span></code> <code class="docutils literal notranslate"><span class="pre">argumento</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</div>
</div>
<blockquote>
<div><p>Similar, pero busca en el texto del manual en lugar de en los índices.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-f</span></code>)</p>
<blockquote>
<div><p>Muestra las FAQ (Preguntas Frecuentes) de Emacs, usando Info.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">p</span></code>)</p>
<blockquote>
<div><p>Muestra los paquetes Emacs disponibles basándose en palabras clave. <strong>Ver Búsqueda de Paquetes por Palabras Clave</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">list-packages</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">list-packages</span></code>)</p>
<blockquote>
<div><p>Muestra una lista de paquetes externos. <strong>Ver Paquetes Emacs Lisp</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code>) o <kbd class="kbd docutils literal notranslate">F1</kbd> (<code class="docutils literal notranslate"><span class="pre">F1</span></code>) también significan «ayuda» en otros contextos. Por ejemplo, puede escribirlos después de una tecla de prefijo para ver una lista de las teclas que pueden seguir a la tecla de prefijo. (También puede usar <code class="docutils literal notranslate"><span class="pre">?</span></code> en este contexto. Algunas teclas de prefijo no admiten <code class="docutils literal notranslate"><span class="pre">C-h</span></code> o <code class="docutils literal notranslate"><span class="pre">?</span></code> de este modo, porque definen otros significados para esas entradas, pero todas admiten <code class="docutils literal notranslate"><span class="pre">F1</span></code>).</p>
<section id="resumen-de-la-ayuda">
<h2>11.1 Resumen de la Ayuda<a class="headerlink" href="#resumen-de-la-ayuda" title="Link to this heading"></a></h2>
<p>A continuación se ofrece un resumen de los comandos de ayuda para acceder a la documentación incorporada. La mayoría de ellos se describen con más detalle en las secciones siguientes.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">a</kbd> <strong>argumento</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code> <em>argumento</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra una lista de comandos cuyos nombres coinciden con <em>argumento</em> (<code class="docutils literal notranslate"><span class="pre">apropos-command</span></code>). <strong>Véase Apropos</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">b</span></code>)</p>
<blockquote>
<div><p>Muestra todas las combinaciones de teclas activas; primero las del modo menor, luego las del modo mayor y, por último, las combinaciones globales (<code class="docutils literal notranslate"><span class="pre">describe-bindings</span></code>). <strong>Consulte
Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">c</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span></code> <em>tecla</em>)</p>
<blockquote>
<div><p>Muestra el nombre del comando al que está vinculada la tecla de secuencia de <em>teclas</em> (<code class="docutils literal notranslate"><span class="pre">describe-key-briefly</span></code>, describe-tecla-brevemente). Aquí <code class="docutils literal notranslate"><span class="pre">c</span></code> significa «carácter». Para
obtener información más amplia sobre la <em>tecla</em>, use <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code>). <strong>Consulte Documentación de una Tecla</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">d</kbd> <strong>argumento</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">d</span></code> <em>argumento</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra los comandos y variables cuya documentación coincide con <em>argumento</em> (<code class="docutils literal notranslate"><span class="pre">apropos-documentation</span></code>). <strong>Véase Apropos</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">e</span></code>)</p>
<blockquote>
<div><p>Muestra el búfer <code class="docutils literal notranslate"><span class="pre">*Messages*</span></code> (<code class="docutils literal notranslate"><span class="pre">view-echo-area-messages</span></code>). <strong>Consulte Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">f</kbd> <strong>función</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> <em>función</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra documentación sobre la función Lisp de nombre <em>función</em> (<code class="docutils literal notranslate"><span class="pre">describe-function</span></code>). Dado que los comandos son funciones Lisp, esto también funciona para comandos, pero también
puede usar <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">x</span></code>. <strong>Consulte Ayuda por Comando o Nombre de Variable</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">h</span></code>)</p>
<blockquote>
<div><p>Muestra el archivo <code class="docutils literal notranslate"><span class="pre">HELLO</span></code>, que contiene ejemplos de varios juegos de caracteres.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span></code>)</p>
<blockquote>
<div><p>Ejecuta Info, el navegador de documentación de GNU (<code class="docutils literal notranslate"><span class="pre">info</span></code>). El manual de Emacs está disponible en Info. <strong>Ver Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code> <em>tecla</em>)</p>
<blockquote>
<div><p>Muestra el nombre y la documentación del comando que ejecuta <em>teclas</em> (<code class="docutils literal notranslate"><span class="pre">describe-key</span></code>). <strong>Véase Documentación de una Tecla</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">l</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">l</span></code>)</p>
<blockquote>
<div><p>Muestra una descripción de las últimas 300 pulsaciones de teclas (<code class="docutils literal notranslate"><span class="pre">view-lossage</span></code>). <strong>Consulte Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">m</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">m</span></code>)</p>
<blockquote>
<div><p>Muestra la documentación del modo mayor y los modos menores actuales (<code class="docutils literal notranslate"><span class="pre">describe-mode</span></code>). <strong>Consulte Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">n</span></code>)</p>
<blockquote>
<div><p>Muestra noticias de cambios recientes en Emacs (^view-emacs-news``). <strong>Ver Archivos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">o</kbd> <strong>simbolo</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">o</span></code> <em>símbolo</em>)</p>
<blockquote>
<div><p>Muestra la documentación del símbolo Lisp de nombre <em>simbolo</em> (<code class="docutils literal notranslate"><span class="pre">describe-symbol</span></code>). Esto mostrará la documentación de todo tipo de símbolos: funciones, variables y caras. <strong>Véase
Ayuda por Comando o Nombre de Variable</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">p</span></code>)</p>
<blockquote>
<div><p>Busca paquetes usando palabra clave como temática ( finder-by-keyword). <strong>Véase Búsqueda de Paquetes por Palabra Clave</strong>. Lista paquetes usando un búfer de menú de paquetes. <strong>Ver
Paquetes Emacs Lisp</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">P</kbd> <strong>paquete</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">P</span></code> <em>paquete</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra documentación sobre el <em>paquete</em> especificado (<code class="docutils literal notranslate"><span class="pre">describe-package</span></code>). <strong>Véase Búsqueda de Paquetes por Palabra Clave</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">r</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">r</span></code>)</p>
<blockquote>
<div><p>Muestra el manual de Emacs en Info (<code class="docutils literal notranslate"><span class="pre">info-emacs-manual</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">s</span></code>)</p>
<blockquote>
<div><p>Muestra el contenido de la <em>tabla de sintaxis</em> actual <code class="docutils literal notranslate"><span class="pre">(describe-syntax</span></code>). <strong>Consulte Otros Comandos de Ayuda</strong>. La tabla de sintaxis dice qué caracteres son delimitadores de
apertura, cuáles son partes de palabras, etc. <strong>Vea Tablas de Sintaxis</strong> en El Manual de Referencia de Emacs Lisp, para más detalles.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">t</span></code>)</p>
<blockquote>
<div><p>Accede al tutorial interactivo de Emacs (<code class="docutils literal notranslate"><span class="pre">help-with-tutorial</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">v</kbd> <strong>var</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">v</span></code> <em>var</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra la documentación de la variable Lisp de nombre <em>var</em> (<code class="docutils literal notranslate"><span class="pre">describe-variable</span></code>). <strong>Véase Ayuda por Comando o Nombre de Variable</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">w</kbd> <strong>comando</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">w</span></code> <em>comando</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra qué tecla/s ejecuta/n la orden de nombre <em>comando</em> (<code class="docutils literal notranslate"><span class="pre">where-is</span></code>). <strong>Véase Documentación de una Tecla</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">x</kbd> <strong>comando</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">x</span></code> <em>comando</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra documentación sobre el <em>comando</em> escrito (<code class="docutils literal notranslate"><span class="pre">describe-command</span></code>). <strong>Véase Ayuda por Comando o Nombre de Variable</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">C</kbd> <strong>codificación</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C</span></code> <em>codificación</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Permite mostrar el sistema de <em>codificación</em> (<code class="docutils literal notranslate"><span class="pre">describe-coding-system</span></code>). <strong>Véase Sistemas de Codificación</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">C</kbd> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C</span> <span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra los sistemas de codificación usados actualmente.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">F</kbd> <strong>comando</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">F</span></code> <em>comando</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Entra en Info y va al nodo que documenta el <em>comando</em> de Emacs escrito (<code class="docutils literal notranslate"><span class="pre">Info-goto-emacs-command-node</span></code>). <strong>Véase Ayuda por Comando o Nombre de Variable</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">I</kbd> <strong>método</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">I</span></code> <em>método</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra el método de <em>entrada</em> escrito (<code class="docutils literal notranslate"><span class="pre">describe-input-method</span></code>). <strong>Véase Seleccionar un Método de Entrada</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">K</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">K</span></code> <em>tecla</em>)</p>
<blockquote>
<div><p>Entra en Info y va al nodo que documenta la combinación de <em>teclas</em> (<code class="docutils literal notranslate"><span class="pre">Info-goto-emacs-key-command-node</span></code>). <strong>Véase Documentación de una Tecla</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">L</kbd> <strong>entorno-de-idioma</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">L</span></code> <em>entorno-de-idioma</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra información sobre los conjuntos de caracteres, sistemas de codificación y métodos de entrada escritos en <em>entorno-de-idioma</em> (<code class="docutils literal notranslate"><span class="pre">describe-language-environment</span></code>). <strong>Véase
Entornos de Lenguaje</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">S</kbd> <strong>símbolo</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">S</span></code> <em>símbolo</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Muestra la documentación Info sobre <em>símbolo</em> según el lenguaje de programación que esté editando (<code class="docutils literal notranslate"><span class="pre">info-lookup-symbol</span></code>). <strong>Consulte Otros Comandos de Ayuda</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">.</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">.</span></code>)</p>
<blockquote>
<div><p>Muestra el mensaje de ayuda para un área de texto especial, si el punto está en una (<code class="docutils literal notranslate"><span class="pre">display-local-help</span></code>). (Esto incluye, por ejemplo, enlaces en los búferes <code class="docutils literal notranslate"><span class="pre">*Help*</span></code>.) <strong>Ver
Ayuda sobre Texto Activo y Herramientas</strong>. Si invoca este comando con un argumento prefijo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">.</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code> <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">.</span></code>), y el punto está
sobre un botón o un widget, este comando abrirá un nuevo búfer que describe ese botón/widget.</p>
</div></blockquote>
</section>
<section id="documentacion-de-una-tecla">
<h2>11.2 Documentación de una Tecla<a class="headerlink" href="#documentacion-de-una-tecla" title="Link to this heading"></a></h2>
<p>Los comandos de ayuda para obtener información sobre una secuencia de teclas son <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-key-briefly</span></code>, describe-tecla-brevemente) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> ( <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code>, describe-tecla).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">c</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span></code> <em>tecla</em>) muestra en el área de eco el nombre del comando al que está vinculada esa tecla. Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span> <span class="pre">C-f</span></code>) muestra <code class="docutils literal notranslate"><span class="pre">forward-char</span></code>.</p>
<p>La combinación <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code> <em>tecla</em>) es similar pero da más información: muestra un búfer de ayuda que contiene la cadena de documentación del comando, que describe exactamente lo que hace el comando.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">K</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">K</span></code> <em>tecla</em>) muestra la sección del manual de Emacs que describe el comando correspondiente a <em>tecla</em>.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span></code>, <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code> y <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">K</span></code> funcionan para cualquier tipo de secuencias de teclas, incluidas las teclas de función, los menús y los eventos del ratón (excepto que <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">c</span></code> ignora los eventos de movimiento del ratón). Por ejemplo, después de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code>) puede seleccionar un elemento de menú de la barra de menús, para ver la cadena de documentación del comando que ejecuta.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">w</kbd> <strong>comando</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">w</span></code> <em>comando</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>) lista las teclas que están vinculadas al <em>comando</em>. Muestra la lista en el área de eco. Si dice que <em>comando</em> no está en ninguna tecla, significa que debe usar <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>) para ejecutarlo. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">w</span></code>) ejecuta el <em>comando</em> donde está.</p>
<p>Algunos modos en Emacs usan varios botones (<strong>ver Botones</strong> en El Manual de Referencia de Emacs Lisp) y widgets (<strong>ver Introducción</strong> en Emacs Widgets) que pueden ser pulsados para realizar alguna acción. Para averiguar qué función es invocada en última instancia por estos botones, Emacs proporciona los comandos <code class="docutils literal notranslate"><span class="pre">button-describe</span></code> y <code class="docutils literal notranslate"><span class="pre">widget-describe</span></code>, que deben ejecutarse con point sobre el botón.</p>
</section>
<section id="ayuda-por-comando-o-nombre-de-variable">
<h2>11.3 Ayuda por Comando o Nombre de Variable<a class="headerlink" href="#ayuda-por-comando-o-nombre-de-variable" title="Link to this heading"></a></h2>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">x</kbd> <strong>comando</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">x</span></code> <em>comando</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-command</span></code>) muestra la documentación del comando nombrado, en una ventana. Por ejemplo,</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">C</span><span class="o">-</span><span class="n">h</span> <span class="n">x</span> <span class="n">auto</span><span class="o">-</span><span class="n">fill</span><span class="o">-</span><span class="n">mode</span> <span class="n">RET</span>
</pre></div>
</div>
<p>muestra la documentación de <code class="docutils literal notranslate"><span class="pre">auto-fill-mode</span></code>. Así es como obtendría la documentación de un comando que no está ligado a ninguna tecla (uno que normalmente ejecutaría usando <code class="docutils literal notranslate"><span class="pre">M-x</span></code>).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">f</kbd> <strong>función</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> <em>función</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-function</span></code>) muestra la documentación de una función Lisp. Este comando está pensado para <em>funciones</em> Lisp que se utilizan en un programa Lisp. Por ejemplo, si acaba de escribir la expresión (<code class="docutils literal notranslate"><span class="pre">make-vector</span> <span class="pre">len</span></code>) y desea comprobar que está usando <code class="docutils literal notranslate"><span class="pre">make-vector</span></code> correctamente, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <code class="docutils literal notranslate"><span class="pre">make-vector</span></code> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span> <span class="pre">make-vector</span> <span class="pre">RET</span></code>). Además, dado que todos los comandos son funciones Lisp, también puede utilizar este comando para ver la documentación de cualquier comando.</p>
<p>Si escribe <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">f</kbd> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span> <span class="pre">RET</span></code>), se describe la función llamada por la expresión Lisp más interna en el búfer alrededor del punto, <em>siempre que</em> el nombre de la función sea una función Lisp válida y definida. (Ese nombre aparece por defecto mientras se introduce el argumento.) Por ejemplo, si el punto se encuentra a continuación del texto <code class="docutils literal notranslate"><span class="pre">(make-vector</span> <span class="pre">(car</span> <span class="pre">x)</span></code>, la lista más interna que contiene punto es la que empieza por <code class="docutils literal notranslate"><span class="pre">(make-vector</span></code>, por lo que <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span> <span class="pre">RET</span></code> describe la función <code class="docutils literal notranslate"><span class="pre">make-vector</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> también es útil para verificar que ha escrito correctamente el nombre de una función. Si el prompt del minibúfer para <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> muestra el nombre de la función del búfer por defecto, significa que ese nombre está definido como una función Lisp. Escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) para cancelar el comando <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> si realmente no desea ver la documentación.</p>
<p>Si solicita ayuda para una función autocargada cuyo formulario <code class="docutils literal notranslate"><span class="pre">autoload</span></code> (<strong>vea Autocarga</strong> en el Manual de Referencia de Emacs Lisp) no proporciona una cadena doc, el búfer <code class="docutils literal notranslate"><span class="pre">*Help*</span></code> no tendrá ninguna cadena doc para mostrar. En ese caso, si <code class="docutils literal notranslate"><span class="pre">help-enable-symbol-autoload</span></code> es distinto de <code class="docutils literal notranslate"><span class="pre">nil</span></code>, Emacs intentará cargar el fichero en el que está definida la función para ver si hay una cadena doc allí.</p>
<p>Puede obtener una visión general de las funciones relevantes para un tema en particular usando el comando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">shortdoc</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">shortdoc</span></code>). Esto le preguntará por un área de interés, por ejemplo, <kbd class="kbd docutils literal notranslate">string</kbd> (cadena), y le llevará a un búfer donde se listan muchas de las funciones relevantes para el manejo de cadenas.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">v</span></code> (<code class="docutils literal notranslate"><span class="pre">describe-variable</span></code>) es como <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> pero describe variables Lisp en lugar de funciones Lisp. Su valor por defecto es el símbolo Lisp alrededor o antes de punto, si ese es el nombre de una variable Lisp definida. <strong>Véase Variables</strong>.</p>
<p>Los búferes de ayuda que describen variables y funciones Emacs normalmente tienen hipervínculos al código fuente correspondiente, si tiene instalados los archivos fuente (<strong>vea Hipervínculos y Características de Navegación Web</strong>).</p>
<p>Para encontrar la documentación de un comando en un manual, use <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">F</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">F</span></code>, <code class="docutils literal notranslate"><span class="pre">Info-goto-emacs-command-node</span></code>). Esto conoce varios manuales, no sólo el manual de Emacs, y encuentra el correcto.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">o</span></code> (<code class="docutils literal notranslate"><span class="pre">describe-symbol</span></code>) es como <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> y <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">v</span></code>, pero describe cualquier símbolo, ya sea una función, una variable o una cara. si el símbolo tiene más de una definición, como por ejemplo tiene ambas definiciones, como función y como variable, este comando mostrará la documentación de todas ellas, una tras otra.</p>
<p>Si la opción de Usuario <code class="docutils literal notranslate"><span class="pre">completions-detailed</span></code> no es nula, algunos comandos proporcionan detalles sobre los posibles valores al mostrar las terminaciones. Por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code>) o <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>) incluirá la primera línea de la cadena doc, y también dirá si cada símbolo es una función o una variable (y así sucesivamente). Los detalles que se incluyen varían en función del comando usado</p>
</section>
<section id="apropos">
<h2>11.4 Apropos<a class="headerlink" href="#apropos" title="Link to this heading"></a></h2>
<p>Los comandos <em>apropos</em> responden a preguntas como: «¿Cuáles son los comandos para trabajar con archivos?». Más precisamente, Usted especifica su consulta como un <em>patrón apropos</em>, que puede ser una palabra, una lista de palabras o una expresión regular.</p>
<p>Cada uno de los siguientes comandos apropos lee un patrón apropos en el minibúfer, busca elementos que coincidan con el patrón y muestra los resultados en una ventana diferente.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code>)</p>
<blockquote>
<div><p>Busca comandos (<code class="docutils literal notranslate"><span class="pre">apropos-command</span></code>). Con un argumento prefijo, busca también funciones no interactivas.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <strong>apropos</strong> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos</span></code>)</p>
<blockquote>
<div><p>Busca funciones y variables. Se pueden encontrar tanto funciones interactivas (comandos) como funciones no interactivas.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">apropos-user-options</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos-user-options</span></code>)</p>
<blockquote>
<div><p>Busca variables personalizables por el Usuario. Con un argumento prefijo, busca también variables no personalizables.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">apropos-variable</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos-variable</span></code>)</p>
<blockquote>
<div><p>Busca de variables. Con un argumento prefijo, busca sólo variables personalizables.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">apropos-local-variable</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos-local-variable</span></code>)</p>
<blockquote>
<div><p>Busca de variables locales en el búfer.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">apropos-value</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos-value</span></code>)</p>
<blockquote>
<div><p>Busca variables cuyos valores coincidan con el patrón especificado. Con un argumento prefijo, busca también funciones con definiciones que coincidan con el patrón, y símbolos Lisp
con propiedades que coincidan con el patrón.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">apropos-local-value</span></code> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">apropos-local-value</span></code>)</p>
<blockquote>
<div><p>Busca variables locales del búfer cuyos valores coincidan con el patrón especificado.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">d</span></code>)</p>
<blockquote>
<div><p>Busca de funciones y variables cuyas cadenas de documentación coincidan con el patrón especificado (<code class="docutils literal notranslate"><span class="pre">apropos-documentation</span></code>).</p>
</div></blockquote>
<p>El tipo más simple de patrón apropos es una palabra. Cualquier cosa que contenga esa palabra coincide con el patrón. Así, para encontrar comandos que funcionen con archivos, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">a</kbd> <strong>archivo</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code> <em>archivo</em> <code class="docutils literal notranslate"><span class="pre">RET</span></code>). Esto muestra una lista de todos los nombres de comandos que contienen <em>archivo</em>, incluyendo <code class="docutils literal notranslate"><span class="pre">copy-file</span></code> (copiar-archivo), <code class="docutils literal notranslate"><span class="pre">find-file</span></code> (buscar-archivo), etc. Cada nombre de comando viene con una breve descripción y una lista de comandos. Cada nombre de comando viene con una breve descripción y una lista de teclas con las que puede invocarlo actualmente. En nuestro ejemplo, diría que puede invocar <code class="docutils literal notranslate"><span class="pre">find-dile</span></code> (buscar-archivo) tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-f</span></code>).</p>
<p>Por defecto, la ventana que muestra el búfer apropos con los resultados de la consulta no está seleccionada, pero puede hacer que lo esté personalizando la variable <code class="docutils literal notranslate"><span class="pre">help-window-select</span></code> con cualquier valor que no sea nulo.</p>
<p>Para obtener más información sobre una definición de función, variable o propiedad de símbolo que aparece en un búfer apropos, puede hacer clic en él con <code class="docutils literal notranslate"><span class="pre">ratón-1</span></code> o <code class="docutils literal notranslate"><span class="pre">ratón-2</span></code>, o desplazarse hasta allí y escribir <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>).</p>
<p>Cuando se especifica más de una palabra en el patrón apropos, un nombre debe contener al menos dos de las palabras para coincidir. Así, si está buscando comandos para matar un trozo de texto antes de punto, podría intentar <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code> <code class="docutils literal notranslate"><span class="pre">kill</span> <span class="pre">backward</span> <span class="pre">behind</span> <span class="pre">before</span></code> <code class="docutils literal notranslate"><span class="pre">RET</span></code>. El nombre real del comando <code class="docutils literal notranslate"><span class="pre">kill-backward</span></code> coincidirá con eso; si hubiera un comando <code class="docutils literal notranslate"><span class="pre">kill-text-before</span></code>, también coincidiría, ya que contiene dos de las palabras especificadas.</p>
<p>Para una flexibilidad aún mayor, puede especificar una expresión regular (<strong>consulte Sintaxis de Expresiones Regulares</strong>). Un patrón apropos se interpreta como una expresión regular si contiene alguno de los caracteres especiales de expresión regular, <code class="docutils literal notranslate"><span class="pre">^$*+?.\[</span></code>.</p>
<p>Siguiendo las convenciones para nombrar los comandos de Emacs, aquí hay algunas palabras que encontrará útiles en los patrones apropos. Usándolas en <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">a</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">a</span></code>), también se hará una idea de las convenciones de nomenclatura.</p>
<blockquote>
<div><p>char, line, word, sentence, paragraph, region, page, sexp, list, defun, rect, buffer, frame, window, face, file, dir, register, mode, beginning, end, forward, backward, next,
previous, up, down, search, goto, kill, delete, mark, insert, yank, fill, indent, case, change, set, what, list, find, view, describe, default.</p>
<p>caracter, linea, palabra, frase, parrafo, region, pagina, expresión, lista, definición de función, rect, búfer, marco, ventana, cara, archivo, dir, registro, modo, principio, fin,
adelante, atras, siguiente, anterior, arriba, abajo, buscar, ir a, matar, borrar, marcar, insertar, tirar, rellenar, sangrar, caso, cambiar, establecer, que, lista, encontrar, ver,
describir, por defecto.</p>
</div></blockquote>
<p>Si la variable <code class="docutils literal notranslate"><span class="pre">apropos-do-all</span></code> no es nula, la mayoría de los comandos apropos se comportan como si se les hubiera dado un argumento prefijo. Hay una excepción: <code class="docutils literal notranslate"><span class="pre">apropos-variable</span></code> sin un argumento prefijo siempre buscará todas las variables, sin importar cuál sea el valor de <code class="docutils literal notranslate"><span class="pre">apropos-do-all</span></code>.</p>
<p>Por defecto, todos los comandos apropos excepto <code class="docutils literal notranslate"><span class="pre">apropos-documentation</span></code> listan sus resultados en orden alfabético. Si la variable <code class="docutils literal notranslate"><span class="pre">apropos-sort-by-scores</span></code> no es nula, estos comandos intentan adivinar la relevancia de cada resultado y muestran primero los más relevantes. El comando <code class="docutils literal notranslate"><span class="pre">apropos-documentation</span></code> lista sus resultados en orden de relevancia por defecto; para listarlos en orden alfabético, cambie la variable <code class="docutils literal notranslate"><span class="pre">apropos-documentation-sort-by-scores</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
</section>
<section id="comandos-del-modo-ayuda">
<h2>11.5 Comandos del Modo Ayuda<a class="headerlink" href="#comandos-del-modo-ayuda" title="Link to this heading"></a></h2>
<p>Los búferes de ayuda tienen el modo Ayuda como modo principal. El modo Ayuda proporciona los mismos comandos que el modo Vista (ver Modo Vista); por ejemplo, SPC se desplaza hacia adelante, y DEL o S-SPC se desplaza hacia atrás. También proporciona algunos comandos especiales:</p>
<p><kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>)</p>
<blockquote>
<div><p>Sigue una referencia cruzada en el punto (<code class="docutils literal notranslate"><span class="pre">help-follow</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>)</p>
<blockquote>
<div><p>Hacer avanzar el punto hasta el siguiente hipervínculo (forward-button).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">S-TAB</span></code>)</p>
<blockquote>
<div><p>Se sitúa en el hipervínculo anterior (backward-button).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><code class="docutils literal notranslate"><span class="pre">mouse-1</span></code></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">mouse-2</span></code></div>
</div>
<blockquote>
<div><p>Sigue un hipervínculo en el que se hace clic.</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">n</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">p</span></code>)</div>
</div>
<blockquote>
<div><p>Avanza y retrocede entre las páginas del búfer de ayuda.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-c</span></code>)</p>
<blockquote>
<div><p>Muestra toda la documentación sobre el símbolo en el punto (<code class="docutils literal notranslate"><span class="pre">help-follow-symbol</span></code>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-f</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">r</kbd> (<code class="docutils literal notranslate"><span class="pre">r</span></code>)</div>
</div>
<blockquote>
<div><p>Avanza en el historial de comandos de ayuda (<code class="docutils literal notranslate"><span class="pre">help-go-forward</span></code>).</p>
</div></blockquote>
<div class="line-block">
<div class="line"><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-b</span></code>)</div>
<div class="line"><kbd class="kbd docutils literal notranslate">l</kbd> (<code class="docutils literal notranslate"><span class="pre">l</span></code>)</div>
</div>
<blockquote>
<div><p>Retrocede en el historial de comandos de ayuda (<code class="docutils literal notranslate"><span class="pre">help-go-back</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">s</span></code>)</p>
<blockquote>
<div><p>Consulta la fuente del tema de ayuda actual (si existe) (<code class="docutils literal notranslate"><span class="pre">help-view-source</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">i</span></code>)</p>
<blockquote>
<div><p>Busca el tema actual en los manuale(s) (<code class="docutils literal notranslate"><span class="pre">help-goto-info</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">I</kbd> (<code class="docutils literal notranslate"><span class="pre">I</span></code>)</p>
<blockquote>
<div><p>Busca el tema actual en el manual de Emacs Lisp (<code class="docutils literal notranslate"><span class="pre">help-goto-lispref-info</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">c</span></code>)</p>
<blockquote>
<div><p>Personaliza la variable o la cara (<code class="docutils literal notranslate"><span class="pre">help-customize</span></code>).</p>
</div></blockquote>
<p>Cuando un nombre de función, de variable o de cara (<strong>véase Caras de Texto</strong>) aparece en la documentación en el búfer de ayuda, normalmente es un hipervínculo subrayado. Para ver la documentación asociada, mueva el punto allí y escriba <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>, <code class="docutils literal notranslate"><span class="pre">help-follow</span></code>), o haga clic en el hipervínculo con <code class="docutils literal notranslate"><span class="pre">ratón-1</span></code> o <code class="docutils literal notranslate"><span class="pre">ratón-2</span></code>. Al hacerlo, se reemplaza el contenido del búfer de ayuda. Para volver sobre sus pasos, escriba <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-b</span></code> o <code class="docutils literal notranslate"><span class="pre">l</span></code> (<code class="docutils literal notranslate"><span class="pre">help-go-back</span></code>). Mientras vuelve sobre sus pasos, puede avanzar utilizando <code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-f</span></code> o <code class="docutils literal notranslate"><span class="pre">r</span></code> (<code class="docutils literal notranslate"><span class="pre">help-go-forward</span></code>).</p>
<p>Para desplazarse entre hipervínculos en un búfer de ayuda, use <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">TAB</span></code>, <code class="docutils literal notranslate"><span class="pre">forward-button</span></code>) para avanzar al siguiente hipervínculo y <kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">``S-TAB</span></code>, <code class="docutils literal notranslate"><span class="pre">backward-button</span></code>) para retroceder al hipervínculo anterior. Estos comandos actúan cíclicamente; por ejemplo, si se escribe <kbd class="kbd docutils literal notranslate">TAB</kbd> en el último hipervínculo, se retrocede al primer hipervínculo.</p>
<p>Por defecto, muchos de los enlaces del búfer de ayuda se muestran rodeados de comillas. Si la opción de Usuario <code class="docutils literal notranslate"><span class="pre">help-clean-buttons</span></code> no es nula, estos caracteres entrecomillados se eliminan del búfer.</p>
<p>Los búfers de ayuda producidos por algunos comandos de ayuda (como <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">b</span></code>, que muestra una larga lista de combinaciones de teclas) se dividen en páginas mediante el carácter <code class="docutils literal notranslate"><span class="pre">^L</span></code>. En estos búferes, el comando <kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">n</span></code>, <code class="docutils literal notranslate"><span class="pre">help-goto-next-page</span></code>) lo llevará al siguiente inicio de página, y el comando <kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">p</span></code>, <code class="docutils literal notranslate"><span class="pre">help-goto-previous-page</span></code>) lo llevará al anterior inicio de página. De esta forma podrá navegar rápidamente entre los distintos tipos de documentación de un búfer de ayuda.</p>
<p>Un búfer de ayuda también puede contener hipervínculos a manuales de información, definiciones de código fuente y URL (páginas web). Los dos primeros se abren en Emacs, y el tercero usando un navegador web a través del comando <code class="docutils literal notranslate"><span class="pre">browse-url</span></code> (<strong>ver Siguiendo URLs</strong>).</p>
<p>Para ver toda la documentación sobre cualquier símbolo en el texto, mueva el puntero sobre el símbolo y escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-c</span> <span class="pre">C-c</span></code>, <code class="docutils literal notranslate"><span class="pre">help-follow-symbol</span></code>). Esto muestra la documentación para todos los significados del símbolo-como una variable, como una función, y/o como una cara.</p>
</section>
<section id="busqueda-de-paquetes-por-palabras-clave">
<h2>11.6 Búsqueda de Paquetes por Palabras Clave<a class="headerlink" href="#busqueda-de-paquetes-por-palabras-clave" title="Link to this heading"></a></h2>
<p>La mayoría de las características opcionales de Emacs están agrupadas en paquetes. Emacs contiene varios cientos de paquetes incorporados, y pueden instalarse más a través de la red (<strong>ver Paquetes Emacs Lisp</strong>).</p>
<p>Para hacer más fácil encontrar paquetes relacionados con un tema, la mayoría de los paquetes están asociados con una o más palabras clave basadas en lo que hacen. Teclee <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">p</span></code>, <code class="docutils literal notranslate"><span class="pre">finder-by-keyword</span></code>) para obtener una lista de palabras clave de paquetes, junto con una descripción de lo que significan las palabras clave. Para ver una lista de paquetes para una palabra clave dada, escriba <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) en esa línea; esto muestra la lista de paquetes en un búfer de Menú de Paquetes (<strong>vea El Búfer de Menú de Paquetes</strong>).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">P</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">P</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-package</span></code>) pide el nombre de un paquete (<strong>ver Paquetes Emacs Lisp</strong>), y muestra un búfer de ayuda describiendo los atributos del paquete y las características que implementa. El búfer lista las palabras clave relacionadas con el paquete en forma de botones. Pulse sobre un botón con el <code class="docutils literal notranslate"><span class="pre">ratón-1</span></code> o <code class="docutils literal notranslate"><span class="pre">ratón-2</span></code> para ver la lista de otros paquetes relacionados con esa palabra clave.</p>
</section>
<section id="ayuda-para-el-soporte-linguistico-internacional">
<h2>11.7 Ayuda para el Soporte Lingüístico Internacional<a class="headerlink" href="#ayuda-para-el-soporte-linguistico-internacional" title="Link to this heading"></a></h2>
<p>Para obtener información sobre un entorno de idioma específico (<strong>consulte Entornos de Idiomas</strong>), escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">L</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">L</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-language-environment</span></code>). Aparecerá un búfer de ayuda en el que se describen los idiomas admitidos por el entorno de idioma y se enumeran los conjuntos de caracteres asociados, los sistemas de codificación y los métodos de entrada, así como algunos ejemplos de texto para ese entorno de idioma.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">h</span></code>, <code class="docutils literal notranslate"><span class="pre">view-hello-file</span></code>) muestra el archivo <code class="docutils literal notranslate"><span class="pre">etc/HELLO</span></code>, que muestra varios juegos de caracteres mostrando cómo decir «hola» en muchos idiomas.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">I</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">I</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-input-method</span></code>) describe un método de entrada, ya sea un método de entrada especificado, o por defecto el método de entrada actualmente en uso. <strong>Véase Métodos de Entrada</strong>.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">C</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C</span></code>, <code class="docutils literal notranslate"><span class="pre">described-coding-system</span></code>) describe sistemas de codificación, ya sea un sistema de codificación especificado o los que se utilizan actualmente. <strong>Véase Sistemas de Codificación</strong>.</p>
</section>
<section id="otros-comandos-de-ayuda">
<h2>11.8 Otros comandos de ayuda<a class="headerlink" href="#otros-comandos-de-ayuda" title="Link to this heading"></a></h2>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span></code>, <code class="docutils literal notranslate"><span class="pre">info</span></code>) ejecuta el programa Info, que explora archivos de documentación estructurados. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">4</kbd> <kbd class="kbd docutils literal notranslate">i</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">4</span> <span class="pre">i</span></code>, <code class="docutils literal notranslate"><span class="pre">info-other-window</span></code>) hace lo mismo, pero muestra el buffer de Info en otra ventana. El manual completo de Emacs está disponible en Info, junto con muchos otros manuales del sistema GNU. Escriba h después de entrar en Info para ejecutar un tutorial sobre el uso de Info.</p>
<p>Con un argumento numérico <em>n</em>, <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span></code> selecciona el buffer de Info <code class="docutils literal notranslate"><span class="pre">*info*&lt;n&gt;</span></code>. Esto es útil si desea navegar por varios manuales Info simultáneamente. Si se especifica sólo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code> como) argumento prefijo, <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">i</span></code> solicita el nombre de un archivo de documentación, de modo que se puede navegar por un archivo que no tenga una entrada en el menú Info de nivel superior.</p>
<p>Los comandos de ayuda <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">F</kbd> <strong>función</strong> <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">F</span></code> <em>función</em> <kbd class="kbd docutils literal notranslate">RET</kbd>) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">K</kbd> <strong>tecla</strong> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">K</span></code> <em>tecla</em>), descritos anteriormente, entran en Info y van directamente a la documentación de la <em>función</em> o <em>tecla</em>.</p>
<p>Al editar un programa, si dispone de una versión Info del manual del lenguaje de programación, puede usar <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">S</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">S</span></code>, <code class="docutils literal notranslate"><span class="pre">info-lookup-symbol</span></code>) para encontrar una entrada para un símbolo (palabra clave, función o variable) en el manual adecuado. Los detalles del funcionamiento de este comando dependen del modo principal.</p>
<p>Si ocurre algo sorprendente y no está seguro de lo que ha tecleado, utilice <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> :kbd:´l (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">l</span></code>, <code class="docutils literal notranslate"><span class="pre">view-lossage</span></code>). <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">l</span></code> muestra tus últimas pulsaciones de teclas y los comandos que invocaron. Por defecto, Emacs almacena las últimas 300 pulsaciones; si lo desea, puede cambiar este número con el comando <code class="docutils literal notranslate"><span class="pre">lossage-size</span></code>. Si ve comandos con los que no está familiarizado, puede usar <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">k</span></code> o <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">f</span></code> para averiguar qué hacen.</p>
<p>Para revisar los mensajes recientes del área de eco, utilice <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">e</span></code>, <code class="docutils literal notranslate"><span class="pre">view-echo-area-messages</span></code>). Esto muestra el buffer <code class="docutils literal notranslate"><span class="pre">*Messages*</span></code>, donde se guardan esos mensajes.</p>
<p>Cada modo principal de Emacs normalmente redefine algunas teclas y realiza otros cambios en el funcionamiento de la edición. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">m</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">m</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-mode</span></code>) muestra documentación sobre el modo principal actual, que normalmente describe los comandos y características que cambian en este modo, y también sus atajos de teclado.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">b</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-bindings</span></code>) y <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">s</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-syntax</span></code>) muestran otra información sobre el entorno actual dentro de Emacs. <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">b</span></code> muestra una lista de todas las combinaciones de teclas ahora en efecto: primero las combinaciones locales de los modos menores actuales, luego las combinaciones locales definidas por el modo mayor actual, y finalmente las combinaciones globales (<strong>ver Personalización de Combinaciones de Teclas</strong>). <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">s</span></code> muestra el contenido de la tabla de sintaxis, con explicaciones de la sintaxis de cada carácter (<strong>véase Tablas de Sintaxis</strong> en el Manual de Referencia de Emacs Lisp).</p>
<p>Puede obtener una lista de subcomandos para una tecla prefijo en particular tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span></code>), <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">?</span></code>), o <kbd class="kbd docutils literal notranslate">F1</kbd> (<code class="docutils literal notranslate"><span class="pre">F1</span></code>, <code class="docutils literal notranslate"><span class="pre">describe-prefix-bindings</span></code>) después de la tecla prefijo. (Hay algunas teclas de prefijo para las que no funcionan todas estas teclas, las que proporcionan sus propias combinaciones para esa tecla. Una de estas teclas de prefijo es <kbd class="kbd docutils literal notranslate">ESC</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span></code>), porque <kbd class="kbd docutils literal notranslate">ESC</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span> <span class="pre">C-h</span></code>) y <kbd class="kbd docutils literal notranslate">ESC</kbd> <kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span> <span class="pre">?</span></code>) son en realidad <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-h</span></code>, <code class="docutils literal notranslate"><span class="pre">mark-defun</span></code>) y <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">?</kbd> (<code class="docutils literal notranslate"><span class="pre">M-?</span></code>, <code class="docutils literal notranslate"><span class="pre">xref-find-references</span></code>), respectivamente. Sin embargo, <kbd class="kbd docutils literal notranslate">ESC</kbd> <kbd class="kbd docutils literal notranslate">F1</kbd> (<code class="docutils literal notranslate"><span class="pre">ESC</span> <span class="pre">F1</span></code>) funciona bien).</p>
<p>Finalmente, <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">describe-keymap</span></code> pide el nombre de un mapa de teclado, con finalización (o completado), y muestra un listado de todas las combinaciones de teclas en ese mapa de teclado.</p>
</section>
<section id="archivos-de-ayuda">
<h2>11.9 Archivos de Ayuda<a class="headerlink" href="#archivos-de-ayuda" title="Link to this heading"></a></h2>
<p>Aparte de la documentación incorporada y los manuales, Emacs contiene otros archivos que describen temas como condiciones de copia, notas de la versión, instrucciones para depurar e informar de errores, etcétera. Puede utilizar los siguientes comandos para ver estos archivos. Aparte de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">g</span></code>), todos tienen la forma <code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C</span></code> <strong>char</strong>.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">c</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-c</span></code>)</p>
<blockquote>
<div><p>Muestra las normas según las cuales puedes copiar y redistribuir Emacs (<code class="docutils literal notranslate"><span class="pre">describe-copying</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-d</span></code>)</p>
<blockquote>
<div><p>Muestra la ayuda para depurar Emacs (<code class="docutils literal notranslate"><span class="pre">view-emacs-debbuginge</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">e</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-e</span></code>)</p>
<blockquote>
<div><p>Muestra información sobre dónde obtener paquetes externos (<code class="docutils literal notranslate"><span class="pre">view-external-packages</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-f</span></code>)</p>
<blockquote>
<div><p>Muestra la lista de preguntas más frecuentes de Emacs (<code class="docutils literal notranslate"><span class="pre">view-emacs-FAQ</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">g</span></code>)</p>
<blockquote>
<div><p>Visita la página con información sobre el Proyecto GNU (<code class="docutils literal notranslate"><span class="pre">describe-gnu-proyect</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">m</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-m</span></code>)</p>
<blockquote>
<div><p>Muestra información sobre cómo solicitar copias impresas de los manuales de Emacs (<code class="docutils literal notranslate"><span class="pre">view-order-manuals</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-n</span></code>)</p>
<blockquote>
<div><p>Muestra las novedades, que enumeran las nuevas características de esta versión de Emacs (<code class="docutils literal notranslate"><span class="pre">view-emacs-news</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-o</span></code>)</p>
<blockquote>
<div><p>Muestra cómo solicitar o descargar la última versión de Emacs y otros programas de GNU (<code class="docutils literal notranslate"><span class="pre">describe-distribution</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-p</span></code>)</p>
<blockquote>
<div><p>Muestra la lista de problemas conocidos de Emacs, a veces con sugerencias para solucionarlos (<code class="docutils literal notranslate"><span class="pre">view-emacs-problems</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">t</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-t</span></code>)</p>
<blockquote>
<div><p>Muestra la lista de tareas pendientes de Emacs (<code class="docutils literal notranslate"><span class="pre">view-emacs-tools</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">C-w</span></code>)</p>
<blockquote>
<div><p>Muestra todos los detalles sobre la ausencia total de garantía para GNU Emacs (<code class="docutils literal notranslate"><span class="pre">describe-no-warranty</span></code>).</p>
</div></blockquote>
</section>
<section id="ayuda-sobre-texto-activo-y-tooltips">
<h2>11.10 Ayuda sobre Texto Activo y Tooltips<a class="headerlink" href="#ayuda-sobre-texto-activo-y-tooltips" title="Link to this heading"></a></h2>
<p>En Emacs, los tramos de texto activo (texto que hace algo especial en respuesta a clics del ratón o <code class="docutils literal notranslate"><span class="pre">RET</span></code>) a menudo tienen texto de ayuda asociado. Esto incluye hipervínculos en los buffers de Emacs, así como partes de la línea de modo. En las pantallas gráficas, así como en algunos terminales de texto que soportan el seguimiento del ratón, al mover el ratón sobre el texto activo se muestra el texto de ayuda en forma de tooltip. <strong>Véase Información sobre Herramientas</strong>.</p>
<p>En terminales que no soportan el seguimiento del ratón, puede mostrar el texto de ayuda para el texto activo del búfer en el punto tecleando (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">.</span></code>, <code class="docutils literal notranslate"><span class="pre">display-local-help</span></code>). Esto muestra el texto de ayuda en el área de eco. Para mostrar el texto de ayuda automáticamente siempre que esté disponible en el punto, establezca la variable <code class="docutils literal notranslate"><span class="pre">help-at-pt-display-when-idle</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="10_EjecutarComndPorNombre.html" class="btn btn-neutral float-left" title="10 Ejecutar Comandos por Nombre" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
<a href="12_LaMarca-y-LaRegion.html" class="btn btn-neutral float-right" title="12 La marca y la región" accesskey="n" rel="next">Siguiente <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,301 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>12 La marca y la región &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="next" title="13 Matar y Mover Texto" href="13_MatarMoverTxt.html" />
<link rel="prev" title="11 Ayuda" href="11_Ayuda.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="08_ComBasicEdic.html">8 Comandos Básicos de Edición</a></li>
<li class="toctree-l1"><a class="reference internal" href="09_ElMinibufer.html">9 El Minibúfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="10_EjecutarComndPorNombre.html">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1"><a class="reference internal" href="11_Ayuda.html">11 Ayuda</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">12 La marca y la región</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#fijar-la-marca">12.1 Fijar la Marca</a></li>
<li class="toctree-l2"><a class="reference internal" href="#comandos-para-marcar-objetos-textuales">12.2 Comandos para Marcar Objetos Textuales</a></li>
<li class="toctree-l2"><a class="reference internal" href="#operar-en-la-region">12.3 Operar en la Región</a></li>
<li class="toctree-l2"><a class="reference internal" href="#el-anillo-de-marcas">12.4 El Anillo de Marcas</a></li>
<li class="toctree-l2"><a class="reference internal" href="#el-anillo-de-marcas-global">12.5 El Anillo de Marcas Global</a></li>
<li class="toctree-l2"><a class="reference internal" href="#seleccion-mediante-mayusculas-shift">12.6 Selección mediante Mayúsculas (Shift)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#desactivar-el-modo-de-marca-transitoria">12.7 Desactivar el Modo de Marca Transitoria</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="13_MatarMoverTxt.html">13 Matar y Mover Texto</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">12 La marca y la región</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/12_LaMarca-y-LaRegion.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="la-marca-y-la-region">
<h1>12 La marca y la región<a class="headerlink" href="#la-marca-y-la-region" title="Link to this heading"></a></h1>
<p>Emacs, como muchas otras aplicaciones, le permite seleccionar alguna parte arbitraria del texto del buffer e invocar comandos que operan sobre dicho <em>texto seleccionado</em>. En Emacs, llamamos <em>región</em> al texto seleccionado; su manejo es muy similar al del texto seleccionado en otros programas, pero también hay diferencias importantes.</p>
<p>La región es la porción del buffer entre <em>la marca</em> y la posición actual del <em>punto</em>. Puede definir una región colocando la marca en algún lugar (por ejemplo, con el comando <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>) y moviendo el punto hasta donde desee que termine la región. (O puede usar el ratón para definir una región).</p>
<p>La región siempre se extiende entre el punto y la marca, independientemente de cuál de ellos se encuentre antes en el texto; cada vez que mueve el punto, la región cambia.</p>
<p>Al colocar la marca en una posición del texto, ésta se activa. Cuando la marca está activa, decimos también que la región está activa; Emacs indica su extensión resaltando el texto dentro de ella, usando la cara de la <code class="docutils literal notranslate"><span class="pre">region</span></code> (<strong>ver Personalizar Caras</strong>).</p>
<p>Después de ciertos comandos que no son de movimiento, incluyendo cualquier comando que cambie el texto en el buffer, Emacs desactiva automáticamente la marca; esto apaga el resaltado. También puede desactivar explícitamente la marca en cualquier momento, tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) (<strong>véase Salir y Abortar</strong>).</p>
<p>Muchos comandos limitan el texto sobre el que actúan a la región activa. Por ejemplo, el comando <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">%</kbd> (<code class="docutils literal notranslate"><span class="pre">M-%</span></code>) (que reemplaza el texto coincidente) normalmente funciona en toda la porción accesible del buffer, pero si tiene una región activa, funcionará sólo en esa región.</p>
<p>La marca es útil aunque no esté activa. Por ejemplo, puede desplazarse a ubicaciones de marcas anteriores usando el anillo de marcas. <strong>Véase El Anillo de Marcas</strong>. Además, algunos comandos tendrán efecto incluso en una región inactiva (por ejemplo, <code class="docutils literal notranslate"><span class="pre">upcase-region</span></code>). También puede reactivar la región con comandos como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>).</p>
<p>El comportamiento anterior, que es el predeterminado en las sesiones interactivas, se conoce como modo Marca Transitoria. Deshabilitando el modo de Marca Transitoria cambia Emacs a un comportamiento alternativo, en el que la región normalmente no está resaltada. <strong>Véase Desactivar el Modo de Marca Transitoria</strong>.</p>
<p>Establecer la marca en un buffer no tiene efecto en las marcas de otros buffers. Cuando vuelva a un búfer con una marca activa, la marca estará en el mismo lugar que antes. Cuando varias ventanas muestran el mismo búfer, pueden tener diferentes valores de punto y, por tanto, diferentes regiones, pero todas comparten una posición de marca común. Véase Ventanas Múltiples. Normalmente, sólo la ventana seleccionada resalta su región; sin embargo, si la variable <code class="docutils literal notranslate"><span class="pre">highlight-nonselected-windows</span></code> es distinta de <code class="docutils literal notranslate"><span class="pre">nil</span></code>, cada ventana resalta su propia región.</p>
<p>Existe otro tipo de región: la región rectangular. <strong>Véase Rectángulos</strong>.</p>
<section id="fijar-la-marca">
<h2>12.1 Fijar la Marca<a class="headerlink" href="#fijar-la-marca" title="Link to this heading"></a></h2>
<p>A continuación se indican algunos comandos para fijar la marca:</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>)</p>
<blockquote>
<div><p>Coloca la marca en el punto y la activa (<code class="docutils literal notranslate"><span class="pre">set-mark-command</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">&#64;</kbd> (<code class="docutils literal notranslate"><span class="pre">C-&#64;</span></code>)</p>
<blockquote>
<div><p>Lo mismo que el anterior.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>)</p>
<blockquote>
<div><p>Coloca la marca en el punto y la activa; a continuación, mueve el punto donde estaba la marca (<code class="docutils literal notranslate"><span class="pre">exchange-point-and-mark</span></code>).</p>
</div></blockquote>
<dl class="simple">
<dt>Arrastrar con ratón-1</dt><dd><p>Establece el punto y la marca alrededor del texto que arrastra.</p>
</dd>
<dt>ratón-3</dt><dd><p>Coloca la marca en el punto y, a continuación, desplaza el punto al lugar en el que hace clic (<code class="docutils literal notranslate"><span class="pre">mouse-save-then-kill</span></code>).</p>
</dd>
<dt>Desplazar con Teclas de Movimiento del Cursor</dt><dd><p>Fija la marca en el punto si la marca está inactiva, luego mueve el punto. <strong>Véase Desplazar Selección</strong>.</p>
</dd>
</dl>
<p>La forma más común de fijar la marca es con <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> (<code class="docutils literal notranslate"><span class="pre">set-mark-command</span></code>) <a class="footnote-reference brackets" href="#id2" id="id1" role="doc-noteref"><span class="fn-bracket">[</span>5<span class="fn-bracket">]</span></a>. Esto fija la marca donde está el punto, y la activa. A continuación, puede mover el punto, dejando la marca detrás.</p>
<p>Por ejemplo, supongamos que desea convertir parte del búfer a mayúsculas. Para ello, vaya a un extremo del texto deseado, escriba <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>) y mueva el punto hasta que la parte deseada del texto quede resaltada. Ahora teclee <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-u</span></code>, región de mayúsculas). Esto convierte el texto de la región a mayúsculas y desactiva la marca.</p>
<p>Siempre que la marca esté activa, puede desactivarla tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>) (<strong>véase Salir y abortar</strong>). La mayoría de los comandos que operan sobre la región también desactivan automáticamente la marca, como <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-u</span></code> en el ejemplo anterior.</p>
<p>En lugar de activar la marca para operar en una región, también puede usarla para recordar una posición en el buffer (tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code>)), y más tarde saltar de nuevo allí (tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>)). <strong>Véase El Anillo de Marcas</strong>, para más detalles.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>, <code class="docutils literal notranslate"><span class="pre">exchange-point-and-mark</span></code>) intercambia las posiciones del punto y la marca. <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>) es útil cuando está satisfecho con la posición del punto pero desea mover el otro extremo de la región (donde está la marca). Si es necesario, al usar <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code> por segunda vez, la marca se coloca en la nueva posición y el punto vuelve a su posición original. Normalmente, si la marca está inactiva, este comando reactiva primero la marca donde se fijó por última vez, para asegurarse de que la región queda resaltada. Sin embargo, si lo llama con un argumento prefijo, deja la marca inactiva y la región sin resaltar; puede usarlo para saltar a la marca de forma similar a <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>.</p>
<p>También puede fijar la marca con el ratón. Si pulsa el botón izquierdo del ratón (<code class="docutils literal notranslate"><span class="pre">down-mouse-1</span></code>) y arrastra el ratón a través de un rango de texto, esto establece la marca donde pulsó por primera vez el botón del ratón y pone el punto donde lo suelta. Alternativamente, pulsar el botón derecho del ratón (<code class="docutils literal notranslate"><span class="pre">mouse-3</span></code>, ratón-3) fija la marca en el punto y luego mueve el punto al lugar donde pulsó. Para una descripción más detallada de estos comandos del ratón, <strong>véase Comandos del Ratón para Editar</strong>.</p>
<p>Por último, puede fijar la marca manteniendo pulsada la tecla Mayús (<kbd class="kbd docutils literal notranslate">Shift</kbd>) mientras escribe determinados comandos de movimiento del cursor (como <code class="docutils literal notranslate"><span class="pre">S-DERECHA</span></code> (<kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate"></kbd>), <code class="docutils literal notranslate"><span class="pre">S-C-f</span></code> (<kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd>), <code class="docutils literal notranslate"><span class="pre">S-C-n</span></code> (<kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd>), etc.). Esto se denomina <em>selección de mayúsculas</em>. Establece la marca en el punto antes de mover el punto, pero sólo si no hay ninguna marca activa establecida mediante una selección de mayúsculas anterior o comandos del ratón. La marca establecida por comandos del ratón y por la selección con mayúsculas se comporta de forma ligeramente diferente a la marca habitual: cualquier comando de movimiento del cursor sin mayúsculas posterior la desactiva automáticamente. Para más detalles, <strong>consulte Selección por Desplazamientos</strong>.</p>
<p>Muchos comandos que insertan texto, como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">C-y</span></code>, <code class="docutils literal notranslate"><span class="pre">yank</span></code>), fijan la marca en el otro extremo del texto insertado, sin activarla. Esto le permite volver fácilmente a esa posición (<strong>véase El Anillo de Marcas</strong>). Puede saber que un comando hace esto cuando muestra <code class="docutils literal notranslate"><span class="pre">Mark</span> <span class="pre">set</span></code> (Marca fijada) en el área de eco.</p>
<p>En X, cada vez que la región activa cambia, Emacs guarda el texto de la región en la <em>selección primaria*a6. Esto le permite insertar ese texto en otras aplicaciones X con 2 clics del ratón. **Ver Cortar y Pegar con Otras Aplicaciones de Ventana*</em>.</p>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id2" role="doc-footnote">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">5</a><span class="fn-bracket">]</span></span>
<p>No existe un carácter <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> en ASCII; normalmente, al teclear <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> en un terminal de texto se obtiene el carácter <code class="docutils literal notranslate"><span class="pre">C-&#64;</span></code>. Esta tecla también está vinculada a <code class="docutils literal notranslate"><span class="pre">set-mark-command</span></code>, por lo que a menos que tenga la mala suerte de tener un terminal de texto que se comporte de forma diferente, puede pensar en <code class="docutils literal notranslate"><span class="pre">C-&#64;</span></code> como <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>.</p>
</aside>
</aside>
</section>
<section id="comandos-para-marcar-objetos-textuales">
<h2>12.2 Comandos para Marcar Objetos Textuales<a class="headerlink" href="#comandos-para-marcar-objetos-textuales" title="Link to this heading"></a></h2>
<p>Estos son los comandos para colocar el punto y la marca alrededor de un objeto textual, como una palabra, una lista, un párrafo o una página:</p>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">&#64;</kbd> (<code class="docutils literal notranslate"><span class="pre">M-&#64;</span></code>)</p>
<blockquote>
<div><p>Coloca la marca al final de la palabra siguiente (<code class="docutils literal notranslate"><span class="pre">mark-word</span></code>). Esto no mueve el punto.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">&#64;</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-&#64;</span></code>)</p>
<blockquote>
<div><p>Marca el final de la siguiente expresión compuesta (<code class="docutils literal notranslate"><span class="pre">mark-sexp</span></code>). Esto no mueve el punto.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">M-h</span></code>)</p>
<blockquote>
<div><p>Mueve el punto al principio del párrafo actual, y fija la marca al final (<code class="docutils literal notranslate"><span class="pre">mark-paragraph</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd> <kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-h</span></code>)</p>
<blockquote>
<div><p>Mueve el punto al principio de la definición de función actual y fija la marca al final (<code class="docutils literal notranslate"><span class="pre">mark-defun</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-p</span></code>)</p>
<blockquote>
<div><p>Mueve el punto al principio de la página actual, y fija la marca al final (<code class="docutils literal notranslate"><span class="pre">mark-page</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">h</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">h</span></code>)</p>
<blockquote>
<div><p>Mueve el punto al principio del buffer, y fija la marca al final (<code class="docutils literal notranslate"><span class="pre">mark-whole-buffer</span></code>).</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">M-&#64;</span></code>, (<code class="docutils literal notranslate"><span class="pre">mark-word</span></code>, marcar palabra) coloca la marca al final de la palabra siguiente (<strong>véase Palabras</strong>, para obtener información sobre las palabras). Las invocaciones repetidas de este comando amplían la región haciendo avanzar la marca una palabra cada vez. Como excepción, si la marca está activa y situada antes del punto, <code class="docutils literal notranslate"><span class="pre">M-&#64;</span></code> desplaza la marca hacia atrás desde su posición actual una palabra cada vez.</p>
<p>Este comando también acepta un argumento numérico <em>n</em>, que le indica que avance la marca <em>n</em> palabras. Un argumento negativo <em>-n</em> hace retroceder la marca <em>n</em> palabras.</p>
<p>Del mismo modo, <code class="docutils literal notranslate"><span class="pre">C-M-&#64;</span></code> (<code class="docutils literal notranslate"><span class="pre">marca-sexp</span></code>) coloca la marca al final de la siguiente expresión equilibrada (<strong>véase Expresiones con Paréntesis Equilibrados</strong>). Las invocaciones repetidas extienden la región a expresiones posteriores, mientras que los argumentos numéricos positivos o negativos desplazan la marca hacia delante o hacia atrás el número de expresiones especificado.</p>
<p>Los demás comandos de la lista anterior establecen tanto el punto como la marca, para delimitar un objeto en el búfer. <code class="docutils literal notranslate"><span class="pre">M-h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-paragraph</span></code>) marca párrafos (véase Párrafos), <code class="docutils literal notranslate"><span class="pre">C-M-h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-defun</span></code>) marca definiciones de nivel superior (<strong>véase Moverse por Definiciones de Función</strong>), y <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-p</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-page</span></code>) marca páginas (véase Páginas). Las invocaciones repetidas juegan de nuevo el mismo papel, extendiendo la región a objetos consecutivos; de forma similar, los argumentos numéricos especifican por cuántos objetos mover la marca.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">h</span></code> (<code class="docutils literal notranslate"><span class="pre">mark-whole-buffer</span></code>) establece todo el buffer como región, poniendo el punto al principio y la marca al final.</p>
</section>
<section id="operar-en-la-region">
<h2>12.3 Operar en la Región<a class="headerlink" href="#operar-en-la-region" title="Link to this heading"></a></h2>
<p>Una vez que tenga una región, aquí tiene algunas formas de operar sobre ella:</p>
<blockquote>
<div><ul class="simple">
<li><p>Matar con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-w</span></code>, <strong>ver Matar y Mover Texto</strong>).</p></li>
<li><p>Copiar en el anillo de muerte con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">M-w</span></code>, <strong>vea Matar y Mover Texto</strong>).</p></li>
<li><p>Convertir mayúsculas y minúsculas con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">l</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-l</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-u</span></code>) (<strong>ver Comandos de Conversión
de Mayúsculas y Minúsculas</strong>).</p></li>
<li><p>Deshacer los cambios en su interior con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-:kbd`/` (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-/</span></code>, <strong>ver Deshacer</strong>).</p></li>
<li><p>Reemplazar texto con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">%</kbd> (<code class="docutils literal notranslate"><span class="pre">M-%</span></code>, <strong>ver Reemplazar Consulta</strong>).</p></li>
<li><p>Aplicar sangría con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">TAB</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">TAB</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">\</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-\</span></code> , <strong>ver Sangría</strong>).</p></li>
<li><p>Rellénelo como texto con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">M-x</span></code>) rellenar-región (<strong>véase Rellenar Texto</strong>).</p></li>
<li><p>Comprobar la ortografía de las palabras que contiene con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">$</kbd> (<code class="docutils literal notranslate"><span class="pre">M-$</span></code>, <strong>consulte Comprobación y Corrección de la Ortografía</strong>).</p></li>
<li><p>Evaluar como código Lisp con <code class="docutils literal notranslate"><span class="pre">M-x</span></code> <strong>eval-region</strong> (<strong>vea Evaluando Expresiones Emacs Lisp</strong>).</p></li>
<li><p>Guardar en un registro con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">r</kbd><kbd class="kbd docutils literal notranslate">s</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">r</span> <span class="pre">s</span></code>, <strong>vea Registros</strong>).</p></li>
<li><p>Guardarlo en un buffer o en un fichero (<strong>vea Acumulación de Texto</strong>).</p></li>
</ul>
</div></blockquote>
<p>Algunos comandos tienen un comportamiento por defecto cuando la marca está inactiva, pero operan en la región si la marca está activa. Por ejemplo, <code class="docutils literal notranslate"><span class="pre">M-$</span></code> (<code class="docutils literal notranslate"><span class="pre">ispell-word</span></code>) normalmente comprueba la ortografía de la palabra en el punto, pero comprueba el texto en la región si la marca está activa (<strong>véase Comprobar y Corregir la Ortografía</strong>). Normalmente, estos comandos utilizan su comportamiento por defecto si la región está vacía (es decir, si la marca y el punto están en la misma posición). Si desea que operen en la región vacía, cambie la variable <code class="docutils literal notranslate"><span class="pre">use-empty-active-region</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>.</p>
<p>Como se describe en <strong>Borrar texto</strong>, los comandos <code class="docutils literal notranslate"><span class="pre">DEL</span></code> (<code class="docutils literal notranslate"><span class="pre">backward-delete-char</span></code>) y <code class="docutils literal notranslate"><span class="pre">Delete</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-forward-char</span></code>) también actúan de esta forma. Si la marca está activa, borran el texto de la región. (Como excepción, si proporciona un argumento numérico <em>n</em>, donde <em>n</em> no es uno, estos comandos borran <em>n</em> caracteres independientemente de si la marca está activa). Si cambia la variable <code class="docutils literal notranslate"><span class="pre">delete-active-region</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, estos comandos no actuarán de forma diferente cuando la marca esté activa. Si cambia el valor a matar, estos comandos matan la región en lugar de borrarla (<strong>véase Matar y Mover Texto</strong>).</p>
<p>Otros comandos operan siempre sobre la región y no tienen un comportamiento predeterminado. Estos comandos suelen llevar la palabra región en sus nombres, como <code class="docutils literal notranslate"><span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-region</span></code>) y <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-u</span></code> (<code class="docutils literal notranslate"><span class="pre">upcase-region</span></code>). Si la marca está inactiva, actúan sobre la región inactiva, es decir, sobre el texto situado entre el punto y la posición en la que se estableció la marca por última vez (<strong>véase El Anillo de Marcas</strong>). Para desactivar este comportamiento, cambie la variable <code class="docutils literal notranslate"><span class="pre">mark-even-if-inactive</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>. Entonces estos comandos señalarán un error si la marca está inactiva.</p>
<p>Por defecto, la inserción de texto se produce normalmente incluso si la marca está activa; por ejemplo, al escribir a se inserta el carácter <code class="docutils literal notranslate"><span class="pre">a</span></code> y, a continuación, se desactiva la marca. El modo Borrar selección (Delete Selection mode), un modo secundario, modifica este comportamiento: si activa este modo, la inserción de texto mientras la marca está activa hace que el texto de la región se borre primero. Sin embargo, puede ajustar este comportamiento personalizando la opción <code class="docutils literal notranslate"><span class="pre">delete-selection-temporary-region</span></code> (borrar-selección-región-temporal). Su valor predeterminado es <code class="docutils literal notranslate"><span class="pre">nil</span></code>, pero puede establecerlo en <code class="docutils literal notranslate"><span class="pre">t</span></code>, en cuyo caso sólo se reemplazarán las regiones temporalmente activas: las que se establezcan arrastrando el ratón (<strong>véase Establecer la Marca</strong>) o mediante selección con Mayúsculas (<strong>véase Selección con Mayúsculas</strong>), así como mediante <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">C-x</span></code>) cuando el Modo de Marca Transitoria esté desactivado. Puede ajustar aún más el comportamiento estableciendo <code class="docutils literal notranslate"><span class="pre">delete-selection-temporary-region</span></code> en <code class="docutils literal notranslate"><span class="pre">selection</span></code>: entonces no se reemplazarán las regiones temporales mediante <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">C-x</span></code>, sino sólo las activadas al arrastrar el ratón o mediante shift-selection. Para activar o desactivar el modo Eliminar selección (Delete Selection mode), escriba <code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">delete-selection-mode</span></code>.</p>
</section>
<section id="el-anillo-de-marcas">
<h2>12.4 El Anillo de Marcas<a class="headerlink" href="#el-anillo-de-marcas" title="Link to this heading"></a></h2>
<p>Cada búfer recuerda las ubicaciones anteriores de la marca, en el anillo de marcas. Los comandos que fijan la marca también empujan la marca anterior a este anillo. Uno de los usos del anillo de marcas es recordar puntos a los que puede querer volver.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code>)</p>
<blockquote>
<div><p>Coloca la marca, empujándola sobre el anillo de marca, sin activarla.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>)</p>
<blockquote>
<div><p>Mueva el punto a donde estaba la marca y restaure la marca del anillo de marcas anteriores.</p>
</div></blockquote>
<p>El comando <code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code> es útil cuando se quiere usar la marca para recordar una posición a la que se desea volver. Empuja el punto actual al anillo de marca, sin activar la marca (lo que haría que Emacs resaltara la región). En realidad se trata de dos invocaciones consecutivas de <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> (<code class="docutils literal notranslate"><span class="pre">set-mark-command</span></code>); la primera <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> activa la marca, y la segunda <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> la desactiva. (Cuando el modo de marca transitoria (Transient Mark mode) está desactivado, <code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code> activa en su lugar el modo de marca transitoria temporalmente; <strong>véase Desactivar el Modo de Marca Transitoria</strong>).</p>
<p>Para volver a una posición marcada, use <code class="docutils literal notranslate"><span class="pre">set-mark-command</span></code> con un argumento prefijo: <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>. Esto mueve el punto a donde estaba la marca, y desactiva la marca si estaba activa. Cada <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code> posterior salta a una posición anterior almacenada en el anillo de marcas. Las posiciones por las que se desplaza de este modo no se pierden; van al final del anillo.</p>
<p>Si establece <code class="docutils literal notranslate"><span class="pre">set-mark-command-repeat-pop</span></code> como no nulo, inmediatamente después de escribir <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>, puede escribir <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> en lugar de <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code> para recorrer el anillo de marcas. Por defecto, <code class="docutils literal notranslate"><span class="pre">set-mark-command-repeat-pop</span></code> es <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
<p>Cada búfer tiene su propio anillo de marcas. Todos los comandos de edición utilizan el anillo de marcas del búfer actual. En particular, <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code> siempre permanece en el mismo búfer.</p>
<p>La variable <code class="docutils literal notranslate"><span class="pre">mark-ring-max</span></code> especifica el número máximo de entradas a mantener en el anillo de marcas. Por defecto es de 16 entradas. Si existen tantas entradas y se introduce otra, se descarta la más antigua de la lista. Repitiendo <code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code> hace un ciclo a través de las posiciones actualmente en el anillo.</p>
<p>Si desea volver al mismo lugar una y otra vez, puede que el anillo de marcas no sea lo suficientemente práctico. Si es así, puede grabar la posición en un registro para recuperarla más tarde (<strong>consulte Guardar Posiciones en Registros</strong>).</p>
</section>
<section id="el-anillo-de-marcas-global">
<h2>12.5 El Anillo de Marcas Global<a class="headerlink" href="#el-anillo-de-marcas-global" title="Link to this heading"></a></h2>
<p>Además del anillo de marcas ordinario que pertenece a cada búfer, Emacs tiene un único anillo de marcas global. Cada vez que establezca una marca, ésta se registra en el anillo de marcas global además del propio anillo de marcas del búfer actual, si ha cambiado de búfer desde el anterior ajuste de marca. Por lo tanto, el anillo de marca global registra una secuencia de memorias intermedias en las que ha estado y, para cada memoria intermedia, un lugar en el que ha establecido la marca. La longitud del anillo de marca global está controlada por <code class="docutils literal notranslate"><span class="pre">global-mark-ring-max</span></code>, y es 16 por defecto.</p>
<p>El comando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-SPC</span></code>, <code class="docutils literal notranslate"><span class="pre">pop-global-mark</span></code>) salta al búfer y a la posición de la última entrada en el anillo global. También gira el anillo, de modo que los usos sucesivos de <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-SPC</span></code> le llevan a búferes y posiciones de marca anteriores.</p>
</section>
<section id="seleccion-mediante-mayusculas-shift">
<h2>12.6 Selección mediante Mayúsculas (Shift)<a class="headerlink" href="#seleccion-mediante-mayusculas-shift" title="Link to this heading"></a></h2>
<p>Si mantiene pulsada la tecla Shift mientras escribe un comando de movimiento del cursor, se establece la marca antes de mover el punto, de modo que la región se extiende desde la posición original del punto hasta su nueva posición. Esta función se denomina selección con Mayúsculas. Es similar a la forma en que se selecciona texto en otros editores.</p>
<p>La marca establecida a través de la selección de Mayúsculas se comporta de forma un poco diferente a la descrita anteriormente. En primer lugar, además de las formas habituales de desactivar la marca (como cambiar el texto de la memoria intermedia o teclear <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">g</kbd> (<code class="docutils literal notranslate"><span class="pre">C-g</span></code>)), la marca se desactiva con cualquier comando de movimiento del cursor sin desplazamiento. En segundo lugar, cualquier comando de movimiento del cursor desplazado posterior evita volver a activar la marca. Por lo tanto, una serie de comandos de movimiento del cursor desplazado ajustará continuamente la región.</p>
<p>La selección mediante Mayús sólo funciona si la tecla de movimiento del cursor desplazado no está asociada a un comando independiente (véase Personalización). Por ejemplo, si vincula <kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">S-C-f</span></code>) a otro comando, al teclear <kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> se ejecutará ese comando en lugar de realizar una versión de <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> (<code class="docutils literal notranslate"><span class="pre">C-f</span></code>, <code class="docutils literal notranslate"><span class="pre">forward-char</span></code>) con selección de mayúsculas.</p>
<p>Una marca establecida mediante comandos del ratón se comporta igual que una marca establecida mediante la selección por desplazamiento (<strong>véase Establecer la Marca</strong>). Por ejemplo, si especifica una región arrastrando el ratón, puede seguir ampliando la región mediante comandos de movimiento del cursor desplazado. En ambos casos, cualquier comando de movimiento del cursor sin desplazamiento desactiva la marca.</p>
<p>Para desactivar la selección por desplazamiento, establezca el modo de <code class="docutils literal notranslate"><span class="pre">shift-select-mode</span></code> (selección por desplazamiento) en <code class="docutils literal notranslate"><span class="pre">nil</span></code>. Al hacerlo, no se desactiva el establecimiento de la marca mediante comandos del ratón. Si establece <code class="docutils literal notranslate"><span class="pre">shift-select-mode</span></code> en el valor <code class="docutils literal notranslate"><span class="pre">permanent</span></code>, las teclas de movimiento del cursor que no hayan sido desplazadas por shift no desactivarán la marca, por lo que, por ejemplo, la región establecida por comandos anteriores puede ampliarse mediante shift-selection, y las teclas de movimiento del cursor no desplazadas ampliarán la región establecida por shift-selection.</p>
</section>
<section id="desactivar-el-modo-de-marca-transitoria">
<h2>12.7 Desactivar el Modo de Marca Transitoria<a class="headerlink" href="#desactivar-el-modo-de-marca-transitoria" title="Link to this heading"></a></h2>
<p>El comportamiento por defecto de la marca y la región, en el que al fijar la marca se activa ésta y se resalta la región, se denomina Transient Mark mode (modo Marca Transitoria). Se trata de un modo menor que está activado por defecto en las sesiones interactivas. Puede activarse con M-x transient-mark-mode, o con la opción Highlight Active Region (Resaltar Región Activa) del menú Options (Opciones). Si se desactiva, Emacs pasa a un modo de funcionamiento alternativo:</p>
<blockquote>
<div><ul class="simple">
<li><p>Al fijar la marca, con comandos como <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>), no se resalta la región. Por lo tanto, no se
puede saber con sólo mirar dónde se encuentra la marca; hay que acordarse. La solución habitual a este problema es fijar la marca y utilizarla pronto, antes de que se le olvide dónde
está. También puede comprobar dónde está la marca utilizando <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>, que intercambia las posiciones del punto y de la marca (<strong>véase Fijar la Marca</strong>).</p></li>
<li><p>Algunos comandos, que normalmente actúan sobre la región cuando la marca está activa, ya no lo hacen. Por ejemplo, normalmente (<code class="docutils literal notranslate"><span class="pre">M-%</span></code>, <code class="docutils literal notranslate"><span class="pre">query-replace</span></code>, consulta-reemplazo)
realiza reemplazos dentro de la región, si la marca está activa. Cuando el modo de marca transitoria está desactivado, siempre actúa desde el punto hasta el final de la memoria
intermedia. Los comandos que actúan de este modo se identifican en su propia documentación.</p></li>
</ul>
</div></blockquote>
<p>Mientras el modo Marca Transitoria (Transient Mark mode) está desactivado, puede activarlo temporalmente utilizando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">C-x</span></code>).</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span> <span class="pre">C-SPC</span></code>)</p>
<blockquote>
<div><p>Establece la marca en el punto (como <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> normal) y activa el modo Marca Transitoria (Transient Mark mode) sólo una vez, hasta que la marca se desactiva. (En realidad, no se
trata de un comando independiente; está usando el comando <code class="docutils literal notranslate"><span class="pre">C-SPC</span></code> dos veces).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-x</span> <span class="pre">C-x</span></code>)</p>
<blockquote>
<div><p>Intercambia punto y marca, activa la marca y habilita temporalmente el modo Marca Transitoria (Transient Mark mode), hasta la siguiente desactivación de la marca. (Se trata del
comando <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-x</span></code>, <code class="docutils literal notranslate"><span class="pre">exchange-point-and-mark</span></code>, con un argumento de prefijo).</p>
</div></blockquote>
<p>Estos comandos establecen o activan la marca, y habilitan el modo Marca Transitoria sólo hasta que se desactiva la marca. Una de las razones por las que es posible que desee utilizarlos es que algunos comandos operan en todo el búfer intermedia en lugar de en la región cuando el modo Marca transitoria está desactivado. La activación momentánea del modo Marca Transitoria permite utilizar estos comandos en la región.</p>
<p>Cuando especifique una región con el ratón (<strong>véase Establecer la Marca</strong>), o con la selección de mayúsculas (<strong>véase Selección mediante Mayúsculas</strong>), también se activará temporalmente el modo Marca Transitoria y se resaltará la región.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="11_Ayuda.html" class="btn btn-neutral float-left" title="11 Ayuda" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
<a href="13_MatarMoverTxt.html" class="btn btn-neutral float-right" title="13 Matar y Mover Texto" accesskey="n" rel="next">Siguiente <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,460 +0,0 @@
<!DOCTYPE html>
<html class="writer-html5" lang="es" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>13 Matar y Mover Texto &mdash; documentación de GNU/Emacs 29.1 - 0.01</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=d7315b5f"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=efdbd0b9"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Índice" href="../genindex.html" />
<link rel="search" title="Búsqueda" href="../search.html" />
<link rel="prev" title="12 La marca y la región" href="12_LaMarca-y-LaRegion.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Buscar documentos" aria-label="Buscar documentos" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../distribucion.html">Distribución</a></li>
<li class="toctree-l1"><a class="reference internal" href="../introduccion.html">Introducción</a></li>
<li class="toctree-l1"><a class="reference internal" href="../01_OrgPant.html">1 La organización de la pantalla</a></li>
<li class="toctree-l1"><a class="reference internal" href="../02_TipoEntrUsuario.html">2 Tipos de Entrada del Usuario</a></li>
<li class="toctree-l1"><a class="reference internal" href="../03_Teclas.html">3 Teclas</a></li>
<li class="toctree-l1"><a class="reference internal" href="../04_EntrDelRaton.html">4 Entrada del Ratón</a></li>
<li class="toctree-l1"><a class="reference internal" href="../05_TeclasComands.html">5 Teclas y Comandos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../06_EntrarEnEmacs.html">6 Entrar en Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../07_SalirDeEmacs.html">7 Cómo Salir de Emacs</a></li>
<li class="toctree-l1"><a class="reference internal" href="08_ComBasicEdic.html">8 Comandos Básicos de Edición</a></li>
<li class="toctree-l1"><a class="reference internal" href="09_ElMinibufer.html">9 El Minibúfer</a></li>
<li class="toctree-l1"><a class="reference internal" href="10_EjecutarComndPorNombre.html">10 Ejecutar Comandos por Nombre</a></li>
<li class="toctree-l1"><a class="reference internal" href="11_Ayuda.html">11 Ayuda</a></li>
<li class="toctree-l1"><a class="reference internal" href="12_LaMarca-y-LaRegion.html">12 La marca y la región</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">13 Matar y Mover Texto</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#borrar-y-matar">13.1 Borrar y Matar</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#borrado">13.1.1 Borrado</a></li>
<li class="toctree-l3"><a class="reference internal" href="#matar-por-lineas">13.1.2 Matar por Líneas</a></li>
<li class="toctree-l3"><a class="reference internal" href="#otros-comandos-de-muerte">13.1.3 Otros Comandos de Muerte</a></li>
<li class="toctree-l3"><a class="reference internal" href="#opciones-de-matado">13.1.4 Opciones de Matado</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#tirar-de-un-texto">13.2 Tirar de un Texto</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#anillo-de-muerte">13.2.1 Anillo de Muerte</a></li>
<li class="toctree-l3"><a class="reference internal" href="#borrar-muertes-anteriores">13.2.2 Borrar Muertes Anteriores</a></li>
<li class="toctree-l3"><a class="reference internal" href="#anadir-muertes">13.2.3 Añadir Muertes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#operaciones-de-cortar-y-pegar-en-entornos-graficos-de-escritorio">13.3 Operaciones de «cortar y pegar» en Entornos Gráficos de Escritorio</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#utilizar-el-portapapeles">13.3.1 Utilizar el Portapapeles</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cortar-y-pegar-con-otras-aplicaciones-de-ventana">13.3.2 Cortar y Pegar con Otras Aplicaciones de Ventana</a></li>
<li class="toctree-l3"><a class="reference internal" href="#seleccion-secundaria">13.3.3 Selección Secundaria</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#acumular-texto">13.4 Acumular Texto</a></li>
<li class="toctree-l2"><a class="reference internal" href="#rectangulos">13.5 Rectángulos</a></li>
<li class="toctree-l2"><a class="reference internal" href="#enlaces-cua">13.6 Enlaces CUA</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">GNU/Emacs 29.1</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">13 Matar y Mover Texto</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/CapConSecciones/13_MatarMoverTxt.rst.txt" rel="nofollow"> Ver código fuente de la página</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="matar-y-mover-texto">
<h1>13 Matar y Mover Texto<a class="headerlink" href="#matar-y-mover-texto" title="Link to this heading"></a></h1>
<p>En Emacs, <em>matar</em> significa borrar texto y copiarlo en el anillo de muertes. <em>Desplazar</em> significa traer texto del anillo de destrucción de vuelta al buffer. (Algunas aplicaciones utilizan los términos «cortar» y «pegar» para operaciones similares). El anillo de muertes se llama así porque se puede visualizar como un conjunto de bloques de texto dispuestos en un anillo, al que se puede acceder en orden cíclico. <strong>Véase El Anillo de Muertes</strong>.</p>
<p>Los comandos kill y yanking son la forma más común de mover o copiar texto dentro de Emacs. Es muy versátil, porque hay comandos para matar muchos tipos diferentes de unidades sintácticas.</p>
<section id="borrar-y-matar">
<h2>13.1 Borrar y Matar<a class="headerlink" href="#borrar-y-matar" title="Link to this heading"></a></h2>
<p>La mayoría de las órdenes que borran texto del búfer lo guardan en el anillo de muertes (<strong>ver El Anillo de Muertes</strong>). Se conocen como comandos <em>kill</em>, y sus nombres normalmente contienen la palabra <code class="docutils literal notranslate"><span class="pre">kill</span></code> (por ejemplo, <code class="docutils literal notranslate"><span class="pre">kill-line</span></code>). El kill ring almacena varios kills recientes, no sólo el último, por lo que matar es una operación muy segura: no tiene que preocuparse mucho por perder texto que haya matado previamente. El anillo de muertes es compartido por todos los buffers, por lo que el texto que es matado en un buffer puede ser arrastrado a otro buffer.</p>
<p>Cuando se usa <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">/</kbd> (<code class="docutils literal notranslate"><span class="pre">C-/</span></code>, <code class="docutils literal notranslate"><span class="pre">undo</span></code>, deshacer) para deshacer un comando de eliminación (<strong>ver Deshacer</strong>), el texto eliminado vuelve al búfer, pero no se elimina del anillo de muertes.</p>
<p>En las pantallas gráficas, al matar el texto también se copia en el portapapeles del sistema. Ver Operaciones de «Cortar y Pegar» en Pantallas Gráficas.</p>
<p>Los comandos que borran el texto pero no lo guardan en el anillo de destrucción se conocen como comandos de borrado; sus nombres suelen contener la palabra <code class="docutils literal notranslate"><span class="pre">delete</span></code> (borrar). Entre ellos se incluyen <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-d</span></code>, <code class="docutils literal notranslate"><span class="pre">delete-char</span></code>) y <kbd class="kbd docutils literal notranslate">DEL</kbd> (<code class="docutils literal notranslate"><span class="pre">DEL</span></code>, <code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code>), que borran sólo un carácter cada vez, y los comandos que borran sólo espacios o nuevas líneas. Los comandos que pueden borrar cantidades significativas de datos no triviales generalmente realizan una operación de borrado.</p>
<p>También puede utilizar el ratón para matar y tirar. <strong>Vea Operaciones de «Cortar y Pegar» en Pantallas Gráficas</strong>.</p>
<section id="borrado">
<h3>13.1.1 Borrado<a class="headerlink" href="#borrado" title="Link to this heading"></a></h3>
<p>Borrar significa borrar texto y no guardarlo en el anillo de muertes. En su mayor parte, los comandos de Emacs que borran texto son los que borran sólo un carácter o sólo espacios en blanco.</p>
<div class="line-block">
<div class="line"><code class="docutils literal notranslate"><span class="pre">DEL</span></code></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">BACKSPACE</span></code></div>
</div>
<blockquote>
<div><p>Borra el carácter anterior, o el texto de la región si está activa (<code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code>).</p>
</div></blockquote>
<p><code class="docutils literal notranslate"><span class="pre">Delete</span></code></p>
<blockquote>
<div><p>Borra el siguiente carácter, o el texto de la región si está activa (<code class="docutils literal notranslate"><span class="pre">delete-forward-char</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-d</span></code>)</p>
<blockquote>
<div><p>Borra el siguiente carácter (<code class="docutils literal notranslate"><span class="pre">delete-char</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">\</kbd> (<code class="docutils literal notranslate"><span class="pre">M-\</span></code>)</p>
<blockquote>
<div><p>Borra los espacios y tabuladores alrededor del punto (<code class="docutils literal notranslate"><span class="pre">delete-horizontal-point</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">M-SPC</span></code>)</p>
<blockquote>
<div><p>Borra los espacios y tabuladores alrededor del punto, dejando un solo espacio (<code class="docutils literal notranslate"><span class="pre">just-one-space</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">o</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code>)</p>
<blockquote>
<div><p>Borra las líneas en blanco alrededor de la línea actual (<code class="docutils literal notranslate"><span class="pre">delete-blank-lines</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">^</kbd> (<code class="docutils literal notranslate"><span class="pre">M-^</span></code>)</p>
<blockquote>
<div><p>Une dos líneas eliminando la nueva línea intermedia, junto con cualquier sangría que la siga (<code class="docutils literal notranslate"><span class="pre">delete-indentation</span></code>).</p>
</div></blockquote>
<p>Ya hemos descrito los comandos básicos de borrado <code class="docutils literal notranslate"><span class="pre">DEL</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-backward-char</span></code>), <code class="docutils literal notranslate"><span class="pre">delete</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-forward-char</span></code>) y <code class="docutils literal notranslate"><span class="pre">C-d</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-char</span></code>). <strong>Véase Borrar Texto</strong>. Con un argumento numérico, borran el número especificado de caracteres. Si el argumento numérico se omite o es uno, <code class="docutils literal notranslate"><span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">delete</span></code> borran todo el texto de la región si está activa (<strong>véase Operar en la Región</strong>).</p>
<p>Los otros comandos de borrado son los que borran sólo caracteres de espacio en blanco: espacios, tabuladores y nuevas líneas. <code class="docutils literal notranslate"><span class="pre">M-\</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-horizontal-space</span></code>, borrar-espacio-horizontal) borra todos los espacios y caracteres de tabulación antes y después del punto. Con un argumento de prefijo, sólo borra los espacios y tabuladores antes del punto.</p>
<p><code class="docutils literal notranslate"><span class="pre">just-one-space</span></code> (sólo-un-espacio) hace lo mismo pero deja un único espacio antes del punto, independientemente del número de espacios que existieran previamente (incluso si antes no había ninguno). Con un argumento numérico <em>n</em>, deja <em>n</em> espacios antes del punto si <em>n</em> es positivo; si <em>n</em> es negativo, borra las nuevas líneas además de los espacios y tabuladores, dejando <em>-n</em> espacios antes del punto.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">cycle-spacing</span></code> (<code class="docutils literal notranslate"><span class="pre">M-SPC</span></code>) actúa como una versión más flexible de <code class="docutils literal notranslate"><span class="pre">just-one-space</span></code>. Realiza diferentes acciones de limpieza de espacio definidas por <code class="docutils literal notranslate"><span class="pre">cycle-spacing-actions</span></code>, de forma cíclica, si se llama repetidamente en sucesión.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">C-o</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-blank-lines</span></code>, borrar-líneas-en-blanco) borra todas las líneas en blanco después de la línea actual. Si la línea actual está en blanco, borra también todas las líneas en blanco anteriores a la línea actual (dejando una línea en blanco, la línea actual). En una sola línea en blanco, borra esa línea.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-^</span></code> (<code class="docutils literal notranslate"><span class="pre">delete-indentation</span></code>, eliminar-indentación) une la línea actual y la línea anterior, suprimiendo una nueva línea y todos los espacios circundantes, dejando normalmente un solo espacio. <strong>Véase M-^</strong>.</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">delete-duplicate-lines</span></code> (borrar-línas-duplicadas) busca en la región líneas idénticas, y elimina todas menos una copia de cada una. Normalmente mantiene la primera instancia de cada línea repetida, pero con un argumento de prefijo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span></code>) mantiene la última. Con un argumento de prefijo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span></code>), sólo busca líneas idénticas adyacentes. Este es un modo de operación más eficiente, útil cuando las líneas ya han sido ordenadas. Con un argumento de prefijo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-u</span> <span class="pre">C-u</span></code>), conserva las líneas en blanco repetidas.</p>
</section>
<section id="matar-por-lineas">
<h3>13.1.2 Matar por Líneas<a class="headerlink" href="#matar-por-lineas" title="Link to this heading"></a></h3>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-k</span></code>)</p>
<blockquote>
<div><p>Mata el resto de la línea, o una o más líneas (<code class="docutils literal notranslate"><span class="pre">kill-line</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Shift</kbd>-<kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-S-backspace</span></code>)</p>
<blockquote>
<div><p>Mata toda una línea a la vez (<code class="docutils literal notranslate"><span class="pre">kill-whole-line</span></code>).</p>
</div></blockquote>
<p>El comando kill más sencillo es <code class="docutils literal notranslate"><span class="pre">C-k</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-line</span></code>). Si se usa al final de una línea, elimina el carácter de nueva línea con el que termina la línea, fusionando la línea siguiente con la actual (de este modo, se elimina por completo una línea en blanco). De lo contrario, <code class="docutils literal notranslate"><span class="pre">C-k</span></code> elimina todo el texto desde el punto hasta el final de la línea; si el punto estaba originalmente al principio de la línea, la deja en blanco.</p>
<p>Los espacios y tabuladores al final de la línea se ignoran al decidir qué caso se aplica. Siempre que el punto esté después del último carácter de la línea que no sea un espacio en blanco, puede estar seguro de que <code class="docutils literal notranslate"><span class="pre">C-k</span></code> eliminará la nueva línea. Para eliminar toda una línea que no esté en blanco, vaya al principio y escriba <code class="docutils literal notranslate"><span class="pre">C-k</span></code> dos veces.</p>
<p>En este contexto, «línea» significa una línea de texto lógica, no una línea de pantalla (<strong>ver Líneas de Continuación</strong>).</p>
<p>Cuando a <code class="docutils literal notranslate"><span class="pre">C-k</span></code> se le da un argumento positivo <em>n</em>, elimina <em>n</em> líneas y las nuevas líneas que las siguen (el texto en la línea actual antes del punto no se elimina). Con un argumento negativo <em>-n</em>, elimina n líneas anteriores a la línea actual, junto con el texto de la línea actual anterior al punto. <code class="docutils literal notranslate"><span class="pre">C-k</span></code> con un argumento cero elimina el texto anterior al punto en la línea actual.</p>
<p>Si la variable <code class="docutils literal notranslate"><span class="pre">kill-whole-line</span></code> es distinta de <code class="docutils literal notranslate"><span class="pre">nil</span></code>, <code class="docutils literal notranslate"><span class="pre">C-k</span></code> al principio de una línea elimina toda la línea, incluida la nueva línea siguiente. Esta variable es normalmente nula.</p>
<p><code class="docutils literal notranslate"><span class="pre">C-S-backspace</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-whole-line</span></code>) elimina una línea completa incluyendo su nueva línea, independientemente de la posición del punto dentro de la línea. Tenga en cuenta que muchos terminales de texto le impedirán escribir la secuencia de teclas <code class="docutils literal notranslate"><span class="pre">C-S-backspace</span></code>.</p>
</section>
<section id="otros-comandos-de-muerte">
<h3>13.1.3 Otros Comandos de Muerte<a class="headerlink" href="#otros-comandos-de-muerte" title="Link to this heading"></a></h3>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-w</span></code>)</p>
<blockquote>
<div><p>Mata la región (<code class="docutils literal notranslate"><span class="pre">kill-region</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">M-w</span></code>)</p>
<blockquote>
<div><p>Copia la región dentro del anillo de muertes (<code class="docutils literal notranslate"><span class="pre">kill-ring-save</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">M-d</span></code>)</p>
<blockquote>
<div><p>Mata la siguiente palara (<code class="docutils literal notranslate"><span class="pre">kill-word</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">M-Del</span></code>)</p>
<blockquote>
<div><p>Mata una palabra hacia atrás (<code class="docutils literal notranslate"><span class="pre">backward-kill-word</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">DEL</span></code>)</p>
<blockquote>
<div><p>Mata hasta el principio de la frase (<code class="docutils literal notranslate"><span class="pre">backward-kill-sentence</span></code>). <strong>Vea Sentencias</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">M-k</span></code>)</p>
<blockquote>
<div><p>Mata al final de la frase (<code class="docutils literal notranslate"><span class="pre">kill-sentence</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">k</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-k</span></code>)</p>
<blockquote>
<div><p>Mata la siguiente expresión equilibrada (<code class="docutils literal notranslate"><span class="pre">kill-sexp</span></code>). <strong>Véase Expresiones con Paréntesis Equilibrados</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">z</kbd> <strong>caracter</strong> (<code class="docutils literal notranslate"><span class="pre">M-z</span></code> <strong>caracter</strong>)</p>
<blockquote>
<div><p>Mata hasta la siguiente aparición de <em>caracter</em> (<code class="docutils literal notranslate"><span class="pre">zap-to-char</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <code class="docutils literal notranslate"><span class="pre">zap-up-to-char</span></code> <strong>caracter</strong> (<code class="docutils literal notranslate"><span class="pre">M-x</span> <span class="pre">zap-up-to-char</span></code> <strong>caracter</strong>)</p>
<blockquote>
<div><p>Mata hasta, pero sin incluir, la siguiente aparición de <em>caracter</em>.</p>
</div></blockquote>
<p>Uno de los comandos de eliminación más usados es <code class="docutils literal notranslate"><span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-region</span></code>), que elimina el texto de la región (<strong>véase La Marca y la Región</strong>). Del mismo modo, <code class="docutils literal notranslate"><span class="pre">M-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-ring-save</span></code>) copia el texto de la región en el anillo de muertes sin eliminarlo del búfer. Si la marca está inactiva cuando teclea <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-w</span></code>) o <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">M-w</span></code>), el comando actúa sobre el texto entre el punto y donde puso la marca por última vez (<strong>ver Operar Sobre la Región</strong>).</p>
<p>Emacs también proporciona comandos para matar unidades sintácticas específicas: palabras, con <code class="docutils literal notranslate"><span class="pre">M-DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-d</span></code> (<strong>vea Palabras</strong>); expresiones compuestas, con <code class="docutils literal notranslate"><span class="pre">C-M-k</span></code> (<strong>vea Expresiones con paréntesis balanceados</strong>); y frases, con <code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">DEL</span></code> y <code class="docutils literal notranslate"><span class="pre">M-k</span></code> (<strong>vea Frases</strong>).</p>
<p>El comando <code class="docutils literal notranslate"><span class="pre">M-z</span></code> (<code class="docutils literal notranslate"><span class="pre">zap-to-char</span></code>) combina matar con buscar: lee un carácter y mata desde el punto hasta (e incluyendo) la siguiente aparición de ese carácter en el buffer. Un argumento numérico actúa como contador de repeticiones; un argumento negativo significa buscar hacia atrás y matar el texto anterior al punto. Se mantiene un historial de los caracteres usados anteriormente, al que se puede acceder mediante las teclas <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">p</kbd> / <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">n</kbd> (<code class="docutils literal notranslate"><span class="pre">M-p</span></code>/<code class="docutils literal notranslate"><span class="pre">M-n</span></code>). Esto es útil sobre todo si el carácter que se va a utilizar tiene que introducirse mediante un método de entrada complicado. Un comando similar <code class="docutils literal notranslate"><span class="pre">zap-up-to-char</span></code> mata desde el punto hasta, pero sin incluir, la siguiente aparición de un carácter, con un argumento numérico que actúa como contador de repeticiones.</p>
</section>
<section id="opciones-de-matado">
<h3>13.1.4 Opciones de Matado<a class="headerlink" href="#opciones-de-matado" title="Link to this heading"></a></h3>
<p>Algunos buffers especializados contienen texto de <em>sólo lectura</em>, que no puede ser modificado y por lo tanto no puede ser eliminado. Los comandos kill funcionan de forma especial en un buffer de sólo lectura: se mueven sobre el texto y lo copian al anillo kill, sin borrarlo realmente del buffer. Normalmente, también pitan y muestran un mensaje de error cuando esto ocurre. Pero si establece la variable <code class="docutils literal notranslate"><span class="pre">kill-read-only-ok</span></code> a un valor no nulo, sólo imprimen un mensaje en el área de eco para explicar por qué el texto no ha sido borrado.</p>
<p>Antes de guardar el kill en el anillo kill, puedes transformar la cadena usando <code class="docutils literal notranslate"><span class="pre">kill-transform-function</span></code>. Se llama con la cadena a matar, y debería devolver la cadena que quiere que se guarde. También puede devolver <code class="docutils literal notranslate"><span class="pre">nil</span></code>, en cuyo caso la cadena no se guardará en el anillo de destrucción. Por ejemplo, si nunca quiere guardar una cadena con espacio en blanco puro en el anillo de muerte, puede decir:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">setq</span> <span class="n">kill</span><span class="o">-</span><span class="n">transform</span><span class="o">-</span><span class="n">function</span>
<span class="p">(</span><span class="k">lambda</span> <span class="p">(</span><span class="n">string</span><span class="p">)</span>
<span class="p">(</span><span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="p">(</span><span class="n">string</span><span class="o">-</span><span class="n">blank</span><span class="o">-</span><span class="n">p</span> <span class="n">string</span><span class="p">))</span>
<span class="n">string</span><span class="p">)))</span>
</pre></div>
</div>
<p>Si cambia la variable <code class="docutils literal notranslate"><span class="pre">kill-do-not-save-duplicates</span></code> a un valor no nulo, las muertes subsiguientes idénticas producen una única entrada de <code class="docutils literal notranslate"><span class="pre">kill-ring</span></code>, sin duplicación.</p>
</section>
</section>
<section id="tirar-de-un-texto">
<h2>13.2 Tirar de un Texto<a class="headerlink" href="#tirar-de-un-texto" title="Link to this heading"></a></h2>
<p><em>yanking</em> significa reinsertar un texto previamente eliminado. La forma habitual de mover o copiar un texto es eliminarlo y arrastrarlo a otro lugar.</p>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">C-y</span></code>)</p>
<blockquote>
<div><p>Tira (jala) en el punto de la última muerte en el búfer (<code class="docutils literal notranslate"><span class="pre">yank</span></code>).</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">M-y</span></code>)</p>
<blockquote>
<div><p>Puede sustituir el texto que acaba de eliminar por un lote anterior de texto eliminado (yank-pop), o permitir seleccionar de la lista de lotes de texto eliminados anteriormente.
<strong>Véase Retirar Textos Eliminados Anteriormente</strong>.</p>
</div></blockquote>
<p><kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-w</span></code>)</p>
<blockquote>
<div><p>Hace que la siguiente orden, si es una orden de destrucción, se añada a la destrucción anterior (<code class="docutils literal notranslate"><span class="pre">append-next-kill</span></code>). <strong>Véase Añadir Muertes</strong>.</p>
</div></blockquote>
<p>El comando básico de yanking es <code class="docutils literal notranslate"><span class="pre">C-y</span></code> (<code class="docutils literal notranslate"><span class="pre">yank</span></code>). Inserta la muerte más reciente, dejando el cursor al final del texto insertado. También coloca la marca al principio del texto insertado, sin activar la marca; esto le permite saltar fácilmente a esa posición, si lo desea, con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-SPC</span></code>) (<strong>véase El Anillo de Marcas</strong>).</p>
<p>Con un argumento de prefijo simple (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">C-y</span></code>), el comando deja el cursor delante del texto insertado y activa la marca al final. El uso de cualquier otro argumento prefijo especifica una marca anterior; por ejemplo, <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">4</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">4</span> <span class="pre">C-y</span></code>) reinserta la cuarta marca más reciente. <strong>Véase Eliminación de Muertes Anteriores</strong>.</p>
<p>En las pantallas gráficas y en las pantallas con modo texto, <code class="docutils literal notranslate"><span class="pre">C-y</span></code> comprueba primero si otra aplicación ha colocado algún texto en el portapapeles del sistema más recientemente que la última vez que Emacs lo mató. Si es así, inserta el texto del portapapeles en su lugar. Así, Emacs trata efectivamente las operaciones de «cortar» o «copiar» del portapapeles realizadas en otras aplicaciones como muertes de Emacs, excepto que no se registran en el anillo de muertes. Ver <strong>Operaciones «Cortar y Pegar» en Pantallas Gráficas</strong>, para más detalles.</p>
<section id="anillo-de-muerte">
<h3>13.2.1 Anillo de Muerte<a class="headerlink" href="#anillo-de-muerte" title="Link to this heading"></a></h3>
<p>El <em>kill ring</em> (anillo de muertes) es una lista de bloques de texto que han sido eliminados previamente. Sólo hay un kill ring, compartido por todos los buffers, por lo que puede matar texto en un buffer y arrancarlo en otro buffer. Esta es la forma habitual de mover texto de un búfer a otro. (Hay otros métodos: por ejemplo, puede almacenar el texto en un registro; <strong>vea Registros</strong>. <strong>Vea Acumulando Texto</strong>, para algunas otras formas de mover texto).</p>
<p>El número máximo de entradas en el kill ring se controla mediante la variable <code class="docutils literal notranslate"><span class="pre">kill-ring-max</span></code>. Por defecto es 120. Si hace un nuevo kill (si mata texto) cuando se ha alcanzado este límite, Emacs hace espacio borrando la entrada más antigua en el kill ring (en el anillo de muertes).</p>
<p>El contenido actual del anillo de destrucción se almacena en una variable llamada <code class="docutils literal notranslate"><span class="pre">kill-ring</span></code>; puede ver el contenido completo del anillo de destrucción con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">h</kbd> <kbd class="kbd docutils literal notranslate">v</kbd> <code class="docutils literal notranslate"><span class="pre">kill-ring</span></code> (<code class="docutils literal notranslate"><span class="pre">C-h</span> <span class="pre">v</span> <span class="pre">kill-ring</span></code>).</p>
</section>
<section id="borrar-muertes-anteriores">
<h3>13.2.2 Borrar Muertes Anteriores<a class="headerlink" href="#borrar-muertes-anteriores" title="Link to this heading"></a></h3>
<p>Como se explica en Yanking, puede usar un argumento numérico a <code class="docutils literal notranslate"><span class="pre">C-y</span></code> para sacar texto que ya no es la muerte más reciente. Esto es útil si recuerda qué entrada del anillo de muertes quiere. Si no, puede usar el comando <code class="docutils literal notranslate"><span class="pre">M-y</span></code> (<code class="docutils literal notranslate"><span class="pre">yank-pop</span></code>) para recorrer las posibilidades o seleccionar uno de las muertes anteriores.</p>
<p>Si el comando anterior era un comando yank, <code class="docutils literal notranslate"><span class="pre">M-y</span></code> toma el texto que fue yankado (que fue empujado al anillo de muertes) y lo reemplaza con el texto de un kill (de una muerte) anterior. Así, para recuperar el texto de la penúltima muerte, primero use <code class="docutils literal notranslate"><span class="pre">C-y</span></code> para arrancar la última muerte, y luego use <code class="docutils literal notranslate"><span class="pre">M-y</span></code> para reemplazarlo con la muerte anterior. Esto sólo funciona después de un <code class="docutils literal notranslate"><span class="pre">C-y</span> <span class="pre">u</span></code> otro <code class="docutils literal notranslate"><span class="pre">M-y</span></code>. (Si <code class="docutils literal notranslate"><span class="pre">M-y</span></code> se invoca después de algún otro comando, funciona de forma diferente, ver más abajo).</p>
<p>Puede entender el modo de funcionamiento de <code class="docutils literal notranslate"><span class="pre">M-y</span></code> en términos de un puntero al último tirón (lo último que se ha llevado al anillo de muertes) que apunta a una entrada en el dicho anillo. Cada vez que se mata, el puntero del último tirón se mueve a la entrada recién hecha en la parte delantera del anillo. <code class="docutils literal notranslate"><span class="pre">C-y</span></code> elimina la entrada a la que apunta el puntero del último tirón. <code class="docutils literal notranslate"><span class="pre">M-y</span></code> después de un <code class="docutils literal notranslate"><span class="pre">C-y</span></code> u otro <code class="docutils literal notranslate"><span class="pre">M-y</span></code> mueve el puntero del último yank (tirón) a la entrada anterior, y el texto en el buffer cambia para coincidir. Suficientes comandos <code class="docutils literal notranslate"><span class="pre">M-y</span></code> uno tras otro pueden mover el puntero a cualquier entrada en el anillo, por lo que puede obtener cualquier entrada en el buffer. Finalmente, el puntero llega al final del anillo; el siguiente <code class="docutils literal notranslate"><span class="pre">M-y</span></code> vuelve a la primera entrada.</p>
<p><code class="docutils literal notranslate"><span class="pre">M-y</span></code> mueve el puntero de la última entrada en el anillo, pero no cambia el orden de las entradas en él, que siempre va desde la muerte más reciente al principio hasta la más antigua que aún se recuerde.</p>
<p>Cuando se utiliza después de <code class="docutils literal notranslate"><span class="pre">C-y</span></code> o <code class="docutils literal notranslate"><span class="pre">M-y</span></code>, <code class="docutils literal notranslate"><span class="pre">M-y</span></code> puede recibir un argumento numérico, que le indica cuántas entradas debe avanzar el puntero del último yank. Un argumento negativo mueve el puntero hacia el frente del anillo; desde el frente del anillo, se mueve alrededor de la última entrada y continúa hacia adelante desde allí.</p>
<p>Una vez que el texto que está buscando es traído al buffer, puede dejar de hacer comandos <code class="docutils literal notranslate"><span class="pre">M-y</span></code> y el último texto jalado permanecerá allí. Es sólo una copia de la entrada del anillo de matar, por lo que editarlo en el buffer no cambia lo que hay en el anillo. Mientras no se realice una nueva muerte, el puntero de la última permanece en el mismo lugar en el anillo de muerte, por lo que repetir <code class="docutils literal notranslate"><span class="pre">C-y</span></code> arrancará (jalará, tirará) otra copia de la misma muerte anterior.</p>
<p>Cuando se llama a <code class="docutils literal notranslate"><span class="pre">C-y</span></code> con un argumento numérico, también se establece el puntero del último tirón a la entrada que se tira.</p>
<p>También puede invocar <code class="docutils literal notranslate"><span class="pre">M-y</span></code> después de un comando que no sea un comando yank. En ese caso, <code class="docutils literal notranslate"><span class="pre">M-y</span></code> le pregunta en el minibuffer por uno de las muertes anteriores. Puede usar los comandos de historial del minibuffer (ver <strong>Historial del Minibuffer</strong>) para navegar o buscar entre las entradas del anillo de muertes hasta que encuentre la que desea reinsertar. O puede usar los comandos de completado (ver <strong>Comandos de Completado</strong>) para completar una entrada de la lista de entradas del anillo de muerte o hacer aparecer el buffer <code class="docutils literal notranslate"><span class="pre">Completions</span></code> (Completado) con las entradas candidatas entre las que puede elegir. Después de seleccionar la entrada del anillo de muerte, puede editarla opcionalmente en el minibuffer. Por último, escriba <kbd class="kbd docutils literal notranslate">RETURN</kbd> (<code class="docutils literal notranslate"><span class="pre">RET</span></code>) para salir del minibuffer e insertar el texto del anillo de muerte seleccionado. Como en el caso de <code class="docutils literal notranslate"><span class="pre">M-y</span></code> después de otro comando yank, el puntero del último yank (tirón) queda apuntando al texto que acaba de extraer o jalar, ya sea uno de las muertes anteriores o una entrada del anillo de muerte que editó antes de insertarlo. (En este último caso, la entrada editada se añade al principio del kill-ring). Así que aquí, también, tecleando <code class="docutils literal notranslate"><span class="pre">C-y</span></code> sacará otra copia del texto que acaba de insertar.</p>
<p>Cuando se invoca con un argumento de prefijo simple <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">M-y</span></code>) después de un comando que no es un comando yank, <code class="docutils literal notranslate"><span class="pre">M-y</span></code> deja el cursor delante del texto insertado, y pone la marca al final, como hace <code class="docutils literal notranslate"><span class="pre">C-y</span></code>.</p>
</section>
<section id="anadir-muertes">
<h3>13.2.3 Añadir Muertes<a class="headerlink" href="#anadir-muertes" title="Link to this heading"></a></h3>
<p>Normalmente, cada orden de destrucción introduce una nueva entrada en el anillo de muertes. Sin embargo, dos o más órdenes de matar seguidas combinan su texto en una sola entrada, de forma que una sola <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">y</kbd> (<code class="docutils literal notranslate"><span class="pre">C-y</span></code>) arranca todo el texto como una unidad, tal y como estaba antes de ser matado.</p>
<p>Por lo tanto, si quiere matar el texto como una unidad, no es necesario que lo mate todo de una sola vez; puede seguir matando línea tras línea, o palabra tras palabra, hasta que lo haya matado todo, y aún podrá recuperarlo todo de una sola vez.</p>
<p>Los comandos que matan hacia delante desde un punto añaden texto al final del texto matado anteriormente. Los comandos que matan hacia atrás desde el punto añaden texto al principio. De esta forma, cualquier secuencia de comandos de eliminación hacia delante y hacia atrás pone todo el texto eliminado en una sola entrada sin reordenar. Los argumentos numéricos no rompen la secuencia de eliminación. Por ejemplo, supongamos que el buffer contiene este texto:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Esta es una línea de texto de ejemplo.
</pre></div>
</div>
<p>con el punto mostrado por <code class="docutils literal notranslate"><span class="pre"></span></code>. Si escribe <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">M-d</span> <span class="pre">M-DEL</span> <span class="pre">M-d</span> <span class="pre">M-DEL</span></code>), matando alternativamente hacia adelante y hacia atrás, terminará con <code class="docutils literal notranslate"><span class="pre">una</span> <span class="pre">línea</span> <span class="pre">de</span> <span class="pre">ejemplo</span></code> como una entrada en el anillo de matar, y <code class="docutils literal notranslate"><span class="pre">Esto</span> <span class="pre">es</span> <span class="pre">texto.</span></code> en el buffer. (Observe el doble espacio entre <code class="docutils literal notranslate"><span class="pre">es</span></code> y <code class="docutils literal notranslate"><span class="pre">texto</span></code>, que puede limpiar con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">M-SPC</span></code>) o <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">q</kbd> (<code class="docutils literal notranslate"><span class="pre">M-q</span></code>)).</p>
<p>Otra forma de matar el mismo texto es retroceder dos palabras con <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">b</kbd> (<code class="docutils literal notranslate"><span class="pre">M-b</span> <span class="pre">M-b</span></code>), y luego matar las cuatro palabras hacia adelante con <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">d</kbd> (<code class="docutils literal notranslate"><span class="pre">C-u</span> <span class="pre">M-d</span></code>). Esto produce exactamente los mismos resultados en el buffer y en el kill ring. <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">f</kbd> <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">u</kbd> <kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">BACKSPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">M-f</span> <span class="pre">M-f</span> <span class="pre">C-u</span> <span class="pre">M-DEL</span></code>) mata el mismo texto, yendo todo hacia atrás; una vez más, el resultado es el mismo. El texto en la entrada del kill ring siempre tiene el mismo orden que tenía en el buffer antes de que lo matara.</p>
<p>Si una orden de matar está separada de la última orden de matar por otras órdenes (no sólo argumentos numéricos), inicia una nueva entrada en el anillo de muertes. Pero puede forzarla a combinarse con el último texto matado, tecleando justo antes <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">Alt</kbd>-<kbd class="kbd docutils literal notranslate">w</kbd> (<code class="docutils literal notranslate"><span class="pre">C-M-w</span></code>, <code class="docutils literal notranslate"><span class="pre">append-next-kill</span></code>). <code class="docutils literal notranslate"><span class="pre">C-M-w</span></code> le dice al comando que le sigue, si es un comando de eliminación, que trate la eliminación como parte de la secuencia de eliminaciones anteriores. Como de costumbre, la orden de matar se añade al texto matado anteriormente si la orden mata hacia delante, y se antepone si la orden mata hacia atrás. De este modo, puede matar varios trozos de texto separados y acumularlos para volver a arrancarlos en un solo lugar.</p>
<p>Un comando de matar que sigue a <code class="docutils literal notranslate"><span class="pre">M-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-ring-save</span></code>) no se añade al texto que <code class="docutils literal notranslate"><span class="pre">M-w</span></code> copió en el anillo de muertes.</p>
</section>
</section>
<section id="operaciones-de-cortar-y-pegar-en-entornos-graficos-de-escritorio">
<h2>13.3 Operaciones de «cortar y pegar» en Entornos Gráficos de Escritorio<a class="headerlink" href="#operaciones-de-cortar-y-pegar-en-entornos-graficos-de-escritorio" title="Link to this heading"></a></h2>
<p>En la mayoría de los entornos gráficos de escritorio, puede transferir datos (normalmente texto) entre diferentes aplicaciones utilizando una función del sistema llamada <em>portapapeles</em>. En X, existen otras dos facilidades similares: la selección primaria y la selección secundaria. Cuando Emacs se ejecuta en una pantalla gráfica, sus comandos kill y yank se integran con estas facilidades, de modo que puedes transferir texto fácilmente entre Emacs y otras aplicaciones gráficas.</p>
<p>Por defecto, Emacs usa UTF-8 como sistema de codificación para las transferencias de texto entre programas. Si encuentra que el texto pegado no es lo que esperaba, puede especificar otro sistema de codificación tecleando <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">RETURN</kbd> <kbd class="kbd docutils literal notranslate">x</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">RET</span> <span class="pre">x</span></code>) o <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">x</kbd> <kbd class="kbd docutils literal notranslate">RETURN</kbd> <kbd class="kbd docutils literal notranslate">X</kbd> (<code class="docutils literal notranslate"><span class="pre">C-x</span> <span class="pre">RET</span> <span class="pre">X</span></code>). También puede solicitar un tipo de datos diferente personalizando <code class="docutils literal notranslate"><span class="pre">x-select-request-type</span></code>. Véase <strong>Sistemas de Codificación para la Comunicación entre Procesos</strong>.</p>
<section id="utilizar-el-portapapeles">
<h3>13.3.1 Utilizar el Portapapeles<a class="headerlink" href="#utilizar-el-portapapeles" title="Link to this heading"></a></h3>
<p>El <em>portapapeles</em> es la herramienta que la mayoría de las aplicaciones gráficas utilizan para «cortar y pegar». Cuando el portapapeles existe, los comandos kill y yank de Emacs hacen uso de él.</p>
<p>Cuando mata algún texto con un comando como <code class="docutils literal notranslate"><span class="pre">C-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-region</span></code>), o lo copia al anillo de la muerte con un comando como <code class="docutils literal notranslate"><span class="pre">M-w</span></code> (<code class="docutils literal notranslate"><span class="pre">kill-ring-save</span></code>), ese texto también se pone en el portapapeles.</p>
<p>Cuando un comando kill de Emacs pone texto en el portapapeles, normalmente se pierde el contenido del portapapeles existente. Opcionalmente, Emacs puede guardar el contenido existente del portapapeles en el kill ring (anillo de muertes), evitando que pierda los datos anteriores del portapapeles. Si <code class="docutils literal notranslate"><span class="pre">save-interprogram-paste-before-kill</span></code> se ha establecido en un número, entonces los datos se copian si son más pequeños (en caracteres) que este número. Si esta variable tiene cualquier otro valor que no sea nulo, los datos se copian siempre, con el riesgo de un alto consumo de memoria si los datos resultan ser grandes.</p>
<p>Los comandos Yank, como <code class="docutils literal notranslate"><span class="pre">C-y</span></code> (<code class="docutils literal notranslate"><span class="pre">yank</span></code>), también usan el portapapeles. Si otra aplicación «posee» el portapapeles, es decir, si cortó o copió texto allí más recientemente que su último comando de eliminación en Emacs, entonces lo elimina del portapapeles en lugar del anillo de muertes.</p>
<p>Normalmente, girar el anillo de muertes con <code class="docutils literal notranslate"><span class="pre">M-y</span></code> (<code class="docutils literal notranslate"><span class="pre">yank-pop</span></code>) no altera el portapapeles. Sin embargo, si cambia <code class="docutils literal notranslate"><span class="pre">yank-pop-change-selection</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>, entonces <code class="docutils literal notranslate"><span class="pre">M-y</span></code> guarda el nuevo yank en el portapapeles.</p>
<p>Para evitar que los comandos kill y yank accedan al portapapeles, cambie la variable <code class="docutils literal notranslate"><span class="pre">select-enable-clipboard</span> <span class="pre">a</span> <span class="pre">nil</span></code>.</p>
<p>Los programas pueden poner en el portapapeles otras cosas además de texto plano. Por ejemplo, un navegador web normalmente le permitirá elegir «Copiar imagen» en las imágenes, y esta imagen se pondrá en el portapapeles. En plataformas capaces, Emacs puede extraer estos objetos con el comando yank-media, pero sólo en modos que lo soporten (ver <strong>Tirando de Medios</strong> en el Manual de Referencia de Emacs Lisp).</p>
<p>Muchos entornos de escritorio X soportan una característica llamada <em>gestor del portapapeles</em>. Si sale de Emacs mientras es el actual «propietario» de los datos del portapapeles, y hay un gestor de portapapeles en ejecución, Emacs transfiere los datos del portapapeles al gestor de portapapeles para que no se pierdan. En algunas circunstancias, esto puede causar un retraso al salir del Editor; si desea evitar que Emacs transfiera datos al gestor del portapapeles, cambie la variable <code class="docutils literal notranslate"><span class="pre">x-select-enable-clipboard-manager</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>.</p>
<p>Dado que las cadenas que contienen bytes NUL suelen truncarse al pasarlas por el portapapeles, Emacs sustituye dichos caracteres por «0» antes de transferirlos al portapapeles del sistema.</p>
<p>Antes de Emacs 24, los comandos kill y yank usaban la selección primaria (ver <strong>Cortar y Pegar con Otras Aplicaciones de Ventana</strong>), no el portapapeles. Si prefiere este comportamiento,
cambie <code class="docutils literal notranslate"><span class="pre">select-enable-clipboard</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, <code class="docutils literal notranslate"><span class="pre">select-enable-primary</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>, y <code class="docutils literal notranslate"><span class="pre">mouse-drag-copy-region</span></code> a <code class="docutils literal notranslate"><span class="pre">t</span></code>. En este caso, puede usar los siguientes comandos para actuar explícitamente sobre el portapapeles: <code class="docutils literal notranslate"><span class="pre">clipboard-kill-region</span></code> mata la región y la guarda en el portapapeles; <code class="docutils literal notranslate"><span class="pre">clipboard-kill-ring-save</span></code> copia la región al anillo de muertes y la guarda en el portapapeles; y <code class="docutils literal notranslate"><span class="pre">clipboard-yank</span></code> tira del contenido del portapapeles en el punto.</p>
</section>
<section id="cortar-y-pegar-con-otras-aplicaciones-de-ventana">
<h3>13.3.2 Cortar y Pegar con Otras Aplicaciones de Ventana<a class="headerlink" href="#cortar-y-pegar-con-otras-aplicaciones-de-ventana" title="Link to this heading"></a></h3>
<p>Bajo el Sistema X Window, PGTK y Haiku, existe una selección primaria que contiene el último tramo de texto seleccionado en una aplicación X (normalmente arrastrando el ratón). Normalmente, este texto puede insertarse en otras aplicaciones X mediante 2 clics del ratón. La selección primaria está separada del portapapeles. Su contenido es más frágil; se sobrescribe cada vez que se selecciona texto con el ratón, mientras que el portapapeles sólo se sobrescribe mediante comandos explícitos de cortar o copiar.</p>
<p>En X, siempre que la región esté activa (véase <strong>La Marca y la Región</strong>), el texto de la región se guarda en la selección primaria. Esto se aplica independientemente de si la región se hizo arrastrando o haciendo clic con el ratón (véase <strong>Comandos del Ratón para Editar</strong>), o mediante comandos del teclado (por ejemplo, escribiendo <kbd class="kbd docutils literal notranslate">Ctrl</kbd>-<kbd class="kbd docutils literal notranslate">SPACE</kbd> (<code class="docutils literal notranslate"><span class="pre">C-SPC</span></code>) y moviendo el punto; véase <strong>Establecer la Marca</strong>).</p>
<p>Si cambia la <code class="docutils literal notranslate"><span class="pre">variable</span> <span class="pre">select-active-regions</span></code> a <code class="docutils literal notranslate"><span class="pre">only</span></code>, Emacs guarda sólo las regiones temporalmente activas en la selección primaria, es decir, aquellas hechas con el ratón o con shift selection (ver <strong>Selección mediante shift</strong>). Si cambia <code class="docutils literal notranslate"><span class="pre">select-active-regions</span></code> a <code class="docutils literal notranslate"><span class="pre">nil</span></code>, Emacs evita guardar regiones activas en la selección primaria por completo.</p>
<p>Para insertar la selección primaria en un buffer de Emacs, haga clic con mouse-2 (<code class="docutils literal notranslate"><span class="pre">mouse-yank-primary</span></code>) donde quiera insertarla. Vea <strong>Comandos del Ratón para Editar</strong>. También puede usar el comando yank normal de Emacs (<code class="docutils literal notranslate"><span class="pre">C-y</span></code>) para insertar este texto si <code class="docutils literal notranslate"><span class="pre">select-enable-primary</span></code> está activado (vea <strong>Usando el Portapapeles</strong>).</p>
<p>Por defecto, Emacs mantiene la región activa incluso después de que se seleccione texto en otro programa; esto es contrario al comportamiento típico de X. Para hacer que Emacs desactive la región después de que otro programa coloque datos en la selección primaria, active el modo menor global <code class="docutils literal notranslate"><span class="pre">lost-selection-mode</span></code>.</p>
<p>MS-Windows no proporciona selección primaria, pero Emacs la emula dentro de una única sesión de Emacs almacenando internamente el texto seleccionado. Por lo tanto, todas las características y comandos relacionados con la selección primaria funcionan en Windows como lo hacen en X, para cortar y pegar dentro de la misma sesión, pero no entre sesiones de Emacs o con otras aplicaciones.</p>
</section>
<section id="seleccion-secundaria">
<h3>13.3.3 Selección Secundaria<a class="headerlink" href="#seleccion-secundaria" title="Link to this heading"></a></h3>
<p>Además de la selección primaria, el Sistema X Window proporciona una segunda facilidad similar conocida como selección secundaria. Hoy en día, pocas aplicaciones X hacen uso de la selección secundaria, pero puede acceder a ella usando los siguientes comandos de Emacs:</p>
<p>Establece la selección secundaria, con un extremo en el lugar donde presiona el botón, y el otro extremo en el lugar donde lo suelta (mouse-set-secondary). El texto seleccionado se resalta, usando la cara de selección secundaria, a medida que lo arrastra. La ventana se desplaza automáticamente si arrastra el ratón fuera de la parte superior o inferior de la ventana, igual que mouse-set-region (ver Comandos del Ratón para Editar).</p>
<p>Este comando no altera el anillo de muertes.</p>
<dl>
<dt>M-arrastrar-ratón-1</dt><dd><p>Establece la selección secundaria, con un extremo en el lugar donde se pulsa el botón, y el otro extremo en el lugar donde se suelta (mouse-set-secondary). El texto seleccionado se
resalta, usando la cara de selección secundaria, a medida que lo arrastra. La ventana se desplaza automáticamente si arrastra el ratón fuera de la parte superior o inferior de la
ventana, igual que mouse-set-region (ver Comandos del Ratón para Editar).</p>
<p>Este comando no altera el anillo de muertes.</p>
</dd>
<dt>M-ratón-1</dt><dd><p>Establece un extremo para la selección secundaria (mouse-start-secondary); use M-ratón-3 para establecer el otro extremo y completar la selección. Este comando cancela cualquier
selección secundaria existente, cuando inicia una nueva.</p>
</dd>
<dt>M-ratón-3</dt><dd><p>Coloca la selección secundaria (mouse-secondary-save-then-kill), con un extremo en la posición en la que pulsó M-ratón-3, y el otro en la posición especificada previamente con
M-ratón-1. Esto también pone el texto seleccionado en el anillo de muertes. Un segundo M-ratón-3 en el mismo lugar mata el texto seleccionado por la selección secundaria que se acaba
de hacer.</p>
</dd>
<dt>M-ratón-2</dt><dd><p>Inserta la selección secundaria donde has hecho clic, colocando el punto al final del texto arrancado (mouse-yank-secondary).</p>
</dd>
</dl>
<p>El doble o triple clic de M-ratón-1 opera sobre palabras y líneas, de forma similar a M-ratón-1.</p>
<p>Si mouse-yank-at-point es distinto de cero, M-mouse-2 hace clic en el punto. Entonces no importa exactamente dónde haga clic, o incluso en cuál de las ventanas del marco haga clic. Ver Comandos del Ratón para Editar. Esta opción de usuario también afecta a la búsqueda interactiva: si no es nula, al pulsar con el ratón en cualquier parte del marco se añadirá el texto a la cadena de búsqueda.</p>
</section>
</section>
<section id="acumular-texto">
<h2>13.4 Acumular Texto<a class="headerlink" href="#acumular-texto" title="Link to this heading"></a></h2>
<p>Normalmente copiamos o movemos texto matándolo y tirando de él, pero hay otros métodos convenientes para copiar un bloque de texto en muchos lugares, o para copiar muchos bloques de texto dispersos en un solo lugar. Aquí describimos los comandos para acumular trozos de texto dispersos en un buffer o en un fichero.</p>
<dl class="simple">
<dt>M-x append-to-buffer</dt><dd><p>Añade una región al contenido de un búfer especificado.</p>
</dd>
<dt>M-x preprend-to-buffer</dt><dd><p>Antepone una región al contenido de un búfer especificado.</p>
</dd>
<dt>M-x copy-to-buffer</dt><dd><p>Copia la región en un búfer especificado, borrando el contenido antiguo de ese búfer.</p>
</dd>
<dt>M-x insert-buffer</dt><dd><p>Inserta el contenido de un búfer especificado en el búfer actual en un punto.</p>
</dd>
<dt>M-x append-to-file</dt><dd><p>Añade una región al contenido de un archivo especificado, al final.</p>
</dd>
</dl>
<p>Para acumular texto en un búfer, utilice M-x append-to-buffer. Esto lee un nombre de búfer y luego inserta una copia de la región en el búfer especificado. Si especifica un búfer inexistente, append-to-buffer crea el búfer. El texto se inserta en cualquier punto de ese búfer. Si ha estado utilizando el búfer para editar, el texto copiado se inserta en el centro del texto del búfer, comenzando donde se encuentre el punto en ese momento.</p>
<p>El punto de ese búfer queda al final del texto copiado, de modo que los usos sucesivos de anexar al búfer acumulan el texto en el búfer especificado en el mismo orden en que fueron copiados. Estrictamente hablando, append-to-buffer no siempre añade texto al que ya está en el búfer; sólo lo añade si el punto de ese búfer está al final. Sin embargo, si append-to-buffer es el único comando que usa para alterar un buffer, entonces el punto siempre está al final.</p>
<p>M-x prepend-to-buffer es igual que append-to-buffer excepto en que el punto en el otro buffer se deja antes del texto copiado, de modo que los usos sucesivos de este comando añaden texto en orden inverso. M-x copy-to-buffer es similar, excepto en que cualquier texto existente en el otro buffer se borra, por lo que el buffer queda conteniendo sólo el texto recién copiado en él.</p>
<p>El comando C-x x i (insertar-buffer) se puede usar para recuperar el texto acumulado en otro buffer. Este comando pide el nombre de un búfer e inserta una copia de todo el texto de ese búfer en el búfer actual en el punto, dejando el punto al principio del texto insertado. También añade la posición del final del texto insertado al anillo de marca, sin activar la marca. Para más información sobre los buffers, véase Utilización de Búferes Múltiples.</p>
<p>En lugar de acumular texto en un búfer, puede añadir texto directamente a un archivo con M-x append-to-file. Esto solicita un nombre de archivo y añade el texto de la región al final del archivo especificado. El archivo se modifica inmediatamente en el disco.</p>
<p>Debería usar append-to-file sólo con ficheros que no estén siendo visitados en Emacs. Usarlo en un fichero que está editando en Emacs cambiaría el fichero a espaldas de Emacs, lo que puede llevar a perder parte de su edición.</p>
<p>Otra forma de mover texto es almacenarlo en un registro. Ver Registros.</p>
</section>
<section id="rectangulos">
<h2>13.5 Rectángulos<a class="headerlink" href="#rectangulos" title="Link to this heading"></a></h2>
<p>Los comandos de rectángulo operan sobre áreas rectangulares del texto: todos los caracteres entre un cierto par de columnas, en un cierto rango de líneas. Emacs tiene comandos para matar y tirar de rectángulos, vaciarlos, rellenarlos con espacios en blanco o texto, o borrarlos. Los comandos de rectángulo son útiles con texto en formatos de varias columnas, y para cambiar el texto dentro o fuera de tales formatos.</p>
<p>Para especificar un rectángulo para un comando, ponga la marca en una esquina y apunte a la esquina opuesta. El rectángulo así especificado se denomina región rectangular (region-rectangle). Si el punto y la marca están en la misma columna, el rectángulo regional estará vacío. Si están en la misma línea, la región-rectángulo tiene una línea de altura.</p>
<p>La región rectangular se controla del mismo modo que la región. Pero recuerde que una combinación dada de valores de punto y marca puede interpretarse como una región o como un rectángulo, dependiendo del comando que los utilice.</p>
<p>Una región rectangular también puede marcarse con el ratón: haga clic y arrastre C-Mouse-1 desde una esquina del rectángulo a la opuesta.</p>
<dl class="simple">
<dt>C-x r k</dt><dd><p>Mata el texto del rectángulo-región, guardando su contenido como el último rectángulo matado (kill-rectangle).</p>
</dd>
<dt>C-x r M-w</dt><dd><p>Guarda el texto del rectángulo-región como el último rectángulo matado (copy-rectangle-as-kill).</p>
</dd>
<dt>C-x r d</dt><dd><p>Borra el texto de la región-rectángulo (delete-rectangle).</p>
</dd>
<dt>C-x r y</dt><dd><p>Tira del último rectángulo matado con su esquina superior izquierda en el punto (rectángulo yank).</p>
</dd>
<dt>C-x r o</dt><dd><p>Inserta un espacio en blanco para rellenar el espacio del rectángulo-región (rectángulo abierto). Esto empuja el contenido anterior del rectángulo de región hacia la derecha.</p>
</dd>
<dt>C-x r N</dt><dd><p>Inserta números de línea a lo largo del borde izquierdo del rectángulo-región (rectángulo-número-líneas). Esto empuja el contenido anterior del rectángulo-región hacia la derecha.</p>
</dd>
<dt>C-x r c</dt><dd><p>Borra el rectángulo-región sustituyendo todo su contenido por espacios (clear-rectangle).</p>
</dd>
<dt>M-x delete-whitespace-rectangle</dt><dd><p>Delete whitespace in each of the lines on the specified rectangle, starting from the left edge column of the rectangle.</p>
</dd>
<dt>C-x r t cadena RET</dt><dd><p>Sustituye el contenido del rectángulo por una cadena en cada línea (cadena-rectángulo).</p>
</dd>
<dt>M-x string-insert-rectangle RET cadena RET</dt><dd><p>Inserta una cadena en cada línea del rectángulo.</p>
</dd>
<dt>C-x SPC</dt><dd><p>Activa el modo de marca de rectángulo (rectangle-mark-mode). Cuando este modo está activo, el rectángulo de la región se resalta y puede encogerse/crecerse, y los comandos estándar
kill y yank operan sobre él.</p>
</dd>
</dl>
<p>Las operaciones con rectángulos se dividen en dos clases: comandos para borrar o insertar rectángulos, y comandos para hacer rectángulos en blanco.</p>
<p>Hay dos formas de borrar el texto de un rectángulo: C-x r d (delete-rectangle) para borrar el texto completamente, o C-x r k (kill-rectangle) para eliminar el texto y guardarlo como el último rectángulo eliminado. En ambos casos, borrar la región-rectángulo es como borrar el texto especificado en cada línea del rectángulo; si hay algún texto siguiente en la línea, se mueve hacia atrás para rellenar el hueco.</p>
<p>Matar un rectángulo no es matar en el sentido habitual; el rectángulo no se almacena en el anillo de muertes, sino en un lugar especial que sólo registra el rectángulo matado más reciente. Esto se debe a que «yankear» un rectángulo (tirar o jalar de un rectángulo) es tan diferente de «yankear» un texto lineal que hay que utilizar diferentes comandos de «yankear». El «yank-popping» no está definido para los rectángulos.</p>
<p>C-x r M-w (copy-rectangle-as-kill) es el equivalente de M-w para rectángulos: registra el rectángulo como el último rectángulo eliminado, sin borrar el texto del búfer.</p>
<p>Para borrar el último rectángulo eliminado, escriba C-x r y (yank-rectangle). La primera línea del rectángulo se inserta en el punto, la segunda línea del rectángulo se inserta en la misma posición horizontal una línea verticalmente por debajo, y así sucesivamente. El número de líneas afectadas viene determinado por la altura del rectángulo guardado.</p>
<p>Por ejemplo, puede convertir dos listas de una columna en una lista de dos columnas matando una de las listas de una columna como un rectángulo y, a continuación, desplazándola al lado de la otra lista.</p>
<p>También puede copiar rectángulos dentro y fuera de registros con C-x r r r y C-x r i r. Consulte Guardar Rectángulos en Registros.</p>
<p>Hay dos comandos que puede usar para hacer rectángulos en blanco: C-x r c (clear-rectangle) borra el texto existente en el rectángulo-región, y C-x r o (open-rectangle) inserta un rectángulo en blanco.</p>
<p>M-x delete-whitespace-rectangle elimina los espacios en blanco horizontales a partir de una columna determinada. Esto se aplica a cada una de las líneas del rectángulo, y la columna viene especificada por el borde izquierdo del rectángulo. El borde derecho del rectángulo no afecta a este comando.</p>
<p>El comando C-x r N (rectangle-number-lines) inserta números de línea a lo largo del borde izquierdo del rectángulo-región. Normalmente, la numeración comienza a partir de 1 (para la primera línea del rectángulo). Con un argumento prefijo, el comando pide un número a partir del cual empezar, y una cadena de formato con la que imprimir los números (ver Formato de Cadenas en el Manual de Referencia de Emacs Lisp).</p>
<p>El comando C-x r t (string-rectangle) reemplaza el contenido de una región-rectángulo con una cadena en cada línea. No es necesario que la anchura de la cadena sea la misma que la del rectángulo. Si la anchura de la cadena es menor, el texto después del rectángulo se desplaza a la izquierda; si la cadena es mayor que el rectángulo, el texto después del rectángulo se desplaza a la derecha.</p>
<p>El comando M-x string-insert-rectangle es similar a string-rectangle, pero inserta la cadena en cada línea, desplazando el texto original a la derecha.</p>
<p>El comando C-x SPC (rectangle-mark-mode”) alterna si se resalta la región-rectángulo o la región estándar (activando primero la región si es necesario). Cuando este modo está activado, los comandos que redimensionan la región (C-f, C-n, etc.) lo hacen de forma rectangular, y matar y desplazar operan sobre el rectángulo. Véase Matar y Mover texto. El modo persiste sólo mientras la región está activa.</p>
<p>El rectángulo de la región sólo funciona cuando la marca está activa. En particular, cuando el modo Marca transitoria está desactivado (véase Desactivar el modo Marca transitoria), además de teclear C-x SPC deberá activar la marca.</p>
<p>A diferencia de la región estándar, la región-rectángulo puede tener sus esquinas extendidas más allá del final del búfer, o dentro de tramos de espacio en blanco en los que normalmente no puede entrar el punto, como en medio de un carácter TAB.</p>
<p>Cuando la región está activa (véase La Marca y la Región) y en modo rectángulo-marca (rectangle-mark-mode), C-x C-x ejecuta el comando rectangle-exchange-point-and-mark, que realiza un ciclo entre las cuatro esquinas del rectángulo-región. Esto resulta útil si desea modificar las dimensiones del rectángulo-región antes de invocar una operación sobre el texto marcado.</p>
</section>
<section id="enlaces-cua">
<h2>13.6 Enlaces CUA<a class="headerlink" href="#enlaces-cua" title="Link to this heading"></a></h2>
<p>El comando M-x cua-mode configura las combinaciones de teclas que son compatibles con el sistema de Acceso Común de Usuario (CUA) usado en muchas otras aplicaciones.</p>
<p>Cuando el modo CUA está activado, las teclas C-x, C-c, C-v y C-z invocan comandos que cortan (kill), copian, pegan (yank) y deshacen (undo) respectivamente. Las teclas C-x y C-c ejecutan cortar y copiar sólo si la región está activa. De lo contrario, siguen actuando como teclas de prefijo, de modo que los comandos estándar de Emacs como C-x C-c siguen funcionando. Tenga en cuenta que esto significa que la variable mark-even-if-inactive no tiene efecto para C-x y C-c (vea Operando en la Región).</p>
<p>Para introducir un comando Emacs como C-x C-f mientras la marca está activa, use uno de los siguientes métodos: mantenga pulsada la tecla Mayús junto con la tecla del prefijo, por ejemplo, S-C-x C-f, o teclee rápidamente la tecla del prefijo dos veces, por ejemplo, C-x C-x C-f.</p>
<p>Para desactivar la anulación de la vinculación estándar de Emacs por el modo CUA, manteniendo las otras características del modo CUA descritas a continuación, establezca la variable cua-enable-cua-keys a nil.</p>
<p>El modo CUA activa por defecto el modo Borrar-Selección (Delete-Selection mode) (véase Comandos del Ratón para Editar), de forma que el texto escrito sustituye a la región activa. Para utilizar CUA sin este comportamiento, establezca la variable cua-delete-selection en nil.</p>
<p>El modo CUA proporciona soporte mejorado para rectángulos con resaltado de rectángulo visible. Utilice C-RET para iniciar un rectángulo, extenderlo utilizando los comandos de movimiento, y cortarlo o copiarlo utilizando C-x o C-c. RET mueve el cursor a la siguiente esquina (en el sentido de las agujas del reloj) del rectángulo, para que pueda ampliarlo fácilmente en cualquier dirección. El texto normal que escriba se inserta a la izquierda o a la derecha de cada línea del rectángulo (en el mismo lado que el cursor).</p>
<p>Puede utilizar este soporte de rectángulo sin activar CUA llamando al comando cua-rectangle-mark-mode. También existe el comando estándar rectangle-mark-mode, véase Rectángulos.</p>
<p>Con CUA puede copiar fácilmente texto y rectángulos dentro y fuera de los registros proporcionando un prefijo numérico de un dígito a los comandos kill, copy y yank, por ejemplo, C-1 C-c copia la región en el registro 1, y C-2 C-v yanks el contenido del registro 2.</p>
<p>El modo CUA también dispone de una función de marca global que permite mover y copiar texto fácilmente entre buffers. Utilice C-S-SPC para activar o desactivar la marca global. Cuando la marca global está activada, todo el texto que mate o copie se inserta automáticamente en la marca global, y el texto que escriba se inserta en la marca global en lugar de en la posición actual.</p>
<p>Por ejemplo, para copiar palabras de varios búferes en una lista de palabras de un búfer determinado, establezca la marca global en el búfer de destino, luego navegue hasta cada una de las palabras que desee en la lista, márquela (por ejemplo, con S-M-f), cópiela en la lista con C-c o M-w, e inserte una nueva línea después de la palabra en la lista de destino pulsando RET.</p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Pie de página">
<a href="12_LaMarca-y-LaRegion.html" class="btn btn-neutral float-left" title="12 La marca y la región" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Anterior</a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Derechos de autor 2023, Tano.</p>
</div>
Compilado con <a href="https://www.sphinx-doc.org/">Sphinx</a> usando un
<a href="https://github.com/readthedocs/sphinx_rtd_theme">tema</a>
proporcionado por <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -1,110 +0,0 @@
1 La organización de la pantalla
=================================
En una pantalla gráfica, como en GNU/Linux usando el Sistema X Window, Emacs ocupa una ventana gráfica. En un terminal de texto, Emacs ocupa toda la pantalla del terminal. Usaremos el término *marco* para referirnos a una ventana gráfica o pantalla de terminal ocupada por Emacs. Emacs se comporta de forma muy similar en ambos tipos de marcos. Normalmente comienza con un solo marco, pero puedes crear marcos adicionales si lo desea (**ver Marcos y Pantallas Gráficas**).
Cada marco consta de varias regiones distintas. En la parte superior del marco hay una *barra de menús*, que permite acceder a los comandos a través de una serie de menús. En una pantalla gráfica, justo debajo de la barra de menús hay una *barra de herramientas*, una fila de iconos que ejecutan comandos de edición al hacer clic sobre ellos. En la parte inferior del marco hay un *área de eco*, donde se muestran mensajes informativos y donde introduce información cuando Emacs se la pide.
La zona principal del marco, por debajo de la barra de herramientas (si existe) y por encima de la zona de eco, se denomina *ventana*. En adelante, en este manual, usaremos la palabra "ventana" en este sentido. Los sistemas de visualización gráfica suelen utilizar la palabra "ventana" con un significado diferente; pero, como se ha indicado anteriormente, nos referimos a esas ventanas gráficas como "marcos".
Una ventana de Emacs es el lugar donde se muestra el *buffer* -el texto u otros gráficos que esté editando o visualizando-. En una pantalla gráfica, la ventana posee una barra de desplazamiento en un lado, que puede usarse para desplazarse por el búfer. La última línea de la ventana es una *línea de modo*. Muestra información diversa sobre lo que ocurre en el búfer, como por ejemplo si hay cambios sin guardar, los modos de edición que se están utilizando, el número de línea actual, etc.
Cuando inicia Emacs, normalmente sólo hay una ventana en el marco. Sin embargo, puede subdividir esta ventana horizontal o verticalmente para crear múltiples ventanas, cada una de las cuales puede mostrar independientemente un buffer (**vea Múltiples ventanas**).
En cualquier momento, una ventana es la *ventana seleccionada*. En una pantalla gráfica, la ventana seleccionada muestra un cursor más prominente (normalmente sólido y parpadeante); otras ventanas muestran un cursor menos prominente (normalmente una caja hueca). En un terminal de texto, sólo hay un cursor, que se muestra en la ventana seleccionada. El búfer que se muestra en la ventana seleccionada se llama *búfer actual*, y es donde tiene lugar la edición. La mayoría de los comandos de Emacs se aplican implícitamente al buffer actual; el texto mostrado en las ventanas no seleccionadas es visible principalmente como referencia. Si usa múltiples marcos en una pantalla gráfica, al seleccionar un marco en particular se selecciona una ventana en ese marco.
1.1 El Punto
------------
El cursor en la ventana seleccionada muestra la localización donde la mayoría de los comandos de edición tienen efecto, que se llama *punto* [2]_. Muchos comandos de Emacs mueven el punto a diferentes lugares del buffer; por ejemplo, puede colocar el punto pulsando el botón 1 del ratón (normalmente el botón izquierdo) en el lugar deseado.
Por defecto, el cursor en la ventana seleccionada se dibuja como un bloque sólido y parece estar sobre un carácter, pero debe pensar en el punto como si estuviera entre dos caracteres; está situado *antes* del carácter bajo el cursor. Por ejemplo, si su texto se parece a ``frob`` con el cursor sobre la ``b``, entonces el punto está entre la ``o`` y la ``b``. Si inserta el carácter ``!`` en esa posición, el resultado será ``fro!b``, con el punto entre el ``!`` y la ``b``. Así, el cursor permanece sobre la ``b``, como antes.
Si está editando varios ficheros en Emacs, cada uno en su propio buffer, cada buffer tiene su propio valor de punto. Un búfer que no se muestra en ese momento recuerda su valor de punto si lo vuelve a mostrar más tarde. Además, si un buffer se muestra en varias ventanas, cada una de esas ventanas tiene su propio valor de punto.
Si está editando varios ficheros en Emacs, cada uno en su propio buffer, cada buffer tiene su propio valor de punto. Un búfer que no se muestra en ese momento recuerda su valor de punto si lo vuelve a mostrar más tarde. Además, si un buffer se muestra en múltiples ventanas, cada una de esas ventanas tiene su propio valor de punto.
**Ver Visualización del Cursor**, para opciones que controlan cómo Emacs muestra el cursor.
.. [2] El término "punto" proviene del carácter ``.``, que era el comando en TECO (el lenguaje en el que se escribió el Emacs original) para acceder a la posición de edición.
1.2 El área de eco
------------------
La línea situada en la parte inferior del marco es el *área de eco*. Se usa para mostrar pequeñas cantidades de texto para varios propósitos.
El área de eco se llama así porque una de las cosas para las que se utiliza es para *hacer eco*, lo que significa mostrar los caracteres de un comando de varios caracteres a medida que se escribe. Los comandos de un solo carácter no tienen eco. Los comandos de varios caracteres (**ver Teclas**) se repiten si hace una pausa de más de un segundo en medio de un comando. Emacs entonces hace eco de todos los caracteres del comando hasta el momento, para preguntarte por el resto. Una vez que el eco ha comenzado, el resto del comando se hace eco inmediatamente mientras lo teclea. Este comportamiento está diseñado para dar a los usuarios confiados una respuesta rápida, mientras que a los usuarios indecisos les proporciona la mejor retroalimentación.
El área de eco también se usa para mostrar un *mensaje de error* cuando un comando no puede hacer su trabajo. Los mensajes de error pueden ir acompañados de un pitido o de un parpadeo de la pantalla.
Algunos comandos muestran mensajes informativos en el área de eco para decirle lo que ha hecho el comando, o para proporcionarle alguna información específica. Estos mensajes *informativos*, a diferencia de los mensajes de error, no van acompañados de un pitido o parpadeo. Por ejemplo, :kbd:`Ctrl`-:kbd:`x` :kbd:`=` (``C-x =`` mantenga pulsada la tecla :kbd:`Ctrl` y escriba :kbd:`x`, luego suelte la tecla :kbd:`Ctrl` y escriba :kbd:`=`) muestra un mensaje que describe el carácter en el punto, su posición en la memoria intermedia y su columna actual en la ventana. Los comandos que llevan mucho tiempo suelen mostrar mensajes que terminan en ``...`` mientras trabajan (a veces también indican cuánto se ha avanzado, en porcentaje), y añaden ``done`` (terminado) cuando finaliza.
Los mensajes informativos del área de eco se guardan en un búfer especial denominado ``*Messages*`` (*\*Mensajes\**). (Aún no hemos explicado los búferes; consulte **Uso de Búferes Múltiples**, para obtener más información sobre ellos). Si se pierde un mensaje que ha aparecido brevemente en la pantalla, puede pasar al búfer ``*Messages*`` para volver a verlo. Este búfer está limitado a un cierto número de líneas, especificado por la variable ``message-log-max``. (Tampoco hemos explicado las variables; **véase Variables**, para más información sobre ellas). Más allá de este límite, se borra una línea del principio cada vez que se añade una nueva línea de mensaje al final.
**Vea Personalización de la Pantalla**, para opciones que controlan cómo Emacs usa el área de eco.
El área de eco también se usa para mostrar el minibuffer, una ventana especial en la que se pueden introducir argumentos para los comandos, como el nombre de un archivo que se va a editar. Cuando se utiliza el minibuffer, el texto que aparece en el área de eco comienza con una cadena de comandos, y el cursor activo aparece dentro del minibuffer, que se considera temporalmente la ventana seleccionada. Siempre se puede salir del minibuffer tecleando :kbd:`Ctrl`-:kbd:`g` (``C-g``). **Véase El minibuffer**.
1.3 La línea de modo
--------------------
En la parte inferior de cada ventana hay una *línea de modo*, que describe lo que está pasando en el búfer actual. Cuando sólo hay una ventana, la línea de modo aparece justo encima del área de eco; es la penúltima línea del cuadro. En una pantalla gráfica, la línea de modo se dibuja con una apariencia de caja 3D. Emacs también suele dibujar la línea de modo de la ventana seleccionada con un color diferente al de las ventanas no seleccionadas, para que destaque.
El texto mostrado en la línea de modo tiene el siguiente formato:
::
cs:ch-fr buf pos line (major minor)
En un terminal de texto, este texto va seguido de una serie de guiones que se extienden hasta el borde derecho de la ventana. Estos guiones se omiten en una pantalla gráfica.
La cadena *cs* y los dos puntos que la siguen describen el juego de caracteres y la convención de nueva línea usada para el buffer actual. Normalmente, Emacs maneja automáticamente estos ajustes por Ud., pero a veces es útil tener esta información.
*cs* describe el juego de caracteres del texto del búfer (**véase Sistemas de Codificación**). Si es un guión (``-``), indica que no hay tratamiento especial del juego de caracteres (con la posible excepción de las convenciones de fin de línea, descritas en el párrafo siguiente). ``=`` significa que no hay conversión alguna, y suele utilizarse para ficheros que contienen datos no textuales. Otros caracteres representan diversos sistemas de codificación; por ejemplo, ``1`` representa ISO Latin-1.
En un terminal de texto, *cs* va precedido de dos caracteres adicionales que describen los sistemas de codificación para la entrada del teclado y la salida del terminal. Además, si está usando un método de entrada, *cs* va precedido de una cadena que identifica el método de entrada (**véase Métodos de Entrada**).
El carácter después de *cs* suele ser dos puntos. Si se muestra una cadena diferente, eso indica una convención de final de línea no trivial para codificar un archivo. Normalmente, las líneas de texto se separan mediante caracteres de *nueva línea* en un archivo, pero a veces se usan otras dos convenciones. La convención MS-DOS utiliza un carácter de retorno de carro seguido de un carácter de salto de línea; al editar estos archivos, los dos puntos cambian a una barra invertida (``\``) o ``(DOS)``, dependiendo del sistema operativo. Otra convención, empleada por los antiguos sistemas Macintosh, usa un carácter de retorno de carro en lugar de una nueva línea; al editar dichos ficheros, los dos puntos cambian a una barra inclinada (``/``) o ``(Mac)``. En algunos sistemas, Emacs muestra ``(Unix)`` en lugar de los dos puntos para los ficheros que usan la nueva línea como separador de línea.
En marcos creados para ``emacsclient`` (**ver Invocando emacsclient**), el siguiente carácter es ``@``. Esta indicación es típica para marcos de un proceso Emacs ejecutándose como demonio (**ver Usando Emacs como Servidor**).
El siguiente elemento en la línea de modo es la cadena indicada por *ch*. Esta muestra dos guiones (``--``) si el buffer mostrado en la ventana tiene el mismo contenido que el fichero correspondiente en el disco; es decir, si el buffer no está modificado. Si el búfer está modificado, muestra dos asteriscos (``**``). Para un búfer de sólo lectura, muestra ``%*`` si el búfer está modificado, y ``%%`` en caso contrario.
Normalmente, el carácter que sigue a *ch* es un guión (``-``). Sin embargo, si el directorio por defecto (**véase Nombres de Archivos**) para el búfer actual está en una máquina remota, en su lugar aparece ``@``.
*fr* da el nombre del marco seleccionado (**ver Marcos y Pantallas Gráficas**). Sólo aparece en terminales de texto. El nombre del marco inicial es ``F1``.
*buf* es el nombre del buffer que se muestra en la ventana. Normalmente, es el mismo que el nombre del fichero que está editando. **Véase Uso de Múltiples Búferes**.
*pos* le indica si hay texto adicional por encima de la parte superior de la ventana, o por debajo de la parte inferior. Si su búfer es pequeño y todo él es visible en la ventana, *pos* es ``All`` (Todo). De lo contrario, es ``Top`` (Arriba) si está mirando al principio del buffer, ``Bot`` si está mirando al final del buffer, o ``nn%``, donde *nn* es el porcentaje del buffer por encima de la parte superior de la ventana. Con el modo Indication Size Mode (modo Indicación de Tamaño), también puede mostrar el tamaño del búfer. **Véase Características Opcionales de la Línea de Modo**.
*line* (línea) es el carácter ``L`` seguido del número de línea en el punto. (También puede visualizar el número de columna actual, activando el modo Column Number (Número de Columna). **Véase Modo Opcional Características de Línea**).
*major* es el nombre del *modo principal* utilizado en el búfer. Un modo principal es un modo de edición principal para el búfer, como el modo Texto, el modo Lisp, el modo C, etc. **Véase Modos Principales**. Algunos modos principales muestran información adicional después del nombre del modo principal. Por ejemplo, los buffers de Compilación y Shell muestran el estado del subproceso.
*minor* es una lista de algunos de los modos menores habilitados, que son modos de edición opcionales que proporcionan características adicionales además del modo mayor. **Ver Modos Menores**.
Algunas funciones aparecen junto con los modos secundarios cuando están activados, aunque no sean realmente modos secundarios. ``Narrow`` (Estrechamiento) significa que el búfer que se está visualizando tiene la edición restringida sólo a una parte de su texto (**vea Estrechamiento**). ``Def`` significa que se está definiendo una macro de teclado (**ver Macros de Teclado**).
Además, si Emacs está dentro de un nivel de edición recursivo, aparecen corchetes (``[...]``) alrededor de los paréntesis que rodean los modos. Si Emacs está en un nivel de edición recursiva dentro de otro, aparecen corchetes dobles, y así sucesivamente. Como los niveles de edición recursiva afectan a Emacs globalmente, tales corchetes aparecen en la línea de modo de cada ventana. **Ver Niveles de Edición Recursiva**.
Puede cambiar la apariencia de la línea de modo así como el formato de su contenido. **Vea Características Opcionales de la Línea de Modo**. Además, la línea de modo es sensible al ratón; al hacer clic en diferentes partes de la línea de modo se ejecutan varios comandos. **Consulte Comandos del Ratón en la Línea de Modo**. Además, al pasar el puntero del ratón por encima de las partes de la línea de modo sensibles al ratón, se muestra información sobre herramientas (**consulte Información sobre Herramientas**) con información sobre los comandos que puede invocar haciendo clic en la línea de modo.
1.4 La Barra de Menús
---------------------
Cada marco de Emacs tiene normalmente una *barra de menú* en la parte superior que puede usar para realizar operaciones comunes. No hay necesidad de listarlas aquí, ya que puede verlas Usted mismo más fácilmente.
En una pantalla que soporte ratón, puede usar el ratón para elegir un comando de la barra de menú. Una flecha en el borde derecho de un elemento de menú significa que conduce a un menú secundario, o *submenú*. Un ``...`` al final de un elemento de menú significa que el comando le pedirá más información antes de realizar ninguna acción.
Algunos de los comandos de la barra de menús también están vinculados a teclas normales; si es así, se muestra un vínculo a la tecla después del propio elemento. Para ver el nombre completo del comando y la documentación de un elemento de menú, escriba :kbd:`Ctrl`-:kbd:`h` :kbd:`k` (``C-h k``) y, a continuación, seleccione la barra de menús con el ratón de la forma habitual (**consulte Documentación de una tecla**).
En lugar de usar el ratón, también puede invocar el primer elemento de la barra de menús pulsando :kbd:`F10` (para ejecutar el comando ``menú-bar-open``). A continuación, puede navegar por los menús con las teclas de flecha o con :kbd:`Ctrl`-:kbd:`b` (``C-b``, izquierda), :kbd:`Ctrl`-:kbd:`f` (``C-f``, derecha), :kbd:`Ctrl`-:kbd:`p` (``C-p``, arriba) y :kbd:`Ctrl`-:kbd:`n` (``C-n``, abajo). Para activar un elemento de menú seleccionado, pulse :kbd:`RET`; para cancelar la navegación por el menú, pulse :kbd:`Ctrl`-:kbd:`g` (``C-g``) o :kbd:`Esc` :kbd:`ESC` :kbd:`ESC` (``ESC`` ``ESC`` ``ESC``). (Sin embargo, tenga en cuenta que cuando Emacs ha sido construido con un kit de herramientas GUI, los menús son dibujados y controlados por el kit de herramientas, y las secuencias de teclas para cancelar la navegación por el menú pueden ser diferentes de la descripción anterior).
En un terminal de texto, puede acceder opcionalmente a los menús de la barra de menús en el área de eco. Para ello, personalice la variable ``tty-menu-open-use-tmm`` a un valor no nulo. Entonces tecleando :kbd:`F10` se ejecutará el comando ``tmm-menubar`` en lugar de desplegarse el menú. (También puede escribir :kbd:`M`-:kbd:`\`` (``M-```), que siempre invoca ``tmm-menubar``). ``tmm-menubar`` le permite seleccionar un elemento del menú con el teclado. Aparece una opción provisional en el área de eco. Puede utilizar las teclas de flecha arriba y abajo para desplazarse por el menú hasta los distintos elementos y, a continuación, puede escribir :kbd:`RET` para seleccionar el elemento. Cada elemento del menú también se designa con una letra o un dígito (normalmente la inicial de alguna palabra del nombre del elemento). Esta letra o dígito se separa del nombre del elemento mediante ``==>``. Puede escribir la letra o el dígito del elemento para seleccionarlo.
``mouse-7``.
También puede combinar modificadores de teclado con eventos de ratón, por lo que puede enlazar un comando especial que se active cuando, por ejemplo, mantenga pulsada la tecla :kbd:`Alt` (``Meta``) y luego utilice el botón central del ratón. En ese caso, el nombre del evento será ``M-mouse-2``.
En algunos sistemas, también puede enlazar comandos para manejar eventos de pantalla táctil. En ese caso, los eventos se denominan ``touchscreen-update`` y ``touchscreen-end``.

View File

@ -1,22 +0,0 @@
2 Tipos de Entrada del Usuario
==============================
GNU Emacs está diseñado principalmente para usarse con el teclado. Aunque es posible usar el ratón para emitir comandos de edición a través de la barra de menús y la barra de herramientas, normalmente no es tan eficiente como usar el teclado.
La entrada del teclado en Emacs se basa en una versión muy extendida de ASCII. Los caracteres simples, como ``a``, ``B``, ``3``, ``=``, y el carácter de espacio (denotado como ``SPC``), se introducen tecleando la tecla correspondiente. Los caracteres de control, como ``RET``, ``TAB``, ``DEL``, ``ESC``, ``F1``, ``Inicio`` e ``IZQUIERDA``, también se introducen de esta forma, al igual que algunos caracteres que se encuentran en teclados no ingleses (**véase Soporte de Juegos de Caracteres Internacionales**).
Emacs también reconoce los caracteres de control que se introducen usando teclas modificadoras. Dos teclas modificadoras de uso común son ``Control`` (:kbd:`Ctrl` normalmente denominada ``Ctrl``) y ``Meta`` (:kbd:`Alt` normalmente denominada ``Alt``) [3]_. Por ejemplo, ``Control-a`` se introduce manteniendo pulsada la tecla :kbd:`Ctrl` (``Ctrl``) mientras se pulsa :kbd:`a` (``a``); nos referiremos a esto como :kbd:`Ctrl`-:kbd:`a` (``C-a``) para abreviar. Del mismo modo, ``Meta-a``, o ``M-a`` para abreviar, se introduce manteniendo pulsada la tecla :kbd:`Alt` (``Alt``) y pulsando :kbd:`a` (``a``). Las teclas modificadoras también pueden aplicarse a caracteres no alfanuméricos, por ejemplo, :kbd:`Ctrl`-:kbd:`F1` (``C-F1``) o :kbd:`Alt`-:kbd:`←` (``M-LEFT``).
También puede escribir caracteres Meta usando secuencias de dos caracteres empezando por ``ESC``. Así, puede introducir ``M-a`` escribiendo :kbd:`ESC`-:kbd:`a`. Puede introducir :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`a` (``C-M-a``) (manteniendo pulsadas las teclas :kbd:`Ctrl` (``Ctrl``) y :kbd:`Alt` (``Alt``), y pulsando :kbd:`a` (``a``)) escribiendo :kbd:`ESC` :kbd:`Ctrl`-:kbd:`a` (``ESC C-a``). A diferencia de ``Meta``, ``ESC`` se introduce como un carácter independiente. No debe mantener pulsado :kbd:`ESC` (``ESC``) mientras escribe el siguiente carácter; en su lugar, pulse :kbd:`ESC` (``ESC``) y suéltelo, después introduzca el siguiente carácter. Esta función es útil en algunos terminales de texto en los que la tecla :kbd:`Alt` (``Meta``) no funciona de forma fiable.
Emacs soporta 3 teclas modificadoras adicionales, **ver Teclas Modificadoras**.
Emacs tiene un amplio soporte para el uso de botones y rueda de ratón, y otros dispositivos señaladores como touchpads y pantallas táctiles. **Ver Entrada del Ratón**, para más detalles.
En ciertos entornos, el gestor de ventanas puede bloquear algunas entradas de teclado, incluyendo :kbd:`Alt`-:kbd:`TAB` (``M-TAB``), :kbd:`Alt`-:kbd:`SPACE` (``M-SPC``), :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`d` (``C-M-d``) y :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`l` (``C-M-l``). Si tiene este problema, puede personalizar su gestor de ventanas para que no bloquee esas teclas, o volver a enlazar los comandos Emacs afectados (vea **Personalización**).
Los caracteres simples y los caracteres de control, así como ciertas entradas que no son de teclado, como los clics del ratón, se denominan colectivamente eventos de entrada. Para más detalles sobre cómo Emacs maneja internamente los eventos de entrada, **vea Eventos de Entrada** en el Manual de Referencia de Emacs Lisp.
Los caracteres simples y los caracteres de control, así como ciertas entradas ajenas al teclado como los clics del ratón, se denominan colectivamente *eventos de entrada*. Para más detalles sobre cómo Emacs maneja internamente los eventos de entrada, **vea Eventos de Entrada** en el Manual de Referencia de Emacs Lisp.
.. [3] Nos refermios a ``Alt`` como ``Meta`` por razones históricas.

View File

@ -1,14 +0,0 @@
3 Teclas
========
Algunos comandos de Emacs se invocan con un solo evento de entrada; por ejemplo, :kbd:`Ctrl`-:kbd:`f` (``C-f``) avanza un carácter en el buffer. Otros comandos necesitan dos o más eventos de entrada para ser invocados, como :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`4` :kbd:`Ctrl`-:kbd:`f` (``C-x 4 C-f``).
Una *secuencia de teclas*, o *tecla* para abreviar, es una secuencia de uno o más eventos de entrada que tiene sentido como unidad. Si una secuencia de teclas invoca un comando, la llamamos *tecla completa*; por ejemplo, :kbd:`Ctrl`-:kbd:`f` (``C-f``), :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`4` :kbd:`Ctrl`-:kbd:`f` (``C-x 4 C-f``) son teclas completas. Si una secuencia de teclas no es lo suficientemente larga como para invocar un comando, la llamamos *tecla prefijo*; en el ejemplo anterior, vemos que :kbd:`Ctrl`-:kbd:`x` (``C-x``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`4` (``C-x 4``) son teclas prefijo. Toda secuencia de teclas puede ser una tecla completa o una tecla prefijo.
Una tecla prefijo se combina con el siguiente evento de entrada para formar una secuencia de teclas más larga. Por ejemplo, :kbd:`Ctrl`-:kbd:`x` (``C-x``) es una tecla prefijo, por lo que teclear :kbd:`Ctrl`-:kbd:`x` (``C-x``) por sí solo no invoca un comando; en su lugar, Emacs espera más entradas (si hace una pausa de más de un segundo, hace eco de la tecla :kbd:`Ctrl`-:kbd:`x` (``C-x``) para pedir esa entrada; **ver El Área de Eco**). :kbd:`Ctrl`-:kbd:`x` (``C-x``) se combina con el siguiente evento de entrada para hacer una secuencia de teclas de dos eventos, que puede ser una tecla prefija (como :kbd:`Ctrl`-:kbd:`x` :kbd:`4` (``C-x 4``)), o una tecla completa (como :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``)). No hay límite para la longitud de las secuencias de teclas, pero en la práctica rara vez superan los tres o cuatro eventos de entrada.
No se pueden añadir eventos de entrada a una tecla completa. Por ejemplo, como :kbd:`Ctrl`-:kbd:`f` (``C-f``) es una tecla completa, la secuencia de dos eventos :kbd:`Ctrl`-:kbd:`f` :kbd:`Ctrl`-:kbd:`k` (``C-f C-k``) son dos secuencias de teclas, no una.
Por defecto, las teclas de prefijo en Emacs son :kbd:`Ctrl`-:kbd:`x` (``C-c``), :kbd:`Ctrl`-:kbd:`h` (``C-h``), :kbd:`Ctrl`-:kbd:`x` (``C-x``), :kbd:`Ctrl`-:kbd:`x` :kbd:`RETURN` (``C-x RET``), :kbd:`Ctrl`-:kbd:`x` :kbd:`@` (``C-x @``), :kbd:`Ctrl`-:kbd:`x` :kbd:`a` (``C-x a``), :kbd:`Ctrl`-:kbd:`x` :kbd:`n` (``C-x n``), :kbd:`Ctrl`-:kbd:`x` :kbd:`r` (``C-x r``), :kbd:`Ctrl`-:kbd:`x` :kbd:`t` (``C-x t``), :kbd:`Ctrl`-:kbd:`x` :kbd:`v` (``C-x v``), :kbd:`Ctrl`-:kbd:`x` :kbd:`4` (``C-x 4``), :kbd:`Ctrl`-:kbd:`x` :kbd:`5` (``C-x 5``), :kbd:`Ctrl`-:kbd:`x` :kbd:`6` (``C-x 6``), :kbd:`ESC` (``ESC``), y :kbd:`Alt`-:kbd:`g` (``M-g``). (:kbd:`F1` (``F1``) y :kbd:`F2` (``F2``) son alias para :kbd:`Ctrl`-:kbd:`h` (``C-h``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`6` (``C-x 6``).) Esta lista no está grabada en piedra; si personaliza Emacs, puede hacer nuevas teclas de prefijo. Por ejemplo, si elimina la definición de prefijo de :kbd:`Ctrl`-:kbd:`x` :kbd:`4` (``C-x 4``), entonces :kbd:`Ctrl`-:kbd:`x` :kbd:`4` :kbd:`Ctrl`-:kbd:`f` (``C-x 4 C-f``) se convierte en una secuencia de teclas inválida. **Consulte Personalización de las Combinaciones de Teclas**.
Al escribir el carácter de ayuda (:kbd:`Ctrl`-:kbd:`h` (``C-h``) o :kbd:`F1` (``F1``)) después de una tecla de prefijo, se muestra una lista de los comandos que comienzan con ese prefijo. La única excepción a esta regla es :kbd:`ESC`:kbd:`:` :kbd:`ESC` :kbd:`Ctrl`-:kbd:`h` (``ESC: ESC C-h``) equivale a :kbd:`Ctrl`-:kbd:`Àlt`-:kbd:`h` (``C-M-h``), que hace algo completamente distinto. Sin embargo, puede usar :kbd:`F1` (``F1``) para mostrar una lista de comandos que empiecen por :kbd:`ESC` (``ESC``).

View File

@ -1,10 +0,0 @@
4 Entrada del Ratón
===================
Por defecto, Emacs soporta todas las acciones normales del ratón, como fijar el cursor pulsando el botón izquierdo, y seleccionar un área arrastrando el puntero del ratón. Todas las acciones del ratón pueden usarse para enlazar comandos de la misma forma que se enlazan a eventos del teclado (ver Teclas). Esta sección proporciona una visión general del uso del ratón en Emacs; ver Comandos del Ratón para Editar, y las secciones que le siguen, para más detalles sobre los comandos del ratón en Emacs.
Cuando pulsa el botón izquierdo del ratón, Emacs recibe un evento ``mouse-1``. Para ver qué comando está ligado a ese evento, pulse el botón izquierdo del ratón. Para ver qué comando está ligado a ese evento, puede teclear :kbd:`Ctrl`-:kbd:`h` :kbd:`c` (``C-h c``) y luego pulsar el botón izquierdo del ratón. De forma similar, el botón central del ratón es ``mouse-2`` y el botón derecho es ``mouse-3``. Si tiene un ratón con rueda, los eventos de la rueda suelen estar vinculados a rueda abajo o rueda arriba, o ``mouse-4`` y ``mouse-5``, pero eso depende de la configuración del sistema operativo.
En general, los sistemas X heredados y los terminales (véase Uso de un Ratón en Terminales de Texto) reportarán ``mouse-4`` y ``mouse-5``, mientras que todos los demás sistemas reportarán ``wheel-down`` (rueda hacia abajo) y ``wheel-up`` (rueda hacia arriba).
Algunos ratones también tienen una rueda de desplazamiento horizontal, y los touchpads normalmente soportan el desplazamiento horizontal también. Estos eventos se reportan como ``wheel-left`` (rueda-izquierda) y ``whell-right`` (rueda-derecha) en todos los sistemas excepto en terminales y sistemas X heredados, donde son ``mouse-6`` y

View File

@ -1,14 +0,0 @@
5 Teclas y Comandos
===================
Este manual está lleno de pasajes que le dicen lo que hacen determinadas teclas. Pero Emacs no asigna significados a las teclas directamente. En su lugar, asigna significados a *comandos* con nombre, y luego da a las teclas sus significados uniéndolas a comandos.
Cada comando tiene un nombre elegido por el programador. El nombre suele estar formado por unas pocas palabras en inglés separadas por guiones; por ejemplo, ``next-line`` o ``forward-word``. Internamente, cada comando es un tipo especial de *función* Lisp, y las acciones asociadas al comando se realizan ejecutando la función. **Vea Qué es una Función** en el Manual de Referencia de Emacs Lisp.
Los enlaces entre teclas y comandos se registran en tablas llamadas *mapas de teclas*. **Ver Mapas de Teclas**.
Cuando decimos que "``C-n`` se mueve verticalmente una línea hacia abajo" estamos pasando por alto una sutil distinción que es irrelevante en el uso ordinario, pero vital para la personalización de Emacs. El comando ``next-line`` hace un movimiento vertical hacia abajo. ``C-n`` tiene este efecto porque está ligado a ``next-line``. Si redefine la vinculación ``C-n`` al comando ``forward-word``, ``C-n`` se moverá una palabra hacia delante.
En este manual, hablaremos a menudo de teclas como :kbd:`Ctrl`-:kbd:`n` (``C-n``) como comandos, aunque estrictamente hablando la tecla esté asociada a un comando. Normalmente, indicamos el nombre del comando que realmente hace el trabajo entre paréntesis después de mencionar la tecla que lo ejecuta. Por ejemplo, diremos que "El comando ``C-n`` (``next-line``, línea siguiente) mueve el punto verticalmente hacia abajo", lo que significa que el comando ``next-line`` se mueve verticalmente hacia abajo, y la tecla :kbd:`Ctrl`-:kbd:`n` (``C-n``) normalmente está vinculada a él.
Ya que estamos hablando de personalización, deberíamos hablarle de *variables*. A menudo la descripción de un comando dirá: "Para cambiar esto, establezca la variable ``mumble-foo``. Una variable es un nombre usado para almacenar un valor. La mayoría de las variables documentadas en este manual están pensadas para la personalización: algún comando u otra parte de Emacs examina la variable y se comporta de forma diferente según el valor que establezca. Puede ignorar la información sobre variables hasta que esté interesado en personalizarlas. Entonces lea la información básica sobre variables (**vea Variables**) y la información sobre variables específicas tendrá sentido.

View File

@ -1,20 +0,0 @@
6 Entrar en Emacs
=================
La forma habitual de invocar Emacs es con el comando de shell ``emacs``. Desde una ventana de terminal ejecutando un shell Unix en un terminal GUI, puede ejecutar Emacs en segundo plano con ``emacs &``; de esta forma, Emacs no ocupará la ventana de terminal, por lo que puede utilizarla para ejecutar otros comandos del shell. (Para métodos comparables de iniciar Emacs en MS-Windows, **ver Cómo Iniciar Emacs en MS-Windows**).
Cuando Emacs arranca, el marco inicial muestra un buffer especial llamado ``*GNU Emacs*``. Esta *pantalla de inicio* contiene información sobre Emacs y *enlaces* a tareas comunes que son útiles para los usuarios principiantes. Por ejemplo, activando el enlace ``Emacs Tutorial`` se abre el tutorial de Emacs; esto hace lo mismo que el comando :kbd:`Ctrl`-:kbd:`h` :kbd:`t` (``C-h t``, ``help-with-tutorial``, ayuda con tutorial). Para activar un enlace, mueva el punto sobre él y escriba pulse :kbd:`RETURN` (``RET``), o haga clic sobre él con ``ratón-1`` (el botón izquierdo del ratón).
Usando un argumento en la línea de comandos, puede decirle a Emacs que visite uno o más ficheros tan pronto como se inicie. Por ejemplo, ``emacs foo.txt`` inicia Emacs con un buffer mostrando el contenido del fichero ``foo.txt``. Esta característica existe principalmente por compatibilidad con otros editores, que están diseñados para ser lanzados desde el shell para sesiones cortas de edición. Si llama a Emacs de esta manera, el marco inicial se divide en dos ventanas, una mostrando el archivo especificado, y la otra mostrando la pantalla de inicio. **Véase Ventanas Múltiples**.
Generalmente, es innecesario y un desperdicio iniciar Emacs de nuevo cada vez que quiera editar un fichero. La forma recomendada de usar Emacs es iniciarlo una sola vez, justo después de iniciar sesión, y hacer toda la edición en la misma sesión de Emacs. **Ver Manejo de Archivos**, para información sobre visitar más de un archivo. Si usa Emacs de esta manera, la sesión Emacs acumula un contexto valioso, como el anillo de destrucción, registros, historial de deshacer, y datos del anillo de marcas, que juntos hacen la edición más conveniente. Estas características se describen más adelante en el manual.
Para editar un fichero desde otro programa mientras Emacs se está ejecutando, puede usar el programa de ayuda ``emacsclient`` para abrir un fichero en la sesión Emacs existente. **Ver Usando Emacs como Servidor**.
Emacs acepta otros argumentos de línea de comandos que le dicen que cargue ciertos archivos Lisp, dónde poner el marco inicial, etc. **Ver Argumentos de Línea de Comandos para la Invocación de Emacs**.
Si la variable ``inhibit-startup-screen`` no es nula, Emacs no muestra la pantalla de inicio. En ese caso, si uno o más ficheros fueron especificados en la línea de comandos, Emacs simplemente muestra esos ficheros; de lo contrario, muestra un buffer llamado ``*scratch*``, que puede ser usado para evaluar expresiones Emacs Lisp interactivamente. **Ver Búferes de Interacción Lisp**. Puede establecer la variable ``inhibit-startup-screen`` usando la herramienta de personalización (**vea Interfaz de Personalización Fácil**), o editando su fichero de inicialización (**vea El fichero de Inicialización de Emacs**). [4]_
También puede forzar a Emacs a mostrar un fichero o directorio al arrancar estableciendo la variable ``initial-buffer-choice`` a una cadena que nombre ese fichero o directorio. El valor de ``initial-buffer-choice`` también puede ser una función (sin argumentos) que debe devolver un buffer que luego se muestra. Si ``initial-buffer-choice`` es distinto de nil, entonces si especifica algún fichero en la línea de órdenes, Emacs lo visitará, pero no lo mostrará inicialmente.
.. [4] Establecer ``inhibit-startup-screen`` en ``site-start.el`` no funciona, porque la pantalla de inicio se configura antes de leer ``site-start.el``. **Vea El fichero de Inicialización de Emacs**, para información sobre ``site-start.el``.

View File

@ -1,28 +0,0 @@
7 Cómo Salir de Emacs
=====================
:kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``)
Mata a Emacs (``save-buffers-kill-terminal``)
:kbd:`Ctrl`-:kbd:`z` (``C-z``)
En un terminal de texto, suspende Emacs; en una pantalla gráfica, iconifica (o "minimiza") el marco seleccionado (``suspend-frame``).
*Matar* Emacs significa terminar el programa Emacs. Para hacerlo, teclee :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``, ``save-buffers-kill-terminal``). Se usa una secuencia de teclas de dos caracteres para que sea más difícil teclear por accidente. Si cuando teclea :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``) hay algún búfer modificado que esté visitando el fichero, Emacs le ofrece primero guardar estos búferes. Si no los guarda todos, pide confirmación de nuevo, ya que los cambios no guardados se perderán. Emacs también pide confirmación si hay subprocesos en ejecución, ya que al matar Emacs también se matarán los subprocesos (**ver Ejecutando Comandos Shell desde Emacs**).
:kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``) se comporta especialmente si está usando Emacs como servidor. Si lo teclea desde un marco cliente, cierra la conexión cliente. **Ver Usando Emacs como Servidor**.
Emacs puede, opcionalmente, registrar cierta información de la sesión cuando la cierra, como los ficheros que estaba visitando en ese momento. Esta información estará disponible la próxima vez que inicie Emacs. **Ver Guardando Sesiones de Emacs**.
Si el valor de la variable ``confirm-kill-emacs`` es no-1``nil`` (no nulo), :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``) asume que su valor es una función predicada, y llama a esa función. Si el resultado de la llamada a la función no es nulo, la sesión se cierra, de lo contrario Emacs continúa ejecutándose. Una función conveniente para usar como valor de ``confirm-kill-emacs`` es la función ``yes-or-no-p``. El valor por defecto de ``confirm-kill-emacs`` es ``nil``.
Si el valor de la variable ``confirm-kill-processes`` es ``nil``, :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``) no pide confirmación antes de matar los subprocesos iniciados por Emacs. El valor por defecto es ``t``.
Para personalizar aún más lo que ocurre cuando Emacs está saliendo, **vea Matando Emacs** en The GNU Emacs Lisp Reference Manual.
Para matar Emacs sin que se le pida que guarde, escriba :kbd:`Alt`-:kbd:`x` ``kill-emacs`` (``M-x kill-emacs``).
:kbd:`Ctrl`-:kbd:`z` (``C-z``) ejecuta el comando ``suspend-frame`` (suspender-marco). En una pantalla gráfica, este comando minimiza (o iconifica) el marco de Emacs seleccionado, ocultándolo de forma que pueda recuperarlo más tarde (la forma exacta en que se produce este ocultamiento depende del sistema de ventanas). En un terminal de texto, el comando :kbd:`Ctrl`-:kbd:`z` (``C-z``) suspende Emacs, deteniendo el programa temporalmente y devolviendo el control al proceso padre (normalmente un shell); en la mayoría de los shells, puede reanudar Emacs después de suspenderlo con el comando de shell ``%emacs``.
Los terminales de texto suelen prestar atención a ciertos caracteres especiales cuyo significado es matar o suspender el programa que se está ejecutando. Esta característica del terminal está desactivada mientras está en el Editor. Los significados de :kbd:`Ctrl`-:kbd:`z` (``C-z``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`c` (``C-x C-c``) como teclas de Emacs se inspiraron en el uso de :kbd:`Ctrl`-:kbd:`z` y :kbd:`Ctrl`-:kbd:`c` (``C-z`` y ``C-c``) en varios sistemas operativos como caracteres para detener o matar un programa, pero esa es su única relación con el sistema operativo. Puede personalizar estas teclas para ejecutar cualquier comando de su elección (**vea Mapas de Teclas**).

View File

@ -1,419 +0,0 @@
8 Comandos Básicos de Edición
=============================
Aquí explicamos lo básico sobre cómo escribir texto, hacer correcciones y guardar el texto en un archivo. Si este material es nuevo para Usted, le sugerimos que primero ejecute el tutorial Emacs *learning-by-doing* (aprender-haciendo), tecleando :kbd:`Ctrl`-:kbd:`h` :kbd:`t` (``C-h t``, ``help-with-tutorial``, ayuda-con-tutorial).
8.1 Inserción de Texto
----------------------
Puede insertar un carácter gráfico normal (por ejemplo, ``a``, ``B``, ``3`` y ``=``) tecleando la tecla asociada. Esto añade al búfer el carácter en el punto. La inserción desplaza el punto hacia delante, de modo que el punto queda justo después del texto insertado. **Véase Punto**.
Para terminar una línea e iniciar una nueva, escriba :kbd:`RETURN` (``RET``, nueva línea). (La tecla :kbd:`RETURN` puede estar etiquetada como *Return*, o *Enter*, o con una flecha de aspecto gracioso apuntando hacia la izquierda en su teclado, pero en este manual nos referimos a ella como :kbd:`RETURN` (``RET``)). Este comando inserta un carácter de nueva línea en el búfer, y luego aplica una sangría (**véase Sangría**) de acuerdo con el modo principal. Si el punto está al final de la línea, el efecto es crear una nueva línea en blanco después de él y sangrar la nueva línea; si el punto está en medio de una línea, la línea se divide en esa posición. Para desactivar la sangría automática, puede desactivar el modo de sangría eléctrica (**véase Funciones Convenientes para la Sangría**) o teclear :kbd:`Ctrl`-:kbd:`j` (``C-j``), que inserta sólo una nueva línea, sin ninguna sangría automática.
Como explicaremos más adelante en este manual, puede cambiar la forma en que Emacs maneja la inserción de texto activando modos menores. Por ejemplo, el modo secundario llamado Auto Fill Mode (Modo de Relleno Automático) divide las líneas automáticamente cuando son demasiado largas (**ver Rellenado de Texto**). El modo secundario, o modo menor llamado Overwrite Mode (Modo Sobrescribir) hace que los caracteres insertados reemplacen (sobrescriban) el texto existente, en lugar de desplazarlo a la derecha. **Véase Modos Menores**.
Sólo se pueden insertar caracteres gráficos tecleando la tecla asociada; otras teclas actúan como comandos de edición y no se insertan. Por ejemplo, :kbd:`DEL` (``DEL``) ejecuta el comando ``delete-backward-char`` (borrar-carácter-atrás) por defecto (algunos modos lo vinculan a un comando diferente); no inserta un carácter literal ``DEL`` (código de carácter ASCII 127).
Para insertar un carácter no gráfico, o un carácter que su teclado no admita, primero cítelo escribiendo :kbd:`Ctrl`-:kbd:`q` (``C-q``, ``quoted-insert``). Hay dos formas de utilizar :kbd:`Ctrl`-:kbd:`q`:
* :kbd:`Ctrl`-:kbd:`q` (``C-q``) seguido de cualquier carácter no gráfico (incluso :kbd:`Ctrl`-:kbd:`g` (``C-g``)) inserta ese carácter. Por ejemplo, :kbd:`Ctrl`-:kbd:`q` :kbd:`DEL`
(``C-q DEL``) inserta un carácter literal 'DEL'.
* :kbd:`Ctrl`-:kbd:`q` (``C-q``) seguido de una secuencia de dígitos octales inserta el carácter con el código de carácter octal especificado. Puede utilizar cualquier número de dígitos
octales; cualquier carácter que no sea un dígito termina la secuencia. Si el carácter de terminación es ``RET``, ese ``RET`` sólo sirve para terminar la secuencia. Cualquier otro
carácter que no sea un dígito termina la secuencia y actúa como una entrada normal, por ejemplo, :kbd:`Ctrl`-:kbd:`q` :kbd:`1` :kbd:`0` :kbd:`1` :kbd:`B` (``C-q 1 0 1 B``) inserta
``AB``.
El uso de secuencias octales está desactivado en el modo de sobrescritura ordinario no binario, para ofrecerle una forma cómoda de insertar un dígito en lugar de sobrescribirlo.
Para utilizar decimal o hexadecimal en lugar de octal, establezca la variable ``read-quoted-char-radix`` en 10 o 16. Si el radix es 16, las letras ``a`` a ``f`` sirven como parte de un código de carácter, igual que los dígitos. Se ignoran las mayúsculas y minúsculas.
Se pueden insertar algunos caracteres Unicode comunes mediante un comando que empiece por :kbd:`Ctrl`-:kbd:`x` :kbd:`8` (``C-x 8``). Por ejemplo, :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`[` (``C-x 8 [``) inserta ````, que es el punto de código Unicode U+2018 COMILLA SIMPLE IZQUIERDA, a veces llamada "comilla curva" o "comilla rizada". Del mismo modo, :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`]` (``C-x 8 ]``), :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`{` (``C-x 8 {``) y :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`}` (``C-x 8 }``) insertan las comillas curvas ````, ``“`` y ````, respectivamente. La tecla :kbd:`Alt` también puede actuar como :kbd:`Ctrl`-:kbd:`x` :kbd:`8` (``C-x 8``) (a menos que vaya seguida de :kbd:`RETURN` (``RET``)); por ejemplo, :kbd:`Alt`-:kbd:`[` (``M-[``) actúa como :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`[` (``C-x 8 [``) e inserta ````. Para ver qué caracteres tienen abreviaturas :kbd:`Ctrl`-:kbd:`x` :kbd:`8` (``C-x 8``), escriba :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`Ctrl`-:kbd:`h` (``C-x 8 C-h``).
También puede utilizar el comando :kbd:`Ctrl`-:kbd:`x` :kbd:`8` :kbd:`RETURN` (``C-x 8 RET``, ``insert-chart``, insertar carácter). Este comando solicita el nombre Unicode o el punto de código de un carácter, utilizando el minibuffer. Si introduce un nombre, el comando lo completa (**véase Completar**). Si introduce un punto de código, debe ser como un número hexadecimal (la convención para Unicode), o un número con un radix especificado, por ejemplo, ``#o23072`` (octal); **Ver Conceptos Básicos de Enteros** en el Manual de Referencia de Emacs Lisp. A continuación, el comando inserta el carácter correspondiente en el búfer.
Por ejemplo, todos los siguientes insertan el mismo carácter:
::
C-x 8 RET left single quotation mark RET
C-x 8 RET left sin TAB RET
C-x 8 RET 2018 RET
C-x 8 [
A-[ (if the Alt key works)
` (in Electric Quote mode)
Un argumento numérico para :kbd:`Ctrl`-:kbd:`q` (``C-q``) o :kbd:`Ctrl`-:kbd:`x` :kbd:`8` ``...`` (``C-x 8 ...``) especifica cuántas copias del carácter se insertarán (véase **Argumentos Numéricos**).
Como alternativa a ``C-x 8``, puede seleccionar el método de entrada transitorio correspondiente tecleando :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`x` :kbd:`\\` ``iso-transl`` :kbd:`RETURN` (``C-u C-x \ iso-transl RET``) , luego activar temporalmente este método de entrada transitorio tecleando :kbd:`Ctrl`-:kbd:`x` :kbd:`\\` :kbd:`[` (``C-x \ [``) insertará el mismo carácter ```` (**ver Método de Entrada Transitorio**).
Además, en algunos contextos, si escribe una cita utilizando acento grave y apóstrofo ``\`como esta'``, se convierte en una forma ``\``como esta''`` usando comillas simples, incluso sin comandos :kbd:`Ctrl`-:kbd:`x` :kbd:`8` (``C-x 8``). Del mismo modo, si escribe una cita ``como ésta''`` usando doble acento grave y apóstrofo, se convierte en una forma ``“como ésta”`` usando comillas dobles. **Véase Comillas**.
8.2 Cambiar la Ubicación del Punto
----------------------------------
Para hacer algo más que insertar caracteres, debe saber cómo mover el punto (**véase Punto**). Los comandos de teclado :kbd:`Ctrl`-:kbd:`f` (``C-f``), :kbd:`Ctrl`-:kbd:`b` (``C-b``), :kbd:`Ctrl`-:kbd:`n` (``C-n``) y :kbd:`Ctrl`-:kbd:`p` (``C-p``) mueven el punto a la derecha, izquierda, abajo y arriba, respectivamente. También puede mover el punto usando las teclas de flecha presentes en la mayoría de los teclados: DERECHA, IZQUIERDA, ABAJO y ARRIBA; sin embargo, muchos usuarios de Emacs encuentran que es más lento usar las teclas de flecha que las teclas de control, porque necesita mover su mano al área del teclado donde se encuentran esas teclas.
También puede pulsar el botón izquierdo del ratón para mover el punto a la posición pulsada. Emacs también proporciona una variedad de comandos de teclado adicionales que mueven el punto de formas más sofisticadas.
:kbd:`Ctrl`-:kbd:`f` (``C-f``)
Avanza el punto un caraceter (``forward-chart``).
:kbd:`→` (``right``)
Este comando (``right-char``) se comporta como ``C-f``, excepto cuando el punto está en un párrafo de derecha a izquierda (**véase Edición bidireccional**).
:kbd:`Ctrl`-:kbd:`b` (``Ctrl-b``)
Mueve el punto un caracter hacia atras (``backward-chart``).
:kbd:`←` (``left``)
Este comando (``left-char``) se comporta como ``C-b``, excepto si el párrafo actual es de derecha a izquierda (**véase Edición Bidireccional**).
| :kbd:`Ctrl`-:kbd:`n` (``Ctrl-n``)
| :kbd:`↓`
Se desplaza hacia abajo una línea de la pantalla (``next-line``). Este comando intenta mantener la posición horizontal sin cambios, por lo que si empieza en medio de una línea, se
mueve a la mitad de la siguiente.
| :kbd:`Ctrl`-:kbd:`p` (``Ctrl-p``)
| :kbd:`↑`
Mueve el punto una línea hacia arriba (``previous-line``). Este comando conserva la posición dentro de la línea, como ``C-n``.
| :kbd:`Ctrl`-:kbd:`a` (``Ctrl-a``)
| :kbd:`Inicio`
Mueve el punto al comienzo de la línea (``move-beginning-of-line``).
| :kbd:`Ctrl`-:kbd:`e` (``Ctrl-e``)
| :kbd:`Fin`
Mueve el punto al final de la línea (``move-end-of-line``).
:kbd:`Ctrl`-:kbd:`f` (``Ctrl-f``)
Avanza el punto una palabra (``forward-word``). **Vea Palabras**.
| :kbd:`Ctrl`-:kbd:`→` (``Ctrl-right``)
| :kbd:`Alt`-:kbd:`→` (``M-right``)
Este comando (``right-word``) se comporta como ``M-f``, excepto que retrocede una palabra si el párrafo actual es de derecha a izquierda. Véase **Edición Bidireccional**.
:kbd:`Alt`-:kbd:`b` (``M-b``)
Mueve el punto una palabra hacia atrás (``backward-word``). **Vea Palabra**.
| :kbd:`Ctrl`-:kbd:`←` (``Ctrl-left``)
| :kbd:`Alt`-:kbd:`→` (``M-right``)
Este comando (``left-word``) se comporta como ``M-b``, excepto que *avanza* una palabra si el párrafo actual es de derecha a izquierda. **Véase Edición Bidireccional**.
:kbd:`Alt`-:kbd:`r` (``M-r``)
Sin mover el texto en la pantalla, reposiciona el punto en el margen izquierdo de la línea de texto situada más al centro de la ventana; en invocaciones consecutivas posteriores,
mueve el punto al margen izquierdo de la línea situada más arriba, a la línea situada más abajo, y así sucesivamente, en orden cíclico (``move-to-window-line-top-bottom``).
Un argumento numérico dice en qué línea de la pantalla colocar el punto, contando hacia abajo desde la parte superior de la ventana (cero significa la línea superior). Un argumento
negativo cuenta las líneas hacia arriba desde la parte inferior (-1 significa la línea inferior). **Véase Argumentos Numéricos**, para más información sobre argumentos numéricos.
:kbd:`Alt`-:kbd:`<` (``M-<``)
Se desplaza a la parte superior del búfer (``beginning-of-buffer``, del búfer). Con argumento numérico n, se desplaza a n/10 de la parte superior. En pantallas gráficas,
:kbd:`Ctrl`-:kbd:`Inicio` (``C-Inicio``) hace lo mismo.
:kbd:`Alt`-:kbd:`>` (``M->``)
Se desplaza al final del búfer (``end-of-buffer`` pantallas gráficas, (``C-Fin``) hace lo mismo.
| :kbd:`Ctrl`-:kbd:`v` (``Ctrl-v``)
| :kbd:`PageDown`
| ``next``
Desplaza la visualización una pantalla hacia delante y, si es necesario, desplaza un punto en la pantalla (comando de desplazamiento hacia arriba). **Véase Desplazamiento**.
| :kbd:`Alt`-:kbd:`v` (``M-v``)
| :kbd:`PageUp`
| ``prior``
Desplaza una pantalla hacia atrás y, si es necesario, desplaza un punto en la pantalla (comando de desplazamiento hacia abajo). **Véase Desplazamiento**.
:kbd:`Alt`-:kbd:`g`-:kbd:`c` (``M-g-c``)
Lee un número *n* y mueve el punto a la posición *n* del buffer. La posición 1 es el principio del buffer. Si el punto está sobre o justo después de un número en el buffer, ese es el
valor por defecto para *n*. Sólo tiene que escribir :kbd:`RETURN` (``RET``) en el minibuffer para usarlo. También puede especificar *n* dándole a :kbd:`Alt`-:kbd:`g`-:kbd:`c` (``M-g
c``) un argumento prefijo numérico.
| :kbd:`Alt`-:kbd:`g` :kbd:`Alt`-:kbd:`g` (``M-g M-g``)
| :kbd:`Alt`-:kbd:`g`:kbd:`g` (``M-g g``)
Lee un número *n* y mueve el punto al principio de la línea número *n* (``goto-línea``). La línea 1 es el principio del buffer. Si el punto está sobre o justo después de un número en
el buffer, ese es el valor por defecto para *n*. Simplemente teclee :kbd:`RETURN` (``RET``) en el minibuffer para usarlo. También puede especificar *n* dándole a ``M-g M-g`` un
argumento de prefijo numérico. **Ver Crear y Seleccionar Buffers**, para el comportamiento de ``M-g M-g`` cuando le da un argumento de prefijo simple. Alternativamente, puede usar el
comando ``goto-line-relative`` para mover el punto a la línea relativa a la porción accesible del buffer reducido.
``goto-line`` tiene su propia lista de historial (ver **Historial del Minibuffer**). Puede tener una única lista compartida entre todos los buffers (por defecto) o una lista separada
para cada buffer, personalizando la opción de usuario ``goto-line-history-local``.
:kbd:`Alt`-:kbd:`g` :kbd:`TAB` (``M-g TAB``)
Lee un número *n* y se desplaza a la columna *n* de la línea actual. La columna 0 es la columna más a la izquierda. Si se llama con un argumento prefijo, se mueve al número de
columna especificado por el valor numérico del argumento.
:kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`n` (``Ctrl-x Ctrl-n``)
Usa la columna actual del punto como *columna meta semipermanente* (``set-goal-column``) en el buffer actual. Cuando una columna meta semipermanente está en efecto,
:kbd:`Ctrl`-:kbd:`p` (``C-n``), :kbd:`Ctrl`-:kbd:`n` (``C-p``), ``<prior>`` y ``<next>`` siempre intentan moverse a esta columna, o lo más cerca posible de ella, después de moverse
verticalmente. La columna de meta permanece vigente hasta que se cancela.
:kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`n` (``C-u C-x C-n``)
Anula la columna de meta. En adelante, ``C-n`` y ``C-p`` intentan conservar la posición horizontal, como de costumbre.
Cuando una línea de texto en el buffer es más larga que el ancho de la ventana, Emacs normalmente la muestra en dos o más líneas de pantalla. Por comodidad, :kbd:`Ctrl`-:kbd:`n` (``C-n``) y :kbd:`Ctrl`-:kbd:`p` (``C-p``) mueven el punto por líneas de pantalla, al igual que las teclas equivalentes abajo y arriba. Puede forzar que estos comandos se muevan según las líneas lógicas (es decir, según las líneas de texto en el buffer) estableciendo la variable ``line-move-visual`` a ``nil``; si una línea lógica ocupa varias líneas de pantalla, el cursor se salta entonces las líneas de pantalla adicionales. Para más detalles, **véase Líneas de Continuación**. **Véase Variables**, para saber cómo establecer variables como ``line-move-visual``.
A diferencia de ``C-n`` y ``C-p``, la mayoría de los comandos Emacs que trabajan sobre líneas trabajan sobre líneas lógicas. Por ejemplo, ``C-a`` (``move-beginning-of-line``, mover-principio-de-línea) y ``C-e`` (``move-end-of-line``, mover-fin-de-línea) se mueven respectivamente al principio y al final de la línea lógica. Siempre que encontremos comandos que trabajen sobre líneas de pantalla, como ``C-n`` y ``C-p``, los señalaremos.
Cuando ``line-move-visual`` es ``nil`` (nulo), también puede establecer la variable ``track-eol`` a un valor no nulo. Entonces ``C-n`` y ``C-p``, cuando empiezan al final de la línea lógica, se mueven al final de la siguiente línea lógica. Normalmente, ``track-eol`` es ``nil``.
``C-n`` normalmente se detiene al final del buffer cuando lo usa en la última línea del buffer. Sin embargo, si establece la variable next-line-add-newlines a un valor no nulo, ``C-n`` en la última línea de un buffer crea una línea adicional al final y se mueve hacia abajo en ella.
8.3 Borrar Texto
----------------
| :kbd:`DEL` (``DEL``)
| :kbd:`BACKSPACE` (``BACKSPACE``)
Borrar el carácter anterior al punto, o la región si está activa (``delete-backward-char``).
``Delete``
Borrar el carácter tras el punto, o la región si está activa (``delete-forward-char``).
:kbd:`Ctrl`-:kbd:`d`
Borrar el caracter después del punto (``delete-char``).
:kbd:`Ctrl`-:kbd:`k`
Mata hasta el fina de la línea (``kill-line``).
:kbd:`Alt`-:kbd:`d` (``M-d``)
Avanza hasta el final de la siguiente palabra (``kill-word``).
:kbd:`Alt`-:kbd:`DEL`
Mata al principio de la palabra anterior (``backward-kill-word``)
El comando :kbd:`DEL` (``DEL``, ``delete-backward-char``) elimina el carácter anterior al punto, moviendo el cursor y los caracteres posteriores hacia atrás. Si el punto estaba al principio de una línea, borra la nueva línea precedente, uniendo esta línea a la anterior.
Si, por el contrario, la región está activa, :kbd:`DEL` (``DEL``) borra el texto de la región. **Véase La Marca y la Región**, para una descripción de la región.
En la mayoría de los teclados, la tecla :kbd:`DEL` (``DEL``) se denomina *BACKSPACE* (RETROCESO), pero en este manual nos referiremos a ella como :kbd:`DEL` (``DEL``). (No confunda ``DEL`` con la tecla :kbd:`Supr` (Suprimir); hablaremos de Suprimir momentáneamente.) En algunos terminales de texto, Emacs puede no reconocer la tecla :kbd:`DEL` correctamente. **Vea Si DEL Falla al Borrar**, si se encuentra con este problema.
El comando ``Delete`` (``delete-forward-char``) borra en la dirección opuesta: borra el carácter después del punto, es decir, el carácter bajo el cursor. Si el punto estaba al final de una línea, une la línea siguiente a ésta. Al igual que ``Delete``, borra el texto de la región si ésta está activa (**véase La Marca y la Región**).
:kbd:`Ctrl`-:kbd:`d` (``C-d``, ``delete-char``) borra el carácter después del punto, de forma similar a Supr, pero independientemente de si la región está activa.
Consulte Borrado, para obtener información más detallada sobre los comandos de borrado anteriores.
**Consulte Matar y Mover Texto**, para más información sobre ``C-k`` y comandos relacionados.
8.4 Deshacer cambios
--------------------
| :kbd:`Ctrl`-:kbd:`/`
| :kbd:`Ctrl`-:kbd:`x` :kbd:`u`
| :kbd:`Ctrl`-:kbd:`_`
Deshace una entrada de los registros de deshacer, usualmente, un comando que sea valido (``undo``, deshacer). (La primera tecla puede no estar disponible en pantallas en modo texto).
Emacs registra una lista de los cambios realizados en el texto del buffer, por lo que puede deshacer los cambios recientes. Esto se hace usando el comando deshacer, que está ligado a ``C-/`` (así como ``C-x u`` y ``C-_``). Normalmente, este comando deshace el último cambio, devolviendo el punto a donde estaba antes del cambio. El comando deshacer sólo se aplica a los cambios en el búfer; no se puede utilizar para deshacer el movimiento del cursor.
En un terminal que admita el modificador ``Control`` en todas las demás teclas, la forma más sencilla de invocar deshacer es con :kbd:`Ctrl`-:kbd:`/` (``C-/``), ya que no necesita el modificador ``Shif`` (Mayúsculas). En terminales que sólo permiten los caracteres de control ASCII, ``C-/`` no existe, pero para muchos de ellos :kbd:`Ctrl`-:kbd:`_` ``C-_`` todavía funciona porque realmente envía a Emacs el comando ``C-_``, mientras que muchos otros le permiten omitir el modificador ``Shift`` cuando teclea :kbd:`Ctrl`-:kbd:`_` ``C-_`` (en efecto pulsando :kbd:`Ctrl`-:kbd:`-` (``C--``)), haciendo que sea la forma más conveniente de invocar ``undo``.
Aunque cada comando de edición suele tener una entrada independiente en los registros de deshacer, los comandos muy sencillos pueden agruparse. A veces, una entrada puede cubrir sólo parte de un comando complejo.
Si repite :kbd:`Ctrl`-:kbd:`/` (``C-/``) (o sus alias), cada repetición deshace otro cambio anterior, hasta el límite de la información de deshacer disponible. Si ya se han deshecho todos los cambios registrados, el comando deshacer muestra un mensaje de error y no hace nada.
Para obtener más información sobre el comando deshacer, **consulte Deshacer**.
8.5 Archivos
------------
El texto que inserta en un búfer de Emacs sólo dura lo que dura la sesión de Emacs. Para mantener cualquier texto permanentemente, deberá ponerlo en un *fichero*.
Suponga que hay un fichero llamado ``test.emacs`` en su directorio personal. Para empezar a editar este fichero en Emacs, escriba
:kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` ``test.emacs`` :kbd:`RETURN` (``C-x C-f test.emacs RET``)
Aquí el nombre del archivo se da como *argumento* al comando ``C-x C-f`` (``find-file``, buscar archivo). Ese comando usa el *minibuffer* para leer el argumento, y teclea :kbd:`RETURN` (``RET``) para terminar el argumento (ver **El Minibuffer**).
Emacs obedece este comando *visitando* el fichero: crea un buffer, copia el contenido del fichero en el buffer, y luego muestra el buffer para editarlo. Si altera el texto, puede *guardar* el nuevo texto en el archivo tecleando (``C-x C-s``, ``save-buffer``). Esto copia el contenido alterado del buffer en el archivo ``test.emacs``, haciéndolo permanente. Hasta que lo guarde, el texto modificado sólo existe dentro de Emacs, y dicho archivo permanece inalterado.
Para crear un fichero, basta con visitarlo con :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``) como si ya existiera. Esto crea un buffer vacío, en el que puede insertar el texto que quiera poner en el fichero. Emacs realmente crea el fichero la primera vez que guarda este buffer con :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`s` (``C-x C-s``).
Para aprender más sobre el uso de ficheros en Emacs, **vea Manejo de Ficheros**.
8.6 Ayuda
---------
Si olvida lo que hace una tecla, puede averiguarlo escribiendo :kbd:`Ctrl`-:kbd:`h` :kbd:`k` (``C-h k``, ``describe-key``, describir-tecla), seguido de la tecla que le interesa; por ejemplo, :kbd:`Ctrl`-:kbd:`h` :kbd:`k` :kbd:`Ctrl`-:kbd:`n` (``C-h k C-n``) le dice lo que hace ``C-n``.
El prefijo :kbd:`Ctrl`-:kbd:`h` (``C-h``) significa "help" (ayuda). La tecla :kbd:`F1` sirve de alias para :kbd:`Ctrl`-:kbd:`h` (``C-h``). Aparte de :kbd:`Ctrl`-:kbd:`h` :kbd:`k` (``C-h k``), hay muchos otros comandos de ayuda que proporcionan diferentes tipos de ayuda.
Para más detalles, consulte **Ayuda**.
8.7 Líneas en blanco
--------------------
Aquí encontrará comandos y técnicas especiales para insertar y eliminar líneas en blanco.
:kbd:`Ctrl`-:kbd:`o` (``Ctrl-o``)
Inserta una línea en blanco después del cursor (``open-line``).
:kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`o` (``C-x C-o``)
Borrar todas las líneas en blanco consecutivas menos una (``delete-blank-lines``).
Hemos visto cómo :kbd:`RETURN` (``RET``, ``new-line`` , nueva línea) inicia una nueva línea de texto. Sin embargo, puede ser más fácil ver lo que está haciendo si primero hace una línea en blanco y luego inserta en ella el texto deseado. Esto es fácil de hacer usando la tecla :kbd:`Ctrl`-:kbd:`o` (``C-o``, ``open-line``), que inserta una nueva línea después del punto pero deja el punto delante de la nueva línea. Después de :kbd:`Ctrl`-:kbd:`o` (``C-o``), escriba el texto de la nueva línea.
Puede crear varias líneas en blanco tecleando :kbd:`Ctrl`-:kbd:`o` (``C-o``) varias veces, o dándole un argumento numérico que especifique cuántas líneas en blanco debe crear. **Vea Argumentos Numéricos**, para saber cómo. Si tiene un prefijo de relleno, el comando ``C-o`` inserta el prefijo de relleno en la nueva línea, si se escribe al principio de una línea. **Véase El Prefijo de Relleno**.
La forma más fácil de deshacerse de las líneas en blanco extra es con el comando ``C-x C-o`` (``delete-blank-lines``). Si el punto se encuentra dentro de una serie de líneas en blanco, ``C-x C-o`` borra todas menos una. Si el punto se encuentra en una sola línea en blanco, ``C-x C-o`` lo borra. Si el punto se encuentra en una línea que no está en blanco, ``C-x C-o`` borra todas las líneas en blanco siguientes, si existen.
8.8 Líneas de continuación
--------------------------
A veces, una línea de texto en el buffer -una *línea lógica*- es demasiado larga para caber en la ventana, y Emacs la muestra como dos o más *líneas en pantalla*. Esto se llama *ajuste de línea o continuación*, y la línea lógica larga se llama *línea continuada*. En una pantalla gráfica, el Editor indica el ajuste de línea con pequeñas flechas dobladas en los bordes izquierdo y derecho de la ventana. En un terminal de texto, Emacs indica el ajuste de línea mostrando un carácter ``\`` en el margen derecho.
La mayoría de los comandos que actúan sobre líneas lo hacen sobre líneas lógicas, no sobre líneas de pantalla. Por ejemplo, :kbd:`Ctrl`-:kbd:`k` (``C-k``) elimina una línea lógica. Como se describió anteriormente, :kbd:`Ctrl`-:kbd:`n` (``C-n``, ``next-line``, línea siguiente) y :kbd:`Ctrl`-:kbd:`p` (``C-p``, ``previous-line``, línea anterior) son excepciones especiales: mueven el punto hacia abajo y hacia arriba, respectivamente, una línea de pantalla (**ver Cambiar la Ubicación del Punto**).
Emacs puede opcionalmente *truncar* líneas lógicas largas en lugar de continuarlas. Esto significa que cada línea lógica ocupa una sola línea de pantalla; si es más larga que el ancho de la ventana, el resto de la línea no se muestra. En una pantalla gráfica, una línea truncada se indica mediante una pequeña flecha recta en la franja derecha; en un terminal de texto, se indica mediante un carácter ``$`` en el margen derecho. **Véase Truncamiento de Línea**.
Por defecto, las líneas continuas se ajustan al borde derecho de la ventana. Dado que el ajuste puede producirse en medio de una palabra, las líneas continuas pueden ser difíciles de leer. La solución habitual es romper las líneas antes de que sean demasiado largas, insertando nuevas líneas. Si lo prefiere, puede hacer que Emacs inserte una nueva línea automáticamente cuando una línea se hace demasiado larga, usando el modo Auto Relleno (Auto Fill mode). **Vea Rellenando Texto**.
A veces, puede que necesite editar ficheros que contienen muchas líneas lógicas largas, y puede que no sea práctico romperlas todas añadiendo nuevas líneas. En ese caso, puedes usar el modo Línea Visual, que activa el *ajuste de palabras:* en lugar de ajustar las líneas largas exactamente en el borde derecho de la ventana, Emacs las ajusta en los límites de palabra (es decir, espacios o tabuladores) más cercanos al borde derecho de la ventana. El modo Línea Visual también redefine comandos de edición como ``C-a``, ``C-n``, y ``C-k`` para operar en líneas de pantalla en lugar de líneas lógicas. **Véase Modo de Línea Visual**.
8.9 Información sobre la posición del cursor
--------------------------------------------
Aquí hay comandos para obtener información sobre el tamaño y la posición de partes del buffer, y para contar palabras y líneas.
:kbd:`Alt`-:kbd:`x` ``what-line`` (``M-x what-line``)
Muestra el número de línea del punto.
| :kbd:`Alt`-:kbd:`x` ``line-number-mode`` (``M-x line-number-mode``)
| :kbd:`Alt`-:kbd:`x` ``column-number-mode`` (``M-x column-number-mode``)
Alterna la visualización automática del número de línea o columna actual. **Véase Características Opcionales del Modo de Línea**. Si desea que se muestre un número de línea antes de
cada línea, **consulte Personalización de la Visualización**.
:kbd:`Alt`-`x` (``M-x``)
Muestra el número de líneas, frases, palabras y caracteres presentes en la región (``count-words-region``). **Consulte La Marca y la Región**, para obtener información sobre la región.
:kbd:`Alt`-:kbd:`x` ``count-words`` (``M-x count-words``)
Muestra el número de líneas, frases, palabras y caracteres presentes en la memoria intermedia. Si la región está activa (**véase La marca y la Región**), muestra en su lugar los
números de la región.
:kbd:`Ctrl`-:kbd:`x` :kbd:`=` (``C-x =``)
Muestra el código de carácter del carácter después del punto, la posición del caracter y la columna del punto (``what-cursor-position``).
:kbd:`Alt`-:kbd:`x` ``hl-line-mode`` (``M-x hl-line-mode``)
Activa o desactiva el resaltado de la línea actual. **Véase Visualización del Cursor**.
:kbd:`Alt` :kbd:`x` ``size-indication-mode`` (``M-x size-indication-mode``)
Alterna la visualización automática del tamaño del buffer. **Véase Características Opcionales de la Línea de Modo**.
``M-x what-line`` muestra el número de línea actual en el área de eco. Este comando suele ser redundante porque dicho número de línea se muestra en la línea de modo (**véase Línea de Modo**). Sin embargo, si se estrecha el búfer, la línea de modo muestra el número de línea relativo a la parte accesible (**véase Estrechamiento**). Por el contrario, ``what-line`` muestra tanto el número de línea relativo a la región reducida como el relativo a toda la memoria intermedia.
``M-=`` (``count-words-region``) muestra un mensaje que informa del número de líneas, frases, palabras y caracteres de la región (véase La marca y la Región, para una explicación de la región). Con un argumento prefijo, :kbd:`Ctrl`-:kbd:`u` :kbd:`Alt`-:kbd:`=` (``C-u M-=``), el comando muestra un recuento para todo el buffer.
El comando ``M-x count-words`` hace el mismo trabajo, pero con una convención de llamada diferente. Muestra un recuento para la región si la región está activa, y para el búfer en caso contrario.
El comando ``C-x =`` (``what-cursor-position``) muestra información sobre la posición actual del cursor y el contenido del buffer en esa posición. Aparece una línea en el área de eco con el siguiente aspecto:
.. code-block:: lisp
Char: c (99, #o143, #x63) point=28062 of 36168 (78%) column=53
Después de ``Char:``, muestra el carácter que está en el búfer justo en el punto. El texto dentro del paréntesis muestra los códigos de caracteres decimal, octal y hexadecimal correspondientes; para más información sobre cómo ``C-x =`` muestra la información de caracteres, véase **Introducción a los Juegos de Caracteres Internacionales**. Después de ``point=`` está la posición del punto como una cuenta de caracteres (el primer carácter en el buffer es la posición 1, el segundo carácter es la posición 2, y así sucesivamente). El número que sigue es el número total de caracteres del búfer, y el número entre paréntesis expresa la posición como porcentaje del total. Después de ``column=``' está la posición horizontal del punto, en columnas contando desde el borde izquierdo de la ventana.
Si la opción de usuario ``what-cursor-show-names`` no es nula, se muestra también el nombre del carácter, tal y como lo define la base de datos de caracteres Unicode. La parte entre paréntesis sería entonces:
.. code-block:: lisp
(99, #o143, #x63, LATIN SMALL LETTER C)
Si el búfer se ha estrechado, haciendo que parte del texto del principio y del final sea temporalmente inaccesible, ``C-x =`` muestra texto adicional que describe el rango actualmente accesible. Por ejemplo, puede aparecer lo siguiente:
.. code-block:: lisp
Char: C (67, #o103, #x43) point=252 of 889 (28%) <231-599> column=0
donde los dos números extra dan la posición de carácter más pequeño y más grande que ese punto puede asumir. Los caracteres entre esas dos posiciones son los accesibles. **Véase Estrechamiento**.
Una función relacionada, pero diferente, es el modo de visualización de números de línea (**véase Personalización de la Visualización**).
8.9 Argumentos Numéricos
------------------------
En la terminología de las matemáticas y la informática, *argumento* significa "datos proporcionados a una función u operación". Puede dar a cualquier comando de Emacs un *argumento numérico* (también llamado *argumento prefijo*). Algunos comandos interpretan el argumento como un recuento de repeticiones. Por ejemplo, dar a ``C-f`` un argumento de diez hace que avance el punto diez caracteres en lugar de uno. Con estos comandos, ningún argumento es equivalente a un argumento de uno, y los argumentos negativos hacen que se muevan o actúen en sentido contrario.
La forma más sencilla de especificar un argumento numérico es escribir un dígito y/o un signo menos mientras se mantiene pulsada la tecla Meta (:kbd:`Alt`). Por ejemplo,
:kbd:`Alt`-:kbd:`5` :kbd:`Ctrl`-:kbd:`n` (``M-5 C-n``)
avanza cinco líneas. Las teclas :kbd:`Alt`-:kbd:`1` (``M-1``), :kbd:`Alt`-:kbd:`2` (``M-2``), etc., así como :kbd:`Alt`-:kbd:`-` (``M--``), están vinculadas a comandos (``digit-argument`` y ``negative-argument``) que establecen un argumento para el siguiente comando. ``M--`` sin dígitos normalmente significa -1.
Si introduce más de un dígito, no necesita mantener pulsada la tecla :kbd:`Alt` (``Meta``) para el segundo dígito y los siguientes. Así, para avanzar cincuenta líneas, teclee
:kbd:`Alt`-:kbd:`5`:kbd:`0` :kbd:`Ctrl`-:kbd:`n` (``M-5 0 C-n``)
Tenga en cuenta que esto *no inserta* cinco copias de ``0`` y se desplaza una línea hacia abajo, como cabría esperar: ``0`` se trata como parte del argumento del prefijo.
(¿Y si quiere insertar cinco copias de ``0``? Escriba :kbd:`Alt`-:kbd:`5` :kbd:`Ctrl`-:kbd:`u` :kbd:`0` (``M-5 C-u 0``). Aquí, ``C-u`` termina el argumento prefijo, de modo que la siguiente pulsación de tecla inicia el comando que desea ejecutar. Tenga en cuenta que este significado de ``C-u`` sólo se aplica a este caso. Para la función habitual de ``C-u``, véase más adelante).
En lugar de escribir :kbd:`Alt`-:kbd:`1` (``M-1``), :kbd:`Alt`-:kbd:`2` (``M-2``), etc., otra forma de especificar un argumento numérico es escribir ``C-u`` (``universal-argument``) seguido de algunos dígitos, o (para un argumento negativo) un signo menos seguido de dígitos. Un signo menos sin dígitos normalmente significa -1.
:kbd:`Ctrl`-:kbd:`u` (``C-u``) sola tiene el significado especial de "cuatro veces": multiplica por cuatro el argumento de la siguiente orden. :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`u` (``C-u C-u``) lo multiplica por dieciséis. Así, :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`f` (``C-u C-u C-f``) avanza dieciséis caracteres. Otras combinaciones útiles son :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`n` (``C-u C-n``), :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`n` (``C-u C-u C-n``) (baja una buena fracción de pantalla), :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl`-:kbd:`o` (``C-u C-u C-o``) (hace dieciséis líneas en blanco) y :kbd:`Ctrl`-:kbd:`u` :kbd:`Ctrl` :kbd:`k` (``C-u C-k``, mata cuatro líneas).
Puede utilizar un argumento numérico antes de un carácter autoinsertado para insertar varias copias del mismo. Esto es sencillo cuando el carácter no es un dígito; por ejemplo, :kbd:`Ctrl`-:kbd:`u` :kbd:`6`:kbd:`4` (``C-u 6 4``) a inserta 64 copias del carácter ``a``. Pero esto no funciona para insertar dígitos; :kbd:`Ctrl`-:kbd:`u` :kbd:`6`:kbd:`4`:kbd:`1` (``C-u 6 4 1``) especifica un argumento de 641. Puede separar el argumento del dígito a insertar con otra combinación de teclas :kbd:`Ctrl`-:kbd:`u` (``C-u``); por ejemplo, :kbd:`Ctrl`-:kbd:`u` :kbd:`6`:kbd:`4` :kbd:`Ctrl`-:kbd:`u` :kbd:`1` (``C-u 6 4 C-u 1``) inserta 64 copias del carácter ``1``.
Algunos comandos se preocupan de si hay un argumento, pero ignoran su valor. Por ejemplo, el comando :kbd:`Alt`-:kbd:`q` (``M-q``. ``fill-paragraph``, rellenar-párrafo) rellena texto; con un argumento, también justifica el texto. (**Véase Rellenar Texto**, para más información sobre ``M-q``.) Para estos comandos, basta con especificar el argumento con una sola ``C-u``.
Algunos comandos usan el valor del argumento como contador de repeticiones, pero hacen algo especial cuando no hay argumento. Por ejemplo, el comando (``C-k``, ``kill-line``) con argumento *n* mata *n* líneas, incluyendo sus nuevas líneas finales. Pero :kbd:`Ctrl`-:kbd:`k` (``C-k``) sin argumento es especial: mata el texto hasta la siguiente nueva línea o, si el punto está justo al final de la línea, mata la propia nueva línea. Así, dos comandos ``C-k`` sin argumentos pueden eliminar una línea que no esté en blanco, igual que ``C-k`` con un argumento de uno. (**Ver Matar y Mover Texto**, para más información sobre ``C-k``.)
Algunos comandos tratan a ``C-u`` de forma diferente a un argumento ordinario. Otros pocos pueden tratar un argumento de sólo un signo menos de forma diferente a un argumento de -1. Estos casos inusuales se describen cuando aparecen; existen para hacer que un comando individual sea más conveniente, y están documentados en la cadena de documentación de ese comando.
Usamos el término *argumento prefijo* para enfatizar que estos argumentos se escriben *antes* del comando, y para distinguirlos de los argumentos del minibuffer (**vea El Minibuffer**), que se introducen *después* de invocar el comando.
En las pantallas gráficas, :kbd:`Ctrl`-:kbd:`0` (``C-0``), :kbd:`Ctrl`-:kbd:`1` (``C-1``), etc. actúan igual que :kbd:`Alt`-:kbd:`0` (``M-0``), :kbd:`Alt`-:kbd:`1` (``M-1``), etc.
8.11 Repetición de una orden
----------------------------
Muchos comandos sencillos, como los que se invocan con una sola tecla o con :kbd:`Alt`-:kbd:`x` ``nombre-comando`` :kbd:`RETURN` (``M-x nombre-comando RET``), pueden repetirse invocándolos con un argumento numérico que sirve como contador de repeticiones (**véase Argumentos Numéricos**). Sin embargo, si el comando que desea repetir solicita entrada, o utiliza un argumento numérico de otra forma, ese método no funcionará.
El comando :kbd:`Ctrl`-:kbd:`x` :kbd:`z` (``C-x z``, ``repeat``, repetir) proporciona otra forma de repetir un comando Emacs muchas veces. Este comando repite el último comando del Editor, sea cual sea. Repetir un comando usa los mismos argumentos que se usaron antes; no lee nuevos argumentos cada vez.
Para repetir el comando más de una vez, escriba ``z``'s adicionales: cada ``z`` repite el comando una vez más. La repetición finaliza cuando se teclea un carácter distinto de ``z`` o se pulsa un botón del ratón.
También puede activar el modo de repetición, que permite repetir comandos vinculados a secuencias de dos o más teclas tecleando un solo carácter. Por ejemplo, después de teclear :kbd:`Ctrl`-:kbd:`x` :kbd:`u` (``C-x u``, ``undo``, deshacer, **véase Deshacer**) para deshacer las ediciones más recientes, puede deshacer muchas más ediciones tecleando :kbd:`u`:kbd:`u`:kbd:`u` (``u u u``).... Del mismo modo, escriba :kbd:`Ctrl`-:kbd:`x` :kbd:`x`:kbd:`o`:kbd:`o` (``C-x o o o``)... en lugar de :kbd:`Ctrl`-:kbd:`x` :kbd:`o` :kbd:`Ctrl`-:kbd:`x` :kbd:`o` :kbd:`Ctrl`-:kbd:`x` :kbd:`o` (``C-x`` ``o`` ``C-x`` ``o`` ``C-x`` ``o``)... para cambiar a la ventana situada a varias ventanas de distancia. Esto funciona entrando en un modo de repetición transitorio después de teclear la secuencia de teclas completa que invoca el comando; los atajos de una sola tecla se muestran en el área de eco.
Sólo algunos comandos admiten la repetición en este modo (``repeat-mode``); escriba :kbd:`Alt`-:kbd:`x` ``describe-repeat-maps`` :kbd:`RETURN` (``M-x`` ``describe-repeat-maps`` ``RET``) para ver cuáles.
Los atajos de un solo carácter habilitados por el modo de repetición transitoria no tienen por qué ser idénticos: por ejemplo, después de teclear :kbd:`Ctrl`-:kbd:`x` :kbd:`{` (``C-x`` ``{``), tanto ``{`` como ``}`` o ``^`` o ``v``, o cualquier serie que mezcle estos caracteres en cualquier orden, redimensionará la ventana seleccionada de las formas respectivas. Del mismo modo, después de :kbd:`Alt`-:kbd:`g` :kbd:`n` (``M-g n``) o :kbd:`Alt`-:kbd:`g` :kbd:`p` (``M-g`` ``p``), teclear cualquier secuencia de ``n`` y/o ``p`` en cualquier mezcla repetirá ``next-error`` y ``previous-error`` para navegar en un buffer *compilación* o *grep* (**ver Modo Compilación**).
Al teclear cualquier tecla distinta de las definidas para repetir el comando anterior, se sale del modo de repetición transitoria y, a continuación, la tecla que pulsó se ejecuta normalmente. También puede definir una tecla que salga del modo de repetición transitoria *sin* ejecutar la tecla que provocó la salida. Para ello, personalice la opción de usuario ``repeat-exit-key`` para nombrar una tecla; un valor natural es ``RET``. Finalmente, es posible romper la cadena de repetición automáticamente después de cierto tiempo de inactividad: personalice la opción de usuario ``repeat-exit-timeout`` para especificar el tiempo de inactividad en segundos después del cual este modo de repetición transitoria se desactivará automáticamente.

View File

@ -1,384 +0,0 @@
9 El Minibúfer
==============
El *minibuffer* es donde los comandos Emacs leen argumentos complejos, como nombres de ficheros, nombres de buffer, nombres de comandos Emacs o expresiones Lisp. Lo llamamos "minibuffer" porque es un buffer de propósito especial con una pequeña cantidad de espacio en pantalla. Puede usar los comandos de edición habituales de Emacs en el minibuffer para editar el texto del argumento.
9.1 Utilización del minibuffer
------------------------------
Cuando el minibuffer está en uso, aparece en el área de eco, con un cursor. El minibuffer comienza con un prompt, que suele terminar con dos puntos. En él se indica qué tipo de entrada se espera y cómo se utilizará. El prompt se resalta usando la cara configurada mediante ``minibuffer-prompt`` (**ver Caras de Texto**).
La forma más sencilla de introducir un argumento en el minibuffer es teclear el texto, luego :kbd:`RETURN` (``RET``) para enviar el argumento y salir del minibuffer. Alternativamente, puede teclear :kbd:`Ctrl`-:kbd:`g` (``C-g``) para salir del minibuffer cancelando el comando que pide el argumento (**ver Salir y Abortar**).
A veces, el prompt muestra un *argumento por defecto*, entre paréntesis antes de los dos puntos. Este argumento por defecto se usará como argumento si teclea :kbd:`RETURN` (``RET``). Por ejemplo, los comandos que leen nombres de buffer usualmente muestran un nombre de buffer como argumento por defecto; puede teclear :kbd:`RETURN` ( para operar en ese buffer por defecto. Puede personalizar cómo se muestra el argumento por defecto con la opción de usuario ``minibuffer-default-prompt-format``.
Si activa el modo Minibuffer Electric Default, un modo global menor, Emacs oculta el argumento por defecto tan pronto como modifica el contenido del minibuffer (ya que tecleando :kbd:`RETURN` (``RET``) dejaría de presentar ese valor por defecto). Si alguna vez vuelve al texto original del minibuffer, el prompt vuelve a mostrar el argumento por defecto. Para activar este modo menor, escriba :kbd:`Alt`-:kbd:`x` ``minibuffer-electric-default-mode`` (``M-x`` ``minibuffer-electric-default-mode``).
Dado que el minibuffer aparece en el área de eco, puede entrar en conflicto con otros usos del área de eco. Si se emite un mensaje de error o un mensaje informativo mientras el minibuffer está activo, el mensaje se muestra entre corchetes tras el texto del minibuffer durante unos segundos, o hasta que se teclea algo; entonces el mensaje desaparece. Mientras el minibuffer está en uso, Emacs no hace eco de las pulsaciones de teclado.
Mientras usa el minibuffer, puede cambiar a un marco diferente, quizás para anotar texto que necesita introducir (**ver Comandos de Marco**). Por defecto, el minibuffer activo se mueve a este nuevo marco. Si establece la opción de usuario ``minibuffer-follows-selected-frame`` a ``nil``, entonces el minibuffer permanece en el marco donde lo abrió, y debe volver a ese marco para completar (o abortar) el comando actual. Si establece esa opción a un valor que no sea ni ``nil`` ni ``t``, el minibuffer se mueve de marco sólo después de que se haya abierto un minibuffer recursivo en el comando actual (**véase (elisp)Mini recursivo**). Esta opción es principalmente para mantener (aproximadamente) el comportamiento anterior a Emacs 28.1. Tenga en cuenta que el efecto del comando, cuando finalmente termina de usar el minibuffer, siempre tiene lugar en el marco donde lo abrió por primera vez. La única excepción es que cuando ese marco ya no existe, la acción tiene lugar en el marco actualmente seleccionado.
9.2 Minibuffers para nombres de ficheros
----------------------------------------
Comandos como :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``, ``find-file``) usan el minibuffer para leer un argumento de nombre de archivo (**ver Archivos**). Cuando se usa el minibuffer para leer un nombre de fichero, normalmente empieza con un texto inicial que termina en una barra. Este es el directorio *por defecto*. Por ejemplo, puede empezar así:
.. code-block::
Find file: /u2/emacs/src/
Aquí, ``Find file`` (Buscar archivo): es el prompt y ``/u2/emacs/src/`` es el directorio por defecto. Si ahora escribe ``buffer.c`` como entrada, eso especifica el archivo ``/u2/emacs/src/buffer.c``. **Vea Nombres de Archivos**, para información sobre el directorio por defecto.
Los valores por defecto alternativos para el nombre de archivo que Usted puede necesitar están disponibles tecleando (``M-n``), **vea Historia del Minibuffer**.
Puede especificar un archivo en el directorio padre con ``..: /a/b/../foo.el`` es equivalente a ``/a/foo.el``. Alternativamente, puede usar :kbd:`Alt`-:kbd:`DEL` (``M-DEL``) para matar nombres de directorio al revés (vea **Palabras**).
Para especificar un archivo en un directorio completamente diferente, puede eliminar todo el valor predeterminado con :kbd:`Ctrl`-:kbd:`a` :kbd:`Ctrl`-:kbd:`k` (``C-a C-k``) (**consulte Edición en el Minibuffer**). Alternativamente, puede ignorar el valor por defecto, e introducir un nombre de fichero absoluto que empiece con una barra o una tilde después del directorio por defecto. Por ejemplo, puede especificar ``/etc/termcap`` como sigue:
.. code-block::
Find file: /u2/emacs/src//etc/termcap
Una doble barra hace que Emacs ignore todo lo que hay antes de la segunda barra del par. En el ejemplo anterior, ``/u2/emacs/src/`` es ignorado, por lo que el argumento suministrado es ``/etc/termcap``. La parte ignorada del nombre del fichero se atenúa si el terminal lo permite. (Para desactivar este atenuación, desactive el modo File Name Shadow con el comando :kbd:`Alt`-:kbd:`x` ``file-name-shadow-mode`` (``M-x`` ``file-name-shadow-mode``)).
Cuando se completan nombres de ficheros remotos (**ver Archivos Remotos**), una doble barra se comporta de forma ligeramente diferente: hace que Emacs ignore sólo la parte del nombre del fichero, dejando el resto (método, host y nombre de usuario, etc.) intacto. Escribir tres barras seguidas ignora todo en los nombres de ficheros remotos. **Ver Completar Nombre de Fichero** en el Manual de Tramp.
Emacs interpreta ``~/`` como su directorio personal. Así, ``~/foo/bar.txt`` especifica un fichero llamado ``bar.txt``, dentro de un directorio llamado ``foo``, que a su vez se encuentra en su directorio personal. Además, ``~user-id/`` significa el directorio personal de un usuario cuyo nombre de usuario es *user-id*. Cualquier nombre de directorio delante de ``~`` se ignora: así, ``/u2/emacs/~/foo/bar.txt`` es equivalente a ``~/foo/bar.txt``.
En sistemas MS-Windows y MS-DOS, donde un usuario no siempre tiene un directorio home, Emacs usa varias alternativas. Para MS-Windows, ver HOME y Startup Directories en MS-Windows; para MS-DOS, ver Nombres de Archivo en MS-DOS. En estos sistemas, la construcción ``~user-id/`` está soportada sólo para el usuario actual, es decir, sólo si user-id es el nombre de inicio de sesión del usuario actual.
Para evitar que Emacs inserte el directorio por defecto al leer nombres de ficheros, cambie la variable ``insert-default-directory`` a ``nil``. En ese caso, el minibuffer comienza vacío. No obstante, los argumentos relativos a nombres de fichero se siguen interpretando basándose en el mismo directorio por defecto.
También puede introducir nombres de archivos remotos en el minibuffer. **Véase Archivos remotos**.
9.3 Edición en el minibuffer
----------------------------
El minibuffer es un buffer Emacs, aunque peculiar, y los comandos Emacs habituales están disponibles para editar el texto del argumento. (El prompt, sin embargo, es de sólo lectura, y no puede cambiarse).
Como :kbd:`RETURN` (``RET``) en el minibuffer envía el argumento, no puedes usarlo para insertar una nueva línea. Puede hacerlo con :kbd:`Ctrl`-:kbd:`q` :kbd:`Ctrl`-:kbd:`q` (``C-q C-j``), que inserta un carácter de control :kbd:`Ctrl`-:kbd:`j` (``C-j``), que es formalmente equivalente a un carácter de nueva línea (**véase Insertar texto**). También puede utilizar el comando :kbd:`Ctrl`-:kbd:`o` (``C-o``, ``open-line``) (**véase Líneas en Blanco**).
Dentro de un minibuffer, las teclas :kbd:`TAB` (``TAB``), :kbd:`SPACE` (``SPC``) y :kbd:`?` (``?``) suelen estar vinculadas a *comandos de completado*, que permiten rellenar fácilmente el texto deseado sin tener que escribirlo todo. **Véase Completar**. Al igual que con :kbd:`RETURN` (``RET``), puede utilizar :kbd:`Ctrl`-:kbd:`q` (``C-q``) para insertar un ``TAB``, ``SPC`` o un carácter ``?`` Si quiere hacer que ``SPC`` y ``?`` se inserten normalmente en lugar de iniciar el completado, puede poner lo siguiente en su archivo init:
.. code-block::
(keymap-unset minibuffer-local-completion-map "SPC")
(keymap-unset minibuffer-local-completion-map "?")
Por comodidad, (``C-a``, ``move-beginning-of-line``, mover-principio-de-línea) en un minibuffer mueve el punto al principio del texto del argumento, no al principio del prompt. Por ejemplo, esto le permite borrar todo el argumento con :kbd:`Ctrl`-:kbd:`a` :kbd:`Ctrl`-:kbd:`k` (``C-a C-k``).
Cuando el minibuffer está activo, el área de eco se trata como una ventana ordinaria de Emacs. Por ejemplo, puede cambiar a otra ventana (con :kbd:`Ctrl`-:kbd:`o` (``C-x o``)), editar texto allí, y luego volver a la ventana del minibuffer para terminar el argumento. Incluso puedes eliminar texto en otra ventana, volver a la ventana del minibuffer y arrastrar el texto al argumento. Sin embargo, la ventana del minibuffer tiene algunas restricciones: por ejemplo, no se puede dividir. **Véase Ventanas Múltiples**.
Normalmente, la ventana del minibuffer ocupa una sola línea de pantalla. Sin embargo, si añade dos o más líneas de texto en el minibuffer, éste se expande automáticamente para acomodar el texto. La variable ``resize-mini-windows`` controla el cambio de tamaño del minibuffer. El valor por defecto es ``grow-only``, que significa el comportamiento que acabamos de describir. Si el valor es ``t``, la ventana del minibuffer también se encogerá automáticamente si eliminas algunas líneas de texto del minibuffer, hasta un mínimo de una línea de pantalla. Si el valor es ``nil``, la ventana del minibuffer nunca cambia de tamaño automáticamente, pero puede usar los comandos habituales de redimensionamiento de ventanas (**vea Ventanas Múltiples**).
La variable ``max-mini-window-height`` controla la altura máxima para redimensionar la ventana del minibuffer. Un número en coma flotante especifica una fracción de la altura del marco; un número entero especifica el número máximo de líneas; ``nil`` significa que no se redimensiona automáticamente la ventana del minibuffer. El valor por defecto es 0,25.
El comando :kbd:`Ctrl`-:kbd:`Alt`-:kbd:`v` (``C-M-v``) en el minibuffer desplaza el texto de ayuda de los comandos que muestran texto de ayuda de cualquier tipo en otra ventana. También puede desplazar el texto de ayuda con :kbd:`Alt`-:kbd:`PageUp` (``M-PageUp``) y :kbd:`Alt`-:kbd:`PageDown` (``M-PageDown``) (o, equivalentemente, ``M-prior`` y ``M-next``). Esto es especialmente útil con listas largas de posibles terminaciones. **Véase Utilización de Otras Ventanas**.
Emacs normalmente deshabilita la mayoría de los comandos que usan el minibuffer mientras el minibuffer está activo. Para permitir tales comandos en el minibuffer, configure la variable ``enable-recursive-minibuffers`` a ``t``. Puede que también necesite habilitar ``minibuffer-depth-indicate-mode`` para mostrar la profundidad de recursión actual en el prompt del minibuffer en el uso recursivo del minibuffer.
Cuando está activo, el minibuffer está normalmente en ``minibuffer-mode`` (modo minibúfer). Este es un modo interno de Emacs sin ninguna característica especial.
Cuando no está activo, el minibuffer está ``minibuffer-inactive-mode`` (en modo minibuffer-inactivo), y hacer clic con ratón-1 allí muestra el buffer ``*Messages*``. Si usa un marco dedicado para minibúferes, Emacs también reconoce ciertas teclas allí, por ejemplo, :kbd:`n` (``n``) para crear un nuevo marco.
9.4 Completado
--------------
A menudo puede usar una característica llamada *completado* para ayudar a introducir argumentos. Esto significa que después de teclear parte del argumento, Emacs puede rellenar el resto, o parte de él, basándose en lo tecleado hasta el momento.
Cuando el completado está disponible, ciertas teclas (normalmente :kbd:`TAB` (``TAB``), :kbd:`RETURN` (``RET``), y :kbd:`SPACE` (``SPC``)) son redirigidas en el minibuffer a comandos
especiales de completado **(ver Comandos de Completado**). Estos comandos intentan completar el texto en el minibuffer, basándose en un conjunto de *alternativas de finalización* proporcionadas por el comando que solicitó el argumento. Normalmente puede teclear :kbd:`?` (``?``) para ver una lista de alternativas de completado.
Aunque el completado normalmente se lleva a cabo en el minibuffer, a veces esta función también está disponible en los buffers normales. **Véase Completar Nombres de Símbolos**.
9.4.1 Ejemplos de Completado
````````````````````````````
Un simple ejemplo puede ser de ayuda. :kbd:`Alt`-:kbd:`x` (``M-x``) usa el minibuffer para leer el nombre de un comando, por lo que el completado funciona comparando el texto del minibuffer con los nombres de los comandos Emacs existentes. Suponga que desea ejecutar el comando auto-fill-mode. Puede hacerlo tecleando :kbd:`Alt`-:kbd:`x` ``auto-fill-mode`` :kbd:`RETURN` (``M-x`` ``auto-fill-mode`` ``RET``), pero es más fácil usar el completado.
Si escribe :kbd:`Alt`-:kbd:`x` :kbd:`a`:kbd:`u` :kbd:`TAB` (``M-x a u TAB``), el ``TAB`` busca alternativas de completado (en este caso, nombres de comandos) que empiecen por ``au``. Hay varios, incluyendo ``auto-fill-mode`` y ``autoconf-mode``, pero todos comienzan con ``auto``, así que el ``au`` en el minibuffer se completa con ``auto``. (Se pueden definir más comandos en su sesión Emacs. Por ejemplo, si se definiera un comando llamado ``authorize-me``, Emacs sólo podría completar hasta ``aut``).
Si vuelve a teclear :kbd:`TAB` (``TAB``) inmediatamente, no puede determinar el siguiente carácter; podría ser ``-``, ``a`` o ``c``. Así que no añade ningún carácter; en su lugar, ``TAB`` muestra una lista de todas las posibles terminaciones en otra ventana.
A continuación, escriba ``-f``. El minibuffer ahora contiene ``auto-f``, y el único nombre de comando que comienza con esto es ``auto-fill-mode``. Si ahora teclea :kbd:`TAB` (``TAB``), el completado rellena el resto del argumento ``auto-fill-mode`` en el minibuffer.
Por lo tanto, teclear sólo :kbd:`u`:kbd:`TAB`:kbd:`-`:kbd:`f`:kbd:`TAB` (``u TAB - f TAB``) le permite entrar en ``auto-fill-mode``.
:kbd:`TAB` también funciona cuando el punto no está al final del minibuffer. En ese caso, rellenará el texto tanto en el punto como al final del minibuffer. Si escribe :kbd:`Alt`-:kbd:`x` ``autocom`` (``M-x autocm``), luego presiona :kbd:`Ctrl`-:kbd:`b` (``C-b``) mover el punto antes de la ``m``, puede escribir :kbd:`TAB` (``TAB``) para insertar el texto ``onf-`` en el punto y ``ode`` al final del minibuffer, de modo que el minibuffer contenga ``autoconf-mode``.
9.4.2 Comandos de finalización
``````````````````````````````
Esta es una lista de los comandos de finalización definidos en el minibuffer cuando se permite la finalización.
:kbd:`TAB` (``TAB``)
Completa el texto del minibuffer en la medida de lo posible; si no se puede completar, muestra una lista de posibles terminaciones (``minibuffer-complete``).
:kbd:`SPC` (``SPC``)
Completa hasta una palabra del texto del minibuffer antes del punto (``minibuffer-complete-word``). Este comando no está disponible para argumentos que suelen incluir espacios, como
los nombres de archivo.
:kbd:`RET`
Envía el texto en el minibuffer como argumento, posiblemente completando primero (``minibuffer-complete-and-exit``). **Véase Salida de Completado**.
:kbd:`?`
Mostrará una lista de finalizaciones
``TAB`` (``minibuffer-complete``) es el comando de completado más fundamental. Busca todas las terminaciones posibles que coincidan con el texto existente en el minibúfer e intenta completar todo lo que pueda. **Vea Cómo se Eligen las Alternativas de Completado**, para saber cómo se eligen estas alternativas.
``SPC`` (``minibuffer-complete-word``) completa como ``TAB``, pero sólo hasta el siguiente guión o espacio. Si tiene ``auto-f`` en el minibuffer y teclee :kbd:`SPCACE` (``SPC``), encuentra que la terminación es ``auto-fill-mode``, pero sólo inserta ``ill-``, dando ``auto-fill-``. Otro :kbd:``SPCACE`` (``SPC``) en este punto completa hasta ``auto-fill-mode``.
Si ``TAB`` o ``SPC`` no puede completar, muestra una lista de alternativas de finalización coincidentes (si las hay) en otra ventana. Puede mostrar la misma lista con ``?`` (``minibuffer-completion-help``). Los siguientes comandos se pueden usar con la lista de finalización o completado:
| :kbd:`M-DOWN` (``Alt-Down``)
| :kbd:`M-UP` (``Alt-Up``)
Mientras se está en el minibuffer, ``M-DOWN`` (``minibuffer-next-completion``) y ``M-UP`` (``minibuffer-previous-completion``) navegan a través de las opciones de finalización y se
muestran en el buffer de completado. Cuando ``minibuffer-completion-auto-choose`` es distinto de cero (que es el valor predeterminado), el uso de estos comandos también inserta el
candidato de finalización actual en el minibuffer. Si ``minibuffer-completion-auto-choose`` es ``nil``, puede utilizar el comando (``M-RET``, ``minibuffer-choose-completion``) para
insertar los candidatos de finalización en el minibuffer. Por defecto, esto sale del minibuffer, pero con un argumento prefijo, :kbd:`Ctrl`-:kbd:`u` :kbd:`Alt`-:kbd:`RETURN` (``C-u
M-RET``) inserta el candidato actualmente activo sin salir del minibuffer.
| :kbd:`Alt`-:kbd:`v` (``M-v``)
| :kbd:`PageUp` (``PageUp``)
| ``prior``
Tecleando :kbd:`Alt`-:kbd:`v` (``M-v``), mientras se está en el minibuffer, se selecciona la ventana que muestra la lista de opciones de completado (``switch-to-completions``). Esto
facilita el uso de los siguientes comandos. ``PageUp``, ``prior`` y :kbd:`Alt`-:kbd:`g` :kbd:`Alt`-:kbd:`c` (``M-g M-c``) hace lo mismo. También puede seleccionar la ventana de otras
formas (**véase Ventanas Múltiples**).
| :kbd:`RETURN` (``RET``)
| ``mouse-1``
| ``mouse-2``
Mientras está en el buffer de la lista de finalizaciones, esto escoge una terminación en el punto (``choose-completion``, escoger-terminación). Con un argumento prefijo, (``C-u RET``)
inserta la terminación en el punto en el minibuffer, pero no sale del minibuffer, por lo que puede cambiar de opinión y elegir otro candidato.
| :kbd:`TAB` (``TAB``)
| :kbd:`→` (``RIGHT``)
| :kbd:`n` (``n``)
Mientras están en el buffer de la lista de finalización, estas teclas se mueven apuntando a la siguiente alternativa de completado (``next-completion``).
| :kbd:`Shift`-:kbd:`TAB` (``S-TAB``)
| :kbd:`←` (``LEFT``)
| :kbd:`p` (``p``)
Mientras están en el búfer de la lista de finalización, estas teclas se mueven apuntando a la alternativa de completado anterior (``previous-completion``, completado-anterior).
:kbd:`a` (``a``)
En el búfer de la lista de finalización, sale de la ventana que lo muestra y selecciona la ventana que muestra el minibúfer (``quit-window``).
:kbd:`z` (``z``)
Mientras esté en el búfer de la lista de finalización, elimínelo y borre la ventana que lo muestra (``kill-current-buffer``).
9.4.3 Salida del Completado
```````````````````````````
Cuando un comando lee un argumento utilizando el minibuffer con finalización, también controla lo que ocurre cuando se teclea :kbd:`RETURN` (``RET``) (``minibuffer-complete-and-exit``) para enviar el argumento. Existen cuatro tipos de comportamiento:
* La *finalización estricta* sólo acepta coincidencias de finalización exactas. Tecleando RET se sale del minibuffer sólo si el texto del minibuffer es una coincidencia exacta, o
se completa con una. De lo contrario, Emacs se niega a salir del minibuffer; en su lugar intenta completar, y si no se puede completar muestra momentáneamente ``[No-match]``
([Sin coincidencia]) después del texto del minibuffer. (Aún puede salir del minibuffer tecleando :kbd:`Ctrl`-:kbd:`g` (``C-g``) para cancelar el comando).
Un ejemplo de comando que usa este comportamiento es ``M-x``, ya que no tiene sentido que acepte un nombre de comando inexistente.
* La *terminación cautelosa* es como la terminación estricta, excepto que :kbd:`RETURN` (``RET``) sólo sale si el texto ya es una coincidencia exacta. Si el texto se completa
con una coincidencia exacta, ``RET`` realiza esa compleción pero no sale todavía; debe teclear un segundo ``RET`` para salir.
Este completado se usa para leer nombres de archivos que ya deben existir, por ejemplo.
* El *completado permisivo* acepta cualquier entrada; los candidatos a completado son sólo sugerencias. Escribir :kbd:`RETUTRN` (``RET``) no completa, sólo envía el argumento tal y
como lo ha introducido.
* El *completado permisivo con confirmación* es como el completado permisivo, con una excepción: si ha tecleado :kbd:`TAB` (``TAB``) y esto ha completado el texto hasta algún estado
intermedio (es decir, uno que todavía no es una coincidencia de completado exacta), teclear :kbd:`RETURN` justo después no envía el argumento. En su lugar, Emacs pide confirmación
mostrando momentáneamente ``[Confirm]`` después del texto; teclee :kbd:`RETURN` de nuevo para confirmar y enviar el texto. Esto detecta un error común, en el que uno teclea
:kbd:`RETURN` antes de darse cuenta de que ``TAB`` no completó todo lo que deseaba.
Puede modificar el comportamiento de la confirmación personalizando la variable ``confirm-nonexistent-file-or-buffer``. El valor por defecto, ``after-completion``, da el
comportamiento que acabamos de describir. Si lo cambia a ``nil``, Emacs no pide confirmación, volviendo a la finalización permisiva. Si lo cambia a cualquier otro valor que no
sea ``nil``, Emacs pide confirmación tanto si el comando precedente era ``TAB`` como si no.
Este comportamiento es usado por la mayoría de los comandos que leen nombres de ficheros, como :kbd:`Ctrl`-:kbd:`x` :kbd:`Ctrl`-:kbd:`f` (``C-x C-f``), y comandos que leen
nombres de buffer, como :kbd:`Ctrl`-:kbd:`x` :kbd:`b` (``C-x b``).
9.4.4. Cómo se Eligen las Alternativas de Completado
````````````````````````````````````````````````````
Los comandos de completado funcionan reduciendo una gran lista de posibles alternativas de completado a un subconjunto más pequeño que coincide con lo que ha escrito en el minibuffer. En Ejemplo de Completado, dimos un ejemplo simple de este tipo de comparación. El procedimiento para determinar qué constituye una coincidencia es bastante intrincado. Emacs intenta ofrecer complementos plausibles en la mayoría de las circunstancias.
Emacs lleva a cabo el completado usando uno o más *estilos de completado*, conjuntos de criterios para emparejar el texto del minibuffer con las alternativas de completado. Durante el proceso, Emacs prueba cada estilo de completado uno por uno. Si un estilo produce una o más coincidencias, se usa como lista de alternativas de completado. Si no hay coincidencias, pasa al siguiente estilo.
La variable de lista ``completion-styles`` especifica los estilos de completado a usar. Cada elemento de la lista es el nombre de un estilo de completado (un símbolo Lisp). Los símbolos de estilo disponibles se almacenan en la variable ``completion-styles-alist`` (**ver Variables de Completado** en el Manual de Referencia de Emacs Lisp). Los estilos de completado por defecto son (en orden):
basic
Una alternativa de terminación o completado que coincida debe tener el mismo comienzo que el texto en el minibuffer antes del punto. Además, si hay algún texto en el minibúfer después
del punto, el resto de la alternativa de finalización debe contener ese texto como subcadena.
partial-completion
Este estilo de completado dinámico divide el texto del minibuffer en palabras separadas por guiones o espacios, y completa cada palabra por separado. (Por ejemplo, al completar
nombres de comandos, ``em-l-m`` se completa como ``emacs-lisp-mode``).
Además, un ``*`` en el texto del minibuffer se trata como un *comodín*: coincide con cualquier cadena de caracteres en la posición correspondiente de la alternativa de compleción.
emacs22
Este estilo de completado es similar a **basic**, excepto que ignora el texto en el minibuffer después del punto. Se llama así porque corresponde al comportamiento de completado de
Emacs 22.
También se definen los siguientes estilos de completado adicionales, que puede añadir a ``completion-styles`` si lo desea (**consulte Personalización**):
substring
Una alternativa de finalización que coincida debe contener el texto del minibúfer anterior a punto y el texto del minibúfer posterior a punto como subcadenas (en ese mismo orden).
Así, si el texto en el minibuffer es ``foobar``, con el punto entre ``foo`` y ``bar``, coincide con *a*\ foo\ *b*\ bar\ *c*\, donde *a*, *b*, y *c* pueden ser cualquier cadena
incluyendo la cadena vacía.
flex
Este dinámico estilo de completado dinámico, también conocido como ``flx``, ``fluzzy``, ``scatter`` (completado difuso o disperso), intenta completar usando subcadenas en orden. Por
ejemplo, puede considerar que ``foo`` coincide con ``frodo`` o ``fbarbazoo``.
initials
Este estilo de completado muy riguroso intenta completar acrónimos e inicialismos. Por ejemplo, al completar nombres de comandos, hace coincidir ``lch`` con ``list-command-history``.
También existe un estilo de completado muy simple llamado ``emacs21``. En este estilo, si el texto en el minibuffer es ``foobar``, sólo se consideran las coincidencias que empiezan por ``foobar``.
Puede usar diferentes estilos de completado en diferentes situaciones, configurando la variable ``completion-category-overrides``. Por ejemplo, la configuración por defecto dice que sólo se utilice la terminación básica y de subcadena para los nombres de los búferes.
9.4.5 Opciones de Completado
````````````````````````````
El uso de mayúsculas y minúsculas es importante cuando se completan argumentos que distinguen entre mayúsculas y minúsculas, como los nombres de comandos. Por ejemplo, al completar nombres de comandos, ``AU`` no se completa con ``auto-fill-mode``. Las diferencias entre mayúsculas y minúsculas se ignoran al completar argumentos en los que las mayúsculas y minúsculas no importan.
Al completar los nombres de archivo, se ignoran las diferencias entre mayúsculas y minúsculas si la variable ``read-file-name-completion-ignore-case`` es distinta de ``nil`` (nulo). El valor por defecto es ``nil`` en sistemas que distinguen entre mayúsculas y minúsculas, como GNU/Linux; es no-``nil`` en sistemas que no distinguen entre mayúsculas y minúsculas, como Microsoft Windows. Cuando se completan nombres de búferes, se ignoran las diferencias entre mayúsculas y minúsculas si la variable ``read-buffer-completion-ignore-case`` no es ``nil``; por defecto es ``nil``.
Cuando se completan nombres de archivos, Emacs normalmente omite ciertas alternativas que se consideran poco probables de ser elegidas, tal y como determina la variable de lista ``completion-ignored-extensions``. Cada elemento de la lista debe ser una cadena; cualquier nombre de fichero que termine en tal cadena se ignora como alternativa de completado. Cualquier elemento que termine en una barra (``/``) representa un nombre de subdirectorio. El valor estándar de ``completion-ignored-extensions`` tiene varios elementos, incluidos ``.o``, ``.elc`` y ``~``. Por ejemplo, si un directorio contiene ``foo.c`` y ``foo.elc``, ``foo`` se completa en ``foo.c``. Sin embargo, si todas las terminaciones posibles terminan en cadenas omitidas, no se ignoran: en el ejemplo anterior, ``foo.e`` termina en ``foo.elc``. Emacs no tiene en cuenta las extensiones ignoradas al mostrar las alternativas de completado en la lista de completado.
El completado Shell es una versión extendida del completado de nombre de fichero, ver **Opciones del Modo Shell**.
Si ``completion-auto-help`` se establece a ``nil``, los comandos de completado nunca muestran el buffer de la lista de completado; debe teclear :kbd:`?` (``?``) para mostrar la lista. Si el valor es ``lazy``, Emacs sólo muestra el buffer de la lista de completado en el segundo intento de completar. En otras palabras, si no hay nada que completar, la primera ``TAB`` se hace eco de ``Next char not unique`` (Siguiente carácter no único); la segunda ``TAB`` muestra el buffer de la lista de completado. Si el valor es siempre, el búfer de la lista de finalización se muestra siempre que se intenta completar.
La visualización del búfer de la lista de completado después de que se muestre por primera vez también está controlada por ``completion-auto-help``. Si el valor es ``t`` o ``lazy``, la ventana que muestra las compleciones aparece cuando Emacs es capaz de completar (y puede aparecer de nuevo si Emacs es de nuevo incapaz de completar después de que escriba algo más de texto); si el valor es ``always``, la ventana aparece sólo cuando sale de la compleción. El valor visible es un híbrido: se comporta como ``t`` cuando decide si abrir o no la ventana que muestra el buffer de la lista de completado, y como ``always`` cuando decide si cerrarla o no.
Emacs puede seleccionar opcionalmente la ventana que muestra las terminaciones cuando muestra esa ventana. Para habilitar este comportamiento, personalice la opción de usuario ``completion-auto-select`` a ``t``, que cambia el comportamiento de :kbd:`TAB` (``TAB``) cuando Emacs muestra las terminaciones: pulsando :kbd:`TAB` cambiará al buffer de la lista de terminaciones, y entonces podrá moverse a un candidato mediante comandos de movimiento del cursor y seleccionarlo con :kbd:`RETURN` (``RET``). Si el valor de ``completion-auto-select`` es ``second-tab``, entonces el primer :kbd:`TAB` abrirá el buffer de la lista de compleciones, y el segundo cambiará a él.
Si ``completion-cycle-threshold`` no es nulo, los comandos de completado pueden recorrer las alternativas de finalización. Normalmente, si hay más de una alternativa de completado para el texto en el minibuffer, un comando de completado completa hasta la subcadena común más larga. Si cambia el valor de ``completion-cycle-threshold`` a ``t``, la orden de completado completará la primera de esas alternativas; cada invocación posterior de la orden de completado la sustituirá por la siguiente alternativa de forma cíclica. Si le da a ``completion-cycle-threshold`` un valor numérico *n*, los comandos de completado cambian a este comportamiento cíclico sólo cuando hay *n* o menos alternativas.
Cuando se muestran las terminaciones, Emacs normalmente abrirá un nuevo buffer para mostrar las compleciones. Por defecto, las opciones se ordenarán horizontalmente, usando tantas columnas como quepan en el ancho de la ventana, pero esto puede cambiarse personalizando la opción de usuario ``completions-format``. Si su valor es ``vertical``, Emacs ordenará las compleciones verticalmente, y si es ``one-column`` (una columna), Emacs usará sólo una columna.
La opción de usuario ``completions-sort`` controla el orden en que se ordenan las terminaciones en el búfer ``*Completions*``. El valor predeterminado es ``alphabetical``, que ordena por orden alfabético. El valor ``nil`` desactiva la clasificación. El valor también puede ser una función, que se llamará con la lista de posibles terminaciones, y debe devolver la lista en el orden deseado.
Cuando ``completions-max-height`` es distinto de ``nil``, limita el tamaño de la ventana de compleciones. Se especifica en líneas e incluye el modo, la línea de cabecera y un divisor inferior, si lo hay. Para un control más complejo de las propiedades de visualización de la ventana Completions, puede usar ``display-buffer-alist`` (**vea Acción de Alistas para Visualización de Buffer** en El Manual de Referencia de Emacs Lisp).
La variable ``completions-header-format`` es una cadena de especificaciones de formato para controlar la línea informativa que se muestra antes de la lista de candidatos a completar. Si contiene una construcción ``%s``, se sustituye por el número de terminaciones mostradas en el buffer de la lista de terminaciones. Para suprimir la visualización de la línea informativa, personalice esta variable a ``nil``. La cadena que es el valor de esta variable puede tener propiedades de texto para cambiar la apariencia visual de la línea de encabezado; algunas propiedades útiles face o ``cursor-intangible`` (**ver Propiedades con Significados Especiales** en El Manual de Referencia de Emacs Lisp).
Cuando ``completions-highlight-face`` nombra una cara, el candidato de compleción actual, el que será seleccionado tecleando :kbd:`RETURN` (``RET``) o pulsando el ratón, será resaltado usando esa cara. El valor por defecto de esta variable es ``completions-highlight``; el valor es ``nil`` desactiva este resaltado. Esta característica utiliza la propiedad de texto especial ``cursor-face``.
9.5 Historial del Minibúfer
---------------------------
Todo lo que escriba en el minibuffer se guarda en una lista del historial del minibufer para que pueda volver a usarlo fácilmente más tarde. Esto incluye candidatos a completado (como nombres de archivos, nombres de búfer, nombres de comandos, etc.) y cualquier otro tipo de entrada en el minibúfer. Puede usar los siguientes comandos para obtener rápidamente una respuesta anterior o alternativa en el minibuffer:
:kbd:`Alt`-:kbd:`p` (``M-p``)
Se desplaza al elemento anterior del historial del minibuffer, un argumento anterior (``previous-history-element``, elemento-historial-anterior).
:kbd:`Alt`-:kbd:`n` (``M-n``)
Se pasa al siguiente elemento del historial del minibuffer (``next-history-element``).
| :kbd:`↑` (``UP``)
| :kbd:`↓` (``DOWN``)
Como :kbd:`Alt`-:kbd:`n` (``M-n``) y :kbd:`Alt`-:kbd:`p` (``M-p``) pero se desplaza a la línea anterior o siguiente de un elemento multilínea antes de ir al elemento anterior del
historial (``previous-line-or-history-element`` y ``next-line-or-history-element``)
:kbd:`Alt`-:kbd:`r` ``expreg`` :kbd:`RETURN` (``M-r expreg RET``)
Se mueve a un elemento anterior del historial del minibuffer que coincida con la expresión regular expreg (``previous-matching-history-element``).
:kbd:`Alt`-:kbd:`s` ``expreg`` :kbd:`RETURN` (``M-s expreg RET``)
Se mueve a un elemento posterior en el historial del minibuffer que coincida con la expresión regular (``next-matching-history-element``).
Mientras está en el minibuffer, :kbd:`Alt`-:kbd:`p` (``M-p``, ``previous-history-element``) se mueve por la lista del historial del minibuffer, un elemento cada vez. Cada :kbd:`Alt`-:kbd:`p` (``M-p``) recupera un elemento anterior de la lista del historial en el minibuffer, reemplazando su contenido existente. Si se escribe :kbd:`Alt`-:kbd:`n` (``M-n``, ``next-history-element``), la lista del historial del minibúfer se desplaza en sentido inverso, recuperando entradas posteriores en el minibúfer.
Si tipea :kbd:`Alt`-:kbd:`n` (``M-n``) en el minibuffer cuando no hay entradas posteriores en la historia del minibuffer (e.g., si no ha tipeado previamente :kbd:`Alt`-:kbd:`p` (``M-p``)), Emacs intenta buscar desde una lista de argumentos por defecto: valores que es probable que ingrese. Esto se puede considerar como un movimiento a través del "historial futuro".
El "historial futuro" para nombres de archivo incluye varias alternativas posibles que puede encontrar útiles, como el nombre de archivo o la URL en el punto del búfer actual. Los valores por defecto puestos en el "historial futuro" en este caso están controlados por las funciones mencionadas en el valor de la opción ``file-name-at-point-functions``. Por defecto, su valor invoca al paquete ``ffap`` (**ver Buscando Archivos y URLs en el Punto**), que intenta adivinar el archivo o URL por defecto a partir del texto alrededor del punto. Para desactivar esta suposición, personalice la opción a un valor nulo, entonces el "historial futuro" de nombres de ficheros incluirá sólo el fichero, si lo hay, visitado por el buffer actual, y el directorio por defecto.
Las teclas :kbd:`↑` y :kbd:`↓` (flecha ARRIBA y ABAJO) funcionan como :kbd:`Alt`-:kbd:`p` y :kbd:`Alt`-:kbd:`n`, pero si el ítem actual del historial es más largo que una sola línea, le permiten moverse a la línea anterior o siguiente del ítem actual del historial antes de ir al ítem anterior o siguiente del historial.
Si edita el texto insertado por los comandos de historial del minibúfer ``M-p`` o ``M-n``, esto no cambia su entrada en la lista de historial. Sin embargo, el argumento editado sí va al final de la lista del historial cuando lo envía.
Puede utilizar :kbd:`Alt`-:kbd:`s` (``M-r``, ``previous-matching-history-element``, elemento histórico coincidente anterior) para buscar entre los elementos más antiguos de la lista histórica, y (``M-s``, ``next-matching-history-element``, elemento histórico coincidente siguiente) para buscar entre las entradas más recientes. Cada uno de estos comandos pide una expresión regular como argumento y busca la primera entrada coincidente en el minibuffer. **Véase Sintaxis de Expresiones Regulares**, para una explicación de las expresiones regulares. Un prefijo numérico *n* significa que se busca la enésima entrada que coincida. Estos comandos son inusuales, ya que usan el minibuffer para leer el argumento de la expresión regular, aunque se invoquen desde el minibuffer. Una letra mayúscula en la expresión regular hace que la búsqueda distinga entre mayúsculas y minúsculas (**véase Coincidencia Laxa Durante la Búsqueda**).
También puede buscar en el historial mediante una búsqueda incremental. **Ver Buscando en el Minibuffer**.
Emacs mantiene listas de historial separadas para diferentes tipos de argumentos. Por ejemplo, hay una lista para nombres de ficheros, usada por todos los comandos que leen nombres de ficheros. Otras listas de historial incluyen nombres de buffer, nombres de comandos (usados por ``M-x``), y argumentos de comandos (usados por comandos como ``query-replace``).
La variable ``history-length`` especifica la longitud máxima de una lista de historial del minibuffer; al añadir un nuevo elemento se borra el más antiguo si la lista se alarga demasiado. Si el valor es ``t``, no hay longitud máxima.
La variable ``history-delete-duplicates`` especifica si se borran los duplicados del historial. Si no es nula, al añadir un nuevo elemento se eliminan de la lista todos los elementos que sean iguales a él. Por defecto es nulo.
9.6 Repetición de Comandos del Minibuffer
-----------------------------------------
Cada orden que usa el minibuffer una vez se registra en una lista especial del historial, el *historial de comandos*, junto con los valores de sus argumentos, para que pueda repetir la orden completa. En particular, cada uso de ``M-x`` se registra allí, ya que este usa el minibuffer para leer el nombre del comando.
:kbd:`Ctrl`-:kbd:`x` :kbd:`ESC`:kbd:`ESC` (``C-x ESC ESC``)
Vuelve a ejecutar un comando reciente del minibuffer desde el historial de comandos (``repeat-complex-command``).
:kbd:`Alt`-:kbd:`x` ``list-command-history`` (``M-x list-command-history``)
Muestra el historial de comandos completo, con todos los comandos que :kbd:`Ctrl`-:kbd:`x` :kbd:`ESC`:kbd:`ESC` (``C-x ESC ESC``) puede repetir, los más recientes primero
``C-x ESC ESC`` vuelve a ejecutar un comando reciente que usó el minibuffer. Sin argumento, repite la última orden. Un argumento numérico especifica qué comando repetir; 1 significa el último, 2 el anterior, y así sucesivamente.
``C-x ESC ESC`` funciona convirtiendo la orden anterior en una expresión Lisp y entrando en un minibuffer inicializado con el texto de esa expresión. Incluso si no conoce Lisp, probablemente será obvio qué comando se muestra para la repetición. Si escribe sólo :kbd:`RETURN`, el comando se repetirá sin cambios. También puede cambiar el comando editando la expresión Lisp antes de ejecutarla. El comando ejecutado se añade al principio del historial de comandos a menos que sea idéntico al elemento más reciente.
Una vez dentro del minibuffer de ``C-x ESC ESC``, puede usar los comandos habituales del historial del minibuffer (**véase Historial del Minibuffer**) para moverse por la lista del historial. Después de encontrar el comando anterior deseado, puede editar su expresión como de costumbre y luego ejecutarlo tecleando :kbd:`RETURN`.
La búsqueda incremental no usa, estrictamente hablando, el minibuffer. Por lo tanto, aunque se comporta como un comando complejo, normalmente no aparece en la lista del historial de ``C-x ESC ESC``. Puede hacer que los comandos de búsqueda incremental aparezcan en el historial estableciendo ``isearch-resume-in-command-history`` a un valor no nulo. **Véase Búsqueda Incremental**.
La lista de comandos anteriores que usan minibuffer se almacena como una lista Lisp en la variable command-history. Cada elemento es una expresión Lisp que describe una orden y sus argumentos. Los programas Lisp pueden volver a ejecutar una orden llamando a eval con el elemento ``command-history``.
9.7 Ingresar Contraseñas
------------------------
A veces, puede que necesite escribir una contraseña en Emacs. Por ejemplo, cuando le pide al Editor que visite un fichero en otra máquina a través de un protocolo de red como FTP, a menudo necesita proporcionar una contraseña para acceder a la máquina (vea Archivos Remotos).
Ingresar una contraseña es similar a usar un minibuffer. Emacs muestra un prompt en el área de eco (como ``Password:``); después de escribir la contraseña requerida, pulse :kbd:`RETURN`
(``RET``) para enviarla. Para evitar que otros vean su contraseña, cada carácter que escriba se muestra como un asterisco (``*``) en lugar de su forma habitual.
La mayoría de las características y comandos asociados con el minibuffer *no pueden usarse* cuando se introduce una contraseña. No hay historial ni completado, y no puede cambiar de ventana ni efectuar ninguna otra acción con Emacs hasta que haya introducido la contraseña.
Mientras esta escribiendo la contraseña, puede pulsar :kbd:`DEL` (``DEL``) para borrar hacia atrás, eliminando el último carácter tecleado. :kbd:`Ctrl`-:kbd:`u` (``C-u``) borra todo lo que haya escrito hasta el momento. :kbd:`Ctrl`-:kbd:`g` (``C-g``) sale de la petición de contraseña (**ver Salir y Abortar**). :kbd:`Ctrl`-:kbd:`g` (``C-y``) inserta el kill actual en la contraseña (**ver Matar y Mover Texto**). Puede teclear :kbd:`RETURN` (``RET``) o :Kbd:`ESC` (``ESC``) para enviar la contraseña. Cualquier otra tecla de autoinserción de caracteres inserta el carácter asociado en la contraseña, y cualquier otra entrada es ignorada.
9.8 Preguntas Sí o No
---------------------
Un comando de Emacs puede requerir que responda a una pregunta de sí o no durante el curso de su ejecución. Hay dos tipos principales de preguntas de este tipo.
Para el primer tipo de pregunta sí o no, el prompt termina con ``(y or n)``. La respuesta se da con una sola tecla, ``y`` o ``n``, que sale inmediatamente del minibuffer y proporciona la respuesta. Por ejemplo, si teclea (``C-x C-w``, ``write-file``, escribir-archivo) para guardar un buffer, e introduce el nombre de un archivo existente, Emacs emite un prompt como este:
.. code-block::
File foo.el exists; overwrite? (y or n)
El segundo tipo de consulta ``yes-or-no`` (sí-o-no) se emplea normalmente si dar una respuesta errónea puede tener consecuencias graves; por tanto, presenta una pregunta más larga que termina con ``((yes or no)``. Por ejemplo, si invoca :kbd:`Ctrl`-:kbd:`x` :kbd:`k` (``C-x k``, ``kill-buffer``) en un buffer que visita un fichero con cambios sin guardar, Emacs activa el minibuffer con un prompt como este:
.. code-block::
Buffer foo.el modified; kill anyway? (yes or no)
Para responder, debe escribir ``yes`` o ``no`` en el minibuffer, seguido de :kbd:`RETURN` (``RET``).
Con ambos tipos de consulta sí o no, el minibúfer se comporta como se describe en las secciones anteriores; puede recentrar la ventana seleccionada con :kbd:`Ctrl`-:kbd:`l` (``C-l``), desplazarse por esa ventana (:kbd:`Ctrl`-:kbd:`v` (``C-v``) o :kbd:`AvPag` (``AvPág``) se desplaza hacia delante, :kbd:`Alt`-:kbd:`v` (``M-v``) o :kbd:`RePág` (``RePág``) se desplaza hacia atrás), se cambia a otra ventana con :kbd:`Ctrl`-:kbd:`x` :kbd:`o` (``C-x o``), utilizar los comandos de historial :kbd:`Alt`-:kbd:`p` (``M-p``) y :kbd:`Alt`-:kbd:`n` (``M-n``), etc. Escriba :kbd:`Ctrl`-:kbd:`g` (``C-g``) para salir de la consulta y abandonar el minibuffer y el comando de consulta (**consulte Salir y Abortar**).

View File

@ -1,43 +0,0 @@
10 Ejecutar Comandos por Nombre
===============================
Cada comando de Emacs tiene un nombre que puede usar para lanzarlo. Por conveniencia, muchos comandos también tienen teclas. Puede ejecutar esos comandos pulsando las teclas, o ejecutarlos por su nombre. La mayoría de los comandos de Emacs no tienen atajos de teclado, así que la única forma de ejecutarlos es por nombre. (**Ver Personalización de las Combinaciones de Teclas**, para saber cómo configurarlas).
Por convención, un nombre de comando consiste en una o más palabras, separadas por guiones; por ejemplo, ``auto-fill-mode`` o ``manual-entry``. Los nombres de comandos suelen usar palabras completas en inglés para que sean más fáciles de recordar.
Para ejecutar un comando por nombre, inicie con :kbd:`Alt`-:kbd:`x` (``M-x``), escriba el nombre del comando y termine con :kbd:`RETURN` (``RET``). ``M-x`` usa el minibuffer para leer el nombre de la orden. La cadena ``M-x`` aparece al principio del minibuffer como prompt para recordarle que introduzca el nombre de la orden a ejecutar. ``RET`` sale del minibuffer y ejecuta el comando. Para más información sobre el minibuffer, **véase El Minibuffer**.
Puede usar el completado para introducir el nombre del comando. Por ejemplo, para invocar el comando ``forward-char``, puede escribir
:kbd:`Alt`-:kbd:`x` ``forward-char`` :kbd:`RETURN` (``M-x`` ``forward-char`` ``RET``)
o
:kbd:`Alt`-:kbd:`x` ``forw`` :kbd:`TAB` ``c`` :kbd:`RETURN` (``M-x`` ``forw`` ``TAB`` ``c`` ``RET``)
Tenga en cuenta que ``forward-char`` es el mismo comando que se invoca con la tecla ``C-f``. La existencia de una vinculación de teclas no le impide ejecutar el comando por su nombre.
Cuando ``M-x`` completa los comandos, ignora los que fueron declarados obsoletos en cualquier versión mayor anterior de Emacs; para éstos, tendrá que escribir su nombre completo. Se listan los comandos que fueron marcados como *obsoletos* en la versión actual de Emacs. (Los comandos obsoletos son aquellos para los que existen alternativas más nuevas y mejores, y que están programados para ser eliminados en alguna versión futura de Emacs).
Además, el completado M-x puede excluir comandos que no son relevantes para, y generalmente no pueden funcionar con, el modo mayor del buffer actual (**ver Modos Mayores**) y los modos menores (**ver Modos Menores**). Por defecto, no se excluye ningún comando, pero puede personalizar la opción ``read-extended-command-predicate`` para excluir esos comandos irrelevantes de los resultados de la finalización.
A la inversa, Emacs puede excluir todos los comandos excepto aquellos que son particularmente relevantes para el buffer actual. El comando :kbd:`Alt`-:kbd:`Shift`-:kbd:`s` (``M-S-x`` que significa "meta shift x") funciona igual que ``M-x``, pero en lugar de listar todos (o la mayoría) de los comandos que Emacs conoce, sólo listará los comandos que han sido marcados como "pertenecientes" al modo mayor actual, o a cualquier modo menor habilitado.
Para cancelar ``M-x`` y no ejecutar un comando, teclee :kbd:`Ctrl`-:kbd:`g` (``C-g``) en lugar de introducir el nombre del comando. Volverá al nivel de comandos.
Para pasar un argumento numérico al comando que está invocando con ``M-x``, especifique el argumento numérico antes de ``M-x``. El valor del argumento aparece en el prompt mientras se lee el nombre del comando, y finalmente ``M-x`` pasa el argumento a ese comando. Por ejemplo, para pasar el argumento numérico 42 al comando ``forward-char`` puede escribir :kbd:`Ctrl`-:kbd:`u` :kbd:`4`:kbd:`2` :kbd:`Alt`-:kbd:`x` ``forward-char`` :kbd:`RETURN` (``C-u`` ``42`` ``M-x`` ``forward-char`` ``RET``).
Cuando el comando que ejecuta con ``M-x`` tiene un atajo de teclado, Emacs lo menciona en el área de eco después de ejecutar el comando. Por ejemplo, si teclea :kbd:`Alt`-:kbd.`x` ``forward-word`` (``M-x`` ``forward-word``), el mensaje dice que puede ejecutar el mismo comando tecleando M-f. Puede desactivar estos mensajes estableciendo la variable ``suggest-key-bindings`` en ``nil``. El valor de ``suggest-key-bindings`` también puede ser un número, en cuyo caso Emacs mostrará el enlace durante tantos segundos antes de quitarlo de la pantalla. El comportamiento por defecto es mostrar el enlace durante 2 segundos.
Además, cuando ``suggest-key-bindings`` es distinto de ``nil``, la lista de finalización de ``M-x`` muestra las combinaciones de teclas equivalentes para todos los comandos que las tienen.
Los comandos que no tienen atajos de teclado, aún pueden ser invocados después de teclear menos que su nombre completo en el prompt ``M-x``. Emacs menciona estos atajos en el área de eco si son significativamente más cortos que el nombre completo del comando, y ``extended-command-suggest-shorter`` es distinto de ``nil``. La configuración de ``suggest-key-bindings`` también afecta a estas sugerencias.
En este manual, cuando hablamos de ejecutar un comando por su nombre, a menudo omitimos el ``RET`` que termina el nombre. Así, podríamos decir :kbd:`Alt`-:kbd:`x` ``auto-fill-mode`` (``M-x`` ``auto-fill-mode``) en lugar de :kbd:`Alt`-:kbd:`x` ``auto-fill-mode`` :kbd:`RETURN` (``M-x`` ``auto-fill-mode`` ``RET``). Mencionamos ``RET`` sólo para enfatizar, como cuando el comando va seguido de argumentos.
:kbd:`Alt`-:kbd:`x` (``M-x``) funciona ejecutando el comando ``execute-extended-command``, que se encarga de leer el nombre de otro comando e invocarlo.

View File

@ -1,25 +0,0 @@
Distribución
============
GNU Emacs es *software libre;* esto significa que todo el mundo es libre de usarlo y libre de redistribuirlo bajo ciertas condiciones. Emacs de GNU no es de dominio público; tiene copyright y hay restricciones en su distribución, pero estas restricciones están diseñadas para permitir todo lo que un buen ciudadano cooperador querría hacer. Lo que no está permitido es intentar evitar que otros sigan compartiendo cualquier versión de GNU Emacs que puedan obtener de usted. Las condiciones precisas se encuentran en la Licencia Pública General de GNU que viene con Emacs y que también aparece en este manual [1]_. Ver LICENCIA PÚBLICA GENERAL DE GNU.
Una forma de obtener una copia de GNU Emacs es de otra persona que lo tenga. No necesita pedirnos permiso para hacerlo, ni decírselo a nadie; simplemente cópielo. Si tiene acceso a Internet, puede obtener la última versión de distribución de GNU Emacs por FTP anónimo; vea https://www.gnu.org/software/emacs en nuestro sitio web para más información.
También puede recibir GNU Emacs al comprar un ordenador. Los fabricantes de ordenadores son libres de distribuir copias en los mismos términos que se aplican a todos los demás. Estos términos requieren que le den las fuentes completas, incluyendo cualquier cambio que puedan haber hecho, y que le permitan redistribuir el Emacs de GNU recibido de ellos bajo los términos habituales de la Licencia Pública General. En otras palabras, el programa debe ser libre para Usted cuando lo obtenga, no sólo libre para el fabricante.
Si encuentra útil GNU Emacs, por favor **envíe una donación** a la Free Software Foundation para apoyar nuestro trabajo. Las donaciones a la Free Software Foundation son deducibles de impuestos en los Estados Unidos. Si usa GNU Emacs en su lugar de trabajo, por favor sugiera a la empresa que haga una donación. Para donar, vea `<https://my.fsf.org/donate/>`_. Para otras formas en las que puede ayudar, vea `<https://www.gnu.org/help/help.html>`_.
También vendemos versiones impresas de este manual y de An Introduction to Programming in Emacs Lisp, de Robert J. Chassell. Puede visitar nuestra tienda en línea en `<https://shop.fsf.org/>`_. Los ingresos de las ventas se destinan a apoyar el propósito de la fundación: el desarrollo de nuevo software libre, y mejoras en nuestros programas existentes, incluyendo GNU Emacs.
Si necesita contactarse con la Fundación del Software Libre (Free Software Foundation) vea `<https://www.fsf.org/about/contact/>`_ o escriba a:
::
Free Software Foundation
51 Franklin Street, Fifth Floor
Boston, MA 02110-1301
USA
.. [1] Este manual está cubierto por la Licencia de Documentación Libre de GNU. Esta licencia es similar en espíritu a la Licencia Pública General, pero es más adecuada para la documentación. Véase la Licencia de documentación libre de GNU.

View File

@ -1,64 +0,0 @@
.. GNU/Emacs 28.2 documentation master file, created by
sphinx-quickstart on Fri Oct 27 12:33:18 2023.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Archivo maestro de documentación de Guia Sphinx, creado por sphinx-quickstart
el Thu May 11 20:34:32 2017.
Puede adaptar este archivo completamente a su gusto, pero al menos debe
contener la directiva raíz `toctree`.
Documentación en Español GNU/Emacs 29.1
=======================================
.. toctree::
:maxdepth: 3
:caption: .. Contents::
Emacs es el editor avanzado, extensible, personalizable y autodocumentado. Este manual describe cómo editar con Emacs y algunas formas de personalizarlo; corresponde a la versión 29.1 de GNU Emacs.
| El sitio web de GNU Emacs está en https://www.gnu.org/software/emacs/.
| Para ver este manual en otros formatos, pulse `aquí <https://www.gnu.org/software/emacs/manual/emacs.html>`_.
| También puede adquirir una copia impresa en la `tienda <https://shop.fsf.org/product/emacs-manual/>`_ de la FSF.
Para información sobre cómo extender Emacs, vea `Emacs Lisp <https://www.gnu.org/software/emacs/manual/html_node/elisp/index.html#Top>`_ en The Emacs Lisp Reference Manual.
Este es el Manual de GNU Emacs, actualizado para la versión 29.1 de Emacs.
Copyright © 1985-1987, 1993-2023 Free Software Foundation, Inc.
Se concede permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia de Documentación Libre de GNU, Versión 1.3 o cualquier versión posterior
publicada por la Free Software Foundation; siendo las Secciones Invariantes "El Manifiesto de GNU", "Distribución" y "LICENCIA PÚBLICA GENERAL DE GNU", siendo los Textos de Cubierta
Delantera "Un Manual de GNU", y con los Textos de Cubierta Trasera como en (a) más abajo. Se incluye una copia de la licencia en la sección titulada "GNU Free Documentation License".
\(a\) El texto de contraportada de la FSF es: "Usted tiene la libertad de copiar y modificar este manual GNU. Comprar copias a la FSF la apoya en el desarrollo de GNU y en la promoción
de la libertad del software."
Índice de Contenidos
--------------------
.. * :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. toctree::
distribucion
introduccion
01_OrgPant
02_TipoEntrUsuario
03_Teclas
04_EntrDelRaton
05_TeclasComands
06_EntrarEnEmacs
07_SalirDeEmacs
CapConSecciones/08_ComBasicEdic
CapConSecciones/09_ElMinibufer
CapConSecciones/10_EjecutarComndPorNombre
CapConSecciones/11_Ayuda
CapConSecciones/12_LaMarca-y-LaRegion
CapConSecciones/13_MatarMoverTxt

View File

@ -1,14 +0,0 @@
Introducción
============
Está leyendo sobre GNU Emacs, la encarnación GNU del avanzado, autodocumentado, personalizable y extensible editor Emacs. (La ``G`` de GNU (GNU no es Unix) no es muda).
Llamamos *avanzado* a Emacs porque puede hacer mucho más que una simple inserción y borrado de texto. Puede controlar subprocesos, sangrar programas automáticamente, mostrar múltiples archivos a la vez, editar archivos remotos como si fueran archivos locales, y mucho más. Los comandos de edición de Emacs funcionan en términos de caracteres, palabras, líneas, frases, párrafos y páginas, así como de expresiones y comentarios en varios lenguajes de programación.
*Autodocumentado* significa que en cualquier momento puede utilizar comandos especiales, conocidos como *comandos de ayuda*, para averiguar cuáles son sus opciones, o para averiguar qué hace
cualquier comando, o para encontrar todos los comandos que pertenecen a un tema determinado. **Véase Ayuda** .
*Personalizable* significa que puede alterar fácilmente el comportamiento de los comandos de Emacs de maneras sencillas. Por ejemplo, si usa un lenguaje de programación en el que los comentarios empiezan con ``<**`` y terminan con ``**>``, puede decirle a los comandos de manipulación de comentarios de Emacs que usen esas cadenas (**vea Manipulación de comentarios**). Por poner otro ejemplo, puede reenlazar los comandos básicos de movimiento del cursor (arriba, abajo, izquierda y derecha) a cualquier tecla del teclado que te resulte cómoda. **Véase Personalización**.
*Extensible* significa que puede ir más allá de la simple personalización y crear comandos completamente nuevos. Los nuevos comandos son simplemente programas escritos en lenguaje Lisp, que son ejecutados por el propio intérprete Lisp de Emacs. Los comandos existentes pueden incluso redefinirse en mitad de una sesión de edición, sin tener que reiniciar Emacs. La mayoría de los comandos de edición en Emacs están escritos en Lisp; las pocas excepciones podrían haber sido escritas en Lisp pero usan C en su lugar por eficiencia. Escribir una extensión es programar, pero los no programadores pueden usarla después. **Ver Prefacio en Una Introducción a la Programación en Emacs Lisp**, si quiere aprender programación en Emacs Lisp.

View File

@ -1,123 +0,0 @@
/* Compatability shim for jQuery and underscores.js.
*
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};
/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;
/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};
/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}

View File

@ -1,294 +0,0 @@
/**@constructor*/
BaseStemmer = function() {
this.setCurrent = function(value) {
this.current = value;
this.cursor = 0;
this.limit = this.current.length;
this.limit_backward = 0;
this.bra = this.cursor;
this.ket = this.limit;
};
this.getCurrent = function() {
return this.current;
};
this.copy_from = function(other) {
this.current = other.current;
this.cursor = other.cursor;
this.limit = other.limit;
this.limit_backward = other.limit_backward;
this.bra = other.bra;
this.ket = other.ket;
};
this.in_grouping = function(s, min, max) {
if (this.cursor >= this.limit) return false;
var ch = this.current.charCodeAt(this.cursor);
if (ch > max || ch < min) return false;
ch -= min;
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
this.cursor++;
return true;
};
this.in_grouping_b = function(s, min, max) {
if (this.cursor <= this.limit_backward) return false;
var ch = this.current.charCodeAt(this.cursor - 1);
if (ch > max || ch < min) return false;
ch -= min;
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
this.cursor--;
return true;
};
this.out_grouping = function(s, min, max) {
if (this.cursor >= this.limit) return false;
var ch = this.current.charCodeAt(this.cursor);
if (ch > max || ch < min) {
this.cursor++;
return true;
}
ch -= min;
if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
this.cursor++;
return true;
}
return false;
};
this.out_grouping_b = function(s, min, max) {
if (this.cursor <= this.limit_backward) return false;
var ch = this.current.charCodeAt(this.cursor - 1);
if (ch > max || ch < min) {
this.cursor--;
return true;
}
ch -= min;
if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
this.cursor--;
return true;
}
return false;
};
this.eq_s = function(s)
{
if (this.limit - this.cursor < s.length) return false;
if (this.current.slice(this.cursor, this.cursor + s.length) != s)
{
return false;
}
this.cursor += s.length;
return true;
};
this.eq_s_b = function(s)
{
if (this.cursor - this.limit_backward < s.length) return false;
if (this.current.slice(this.cursor - s.length, this.cursor) != s)
{
return false;
}
this.cursor -= s.length;
return true;
};
/** @return {number} */ this.find_among = function(v)
{
var i = 0;
var j = v.length;
var c = this.cursor;
var l = this.limit;
var common_i = 0;
var common_j = 0;
var first_key_inspected = false;
while (true)
{
var k = i + ((j - i) >>> 1);
var diff = 0;
var common = common_i < common_j ? common_i : common_j; // smaller
// w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
var w = v[k];
var i2;
for (i2 = common; i2 < w[0].length; i2++)
{
if (c + common == l)
{
diff = -1;
break;
}
diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
if (diff != 0) break;
common++;
}
if (diff < 0)
{
j = k;
common_j = common;
}
else
{
i = k;
common_i = common;
}
if (j - i <= 1)
{
if (i > 0) break; // v->s has been inspected
if (j == i) break; // only one item in v
// - but now we need to go round once more to get
// v->s inspected. This looks messy, but is actually
// the optimal approach.
if (first_key_inspected) break;
first_key_inspected = true;
}
}
do {
var w = v[i];
if (common_i >= w[0].length)
{
this.cursor = c + w[0].length;
if (w.length < 4) return w[2];
var res = w[3](this);
this.cursor = c + w[0].length;
if (res) return w[2];
}
i = w[1];
} while (i >= 0);
return 0;
};
// find_among_b is for backwards processing. Same comments apply
this.find_among_b = function(v)
{
var i = 0;
var j = v.length
var c = this.cursor;
var lb = this.limit_backward;
var common_i = 0;
var common_j = 0;
var first_key_inspected = false;
while (true)
{
var k = i + ((j - i) >> 1);
var diff = 0;
var common = common_i < common_j ? common_i : common_j;
var w = v[k];
var i2;
for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
{
if (c - common == lb)
{
diff = -1;
break;
}
diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
if (diff != 0) break;
common++;
}
if (diff < 0)
{
j = k;
common_j = common;
}
else
{
i = k;
common_i = common;
}
if (j - i <= 1)
{
if (i > 0) break;
if (j == i) break;
if (first_key_inspected) break;
first_key_inspected = true;
}
}
do {
var w = v[i];
if (common_i >= w[0].length)
{
this.cursor = c - w[0].length;
if (w.length < 4) return w[2];
var res = w[3](this);
this.cursor = c - w[0].length;
if (res) return w[2];
}
i = w[1];
} while (i >= 0);
return 0;
};
/* to replace chars between c_bra and c_ket in this.current by the
* chars in s.
*/
this.replace_s = function(c_bra, c_ket, s)
{
var adjustment = s.length - (c_ket - c_bra);
this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
this.limit += adjustment;
if (this.cursor >= c_ket) this.cursor += adjustment;
else if (this.cursor > c_bra) this.cursor = c_bra;
return adjustment;
};
this.slice_check = function()
{
if (this.bra < 0 ||
this.bra > this.ket ||
this.ket > this.limit ||
this.limit > this.current.length)
{
return false;
}
return true;
};
this.slice_from = function(s)
{
var result = false;
if (this.slice_check())
{
this.replace_s(this.bra, this.ket, s);
result = true;
}
return result;
};
this.slice_del = function()
{
return this.slice_from("");
};
this.insert = function(c_bra, c_ket, s)
{
var adjustment = this.replace_s(c_bra, c_ket, s);
if (c_bra <= this.bra) this.bra += adjustment;
if (c_bra <= this.ket) this.ket += adjustment;
};
this.slice_to = function()
{
var result = '';
if (this.slice_check())
{
result = this.current.slice(this.bra, this.ket);
}
return result;
};
this.assign_to = function()
{
return this.current.slice(0, this.limit);
};
};

View File

@ -1,925 +0,0 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
div.clearer {
clear: both;
}
div.section::after {
display: block;
content: '';
clear: left;
}
/* -- relbar ---------------------------------------------------------------- */
div.related {
width: 100%;
font-size: 90%;
}
div.related h3 {
display: none;
}
div.related ul {
margin: 0;
padding: 0 0 0 10px;
list-style: none;
}
div.related li {
display: inline;
}
div.related li.right {
float: right;
margin-right: 5px;
}
/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
padding: 10px 5px 0 10px;
}
div.sphinxsidebar {
float: left;
width: 230px;
margin-left: -100%;
font-size: 90%;
word-wrap: break-word;
overflow-wrap : break-word;
}
div.sphinxsidebar ul {
list-style: none;
}
div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
margin-left: 20px;
list-style: square;
}
div.sphinxsidebar ul ul {
margin-top: 0;
margin-bottom: 0;
}
div.sphinxsidebar form {
margin-top: 10px;
}
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
}
div.sphinxsidebar #searchbox form.search {
overflow: hidden;
}
div.sphinxsidebar #searchbox input[type="text"] {
float: left;
width: 80%;
padding: 0.25em;
box-sizing: border-box;
}
div.sphinxsidebar #searchbox input[type="submit"] {
float: left;
width: 20%;
border-left: none;
padding: 0.25em;
box-sizing: border-box;
}
img {
border: 0;
max-width: 100%;
}
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
}
ul.search li a {
font-weight: bold;
}
ul.search li p.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
}
ul.keywordmatches li.goodmatch a {
font-weight: bold;
}
/* -- index page ------------------------------------------------------------ */
table.contentstable {
width: 90%;
margin-left: auto;
margin-right: auto;
}
table.contentstable p.biglink {
line-height: 150%;
}
a.biglink {
font-size: 1.3em;
}
span.linkdescr {
font-style: italic;
padding-top: 5px;
font-size: 90%;
}
/* -- general index --------------------------------------------------------- */
table.indextable {
width: 100%;
}
table.indextable td {
text-align: left;
vertical-align: top;
}
table.indextable ul {
margin-top: 0;
margin-bottom: 0;
list-style-type: none;
}
table.indextable > tbody > tr > td > ul {
padding-left: 0em;
}
table.indextable tr.pcap {
height: 10px;
}
table.indextable tr.cap {
margin-top: 10px;
background-color: #f2f2f2;
}
img.toggler {
margin-right: 3px;
margin-top: 3px;
cursor: pointer;
}
div.modindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
div.genindex-jumpbox {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
margin: 1em 0 1em 0;
padding: 0.4em;
}
/* -- domain module index --------------------------------------------------- */
table.modindextable td {
padding: 2px;
border-collapse: collapse;
}
/* -- general body styles --------------------------------------------------- */
div.body {
min-width: 360px;
max-width: 800px;
}
div.body p, div.body dd, div.body li, div.body blockquote {
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
a.headerlink {
visibility: hidden;
}
a:visited {
color: #551A8B;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible;
}
div.body p.caption {
text-align: inherit;
}
div.body td {
text-align: left;
}
.first {
margin-top: 0 !important;
}
p.rubric {
margin-top: 30px;
font-weight: bold;
}
img.align-left, figure.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, figure.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, figure.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
img.align-default, figure.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-default {
text-align: center;
}
.align-right {
text-align: right;
}
/* -- sidebars -------------------------------------------------------------- */
div.sidebar,
aside.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px;
background-color: #ffe;
width: 40%;
float: right;
clear: right;
overflow-x: auto;
}
p.sidebar-title {
font-weight: bold;
}
nav.contents,
aside.topic,
div.admonition, div.topic, blockquote {
clear: left;
}
/* -- topics ---------------------------------------------------------------- */
nav.contents,
aside.topic,
div.topic {
border: 1px solid #ccc;
padding: 7px;
margin: 10px 0 10px 0;
}
p.topic-title {
font-size: 1.1em;
font-weight: bold;
margin-top: 10px;
}
/* -- admonitions ----------------------------------------------------------- */
div.admonition {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
}
div.admonition dt {
font-weight: bold;
}
p.admonition-title {
margin: 0px 10px 5px 0px;
font-weight: bold;
}
div.body p.centered {
text-align: center;
margin-top: 25px;
}
/* -- content of sidebars/topics/admonitions -------------------------------- */
div.sidebar > :last-child,
aside.sidebar > :last-child,
nav.contents > :last-child,
aside.topic > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}
div.sidebar::after,
aside.sidebar::after,
nav.contents::after,
aside.topic::after,
div.topic::after,
div.admonition::after,
blockquote::after {
display: block;
content: '';
clear: both;
}
/* -- tables ---------------------------------------------------------------- */
table.docutils {
margin-top: 10px;
margin-bottom: 10px;
border: 0;
border-collapse: collapse;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
table.align-default {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom: 1px solid #aaa;
}
th {
text-align: left;
padding-right: 5px;
}
table.citation {
border-left: solid 1px gray;
margin-left: 1px;
}
table.citation td {
border-bottom: none;
}
th > :first-child,
td > :first-child {
margin-top: 0px;
}
th > :last-child,
td > :last-child {
margin-bottom: 0px;
}
/* -- figures --------------------------------------------------------------- */
div.figure, figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption, figcaption {
padding: 0.3em;
}
div.figure p.caption span.caption-number,
figcaption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text,
figcaption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
table.field-list td, table.field-list th {
border: 0 !important;
}
.field-list ul {
margin: 0;
padding-left: 1em;
}
.field-list p {
margin: 0;
}
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
/* -- hlist styles ---------------------------------------------------------- */
table.hlist {
margin: 1em 0;
}
table.hlist td {
vertical-align: top;
}
/* -- object description styles --------------------------------------------- */
.sig {
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
}
.sig-name, code.descname {
background-color: transparent;
font-weight: bold;
}
.sig-name {
font-size: 1.1em;
}
code.descname {
font-size: 1.2em;
}
.sig-prename, code.descclassname {
background-color: transparent;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.sig-param.n {
font-style: italic;
}
/* C++ specific styling */
.sig-inline.c-texpr,
.sig-inline.cpp-texpr {
font-family: unset;
}
.sig.c .k, .sig.c .kt,
.sig.cpp .k, .sig.cpp .kt {
color: #0033B3;
}
.sig.c .m,
.sig.cpp .m {
color: #1750EB;
}
.sig.c .s, .sig.c .sc,
.sig.cpp .s, .sig.cpp .sc {
color: #067D17;
}
/* -- other body styles ----------------------------------------------------- */
ol.arabic {
list-style: decimal;
}
ol.loweralpha {
list-style: lower-alpha;
}
ol.upperalpha {
list-style: upper-alpha;
}
ol.lowerroman {
list-style: lower-roman;
}
ol.upperroman {
list-style: upper-roman;
}
:not(li) > ol > li:first-child > :first-child,
:not(li) > ul > li:first-child > :first-child {
margin-top: 0px;
}
:not(li) > ol > li:last-child > :last-child,
:not(li) > ul > li:last-child > :last-child {
margin-bottom: 0px;
}
ol.simple ol p,
ol.simple ul p,
ul.simple ol p,
ul.simple ul p {
margin-top: 0;
}
ol.simple > li:not(:first-child) > p,
ul.simple > li:not(:first-child) > p {
margin-top: 0;
}
ol.simple p,
ul.simple p {
margin-bottom: 0;
}
aside.footnote > span,
div.citation > span {
float: left;
}
aside.footnote > span:last-of-type,
div.citation > span:last-of-type {
padding-right: 0.5em;
}
aside.footnote > p {
margin-left: 2em;
}
div.citation > p {
margin-left: 4em;
}
aside.footnote > p:last-of-type,
div.citation > p:last-of-type {
margin-bottom: 0em;
}
aside.footnote > p:last-of-type:after,
div.citation > p:last-of-type:after {
content: "";
clear: both;
}
dl.field-list {
display: grid;
grid-template-columns: fit-content(30%) auto;
}
dl.field-list > dt {
font-weight: bold;
word-break: break-word;
padding-left: 0.5em;
padding-right: 5px;
}
dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
margin-left: 0em;
margin-bottom: 0em;
}
dl {
margin-bottom: 15px;
}
dd > :first-child {
margin-top: 0px;
}
dd ul, dd table {
margin-bottom: 10px;
}
dd {
margin-top: 3px;
margin-bottom: 10px;
margin-left: 30px;
}
.sig dd {
margin-top: 0px;
margin-bottom: 0px;
}
.sig dl {
margin-top: 0px;
margin-bottom: 0px;
}
dl > dd:last-child,
dl > dd:last-child > :last-child {
margin-bottom: 0;
}
dt:target, span.highlighted {
background-color: #fbe54e;
}
rect.highlighted {
fill: #fbe54e;
}
dl.glossary dt {
font-weight: bold;
font-size: 1.1em;
}
.versionmodified {
font-style: italic;
}
.system-message {
background-color: #fda;
padding: 5px;
border: 3px solid red;
}
.footnote:target {
background-color: #ffa;
}
.line-block {
display: block;
margin-top: 1em;
margin-bottom: 1em;
}
.line-block .line-block {
margin-top: 0;
margin-bottom: 0;
margin-left: 1.5em;
}
.guilabel, .menuselection {
font-family: sans-serif;
}
.accelerator {
text-decoration: underline;
}
.classifier {
font-style: oblique;
}
.classifier:before {
font-style: normal;
margin: 0 0.5em;
content: ":";
display: inline-block;
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
}
.translated {
background-color: rgba(207, 255, 207, 0.2)
}
.untranslated {
background-color: rgba(255, 207, 207, 0.2)
}
/* -- code displays --------------------------------------------------------- */
pre {
overflow: auto;
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
pre, div[class*="highlight-"] {
clear: both;
}
span.pre {
-moz-hyphens: none;
-ms-hyphens: none;
-webkit-hyphens: none;
hyphens: none;
white-space: nowrap;
}
div[class*="highlight-"] {
margin: 1em 0;
}
td.linenos pre {
border: 0;
background-color: transparent;
color: #aaa;
}
table.highlighttable {
display: block;
}
table.highlighttable tbody {
display: block;
}
table.highlighttable tr {
display: flex;
}
table.highlighttable td {
margin: 0;
padding: 0;
}
table.highlighttable td.linenos {
padding-right: 0.5em;
}
table.highlighttable td.code {
flex: 1;
overflow: hidden;
}
.highlight .hll {
display: block;
}
div.highlight pre,
table.highlighttable pre {
margin: 0;
}
div.code-block-caption + div {
margin-top: 0;
}
div.code-block-caption {
margin-top: 1em;
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
table.highlighttable td.linenos,
span.linenos,
div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
-webkit-user-select: text; /* Safari fallback only */
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
margin: 1em 0;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
}
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
background-color: transparent;
}
.viewcode-link {
float: right;
}
.viewcode-back {
float: right;
font-family: sans-serif;
}
div.viewcode-block:target {
margin: -1px -10px;
padding: 0 10px;
}
/* -- math display ---------------------------------------------------------- */
img.math {
vertical-align: middle;
}
div.body div.math p {
text-align: center;
}
span.eqno {
float: right;
}
span.eqno a.headerlink {
position: absolute;
z-index: 1;
}
div.math:hover a.headerlink {
visibility: visible;
}
/* -- printout stylesheet --------------------------------------------------- */
@media print {
div.document,
div.documentwrapper,
div.bodywrapper {
margin: 0 !important;
width: 100%;
}
div.sphinxsidebar,
div.related,
div.footer,
#top-link {
display: none;
}
}

View File

@ -1 +0,0 @@
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,156 +0,0 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
const _ready = (callback) => {
if (document.readyState !== "loading") {
callback();
} else {
document.addEventListener("DOMContentLoaded", callback);
}
};
/**
* Small JavaScript module for the documentation.
*/
const Documentation = {
init: () => {
Documentation.initDomainIndexTable();
Documentation.initOnKeyListeners();
},
/**
* i18n support
*/
TRANSLATIONS: {},
PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
LOCALE: "unknown",
// gettext and ngettext don't access this so that the functions
// can safely bound to a different name (_ = Documentation.gettext)
gettext: (string) => {
const translated = Documentation.TRANSLATIONS[string];
switch (typeof translated) {
case "undefined":
return string; // no translation
case "string":
return translated; // translation exists
default:
return translated[0]; // (singular, plural) translation tuple exists
}
},
ngettext: (singular, plural, n) => {
const translated = Documentation.TRANSLATIONS[singular];
if (typeof translated !== "undefined")
return translated[Documentation.PLURAL_EXPR(n)];
return n === 1 ? singular : plural;
},
addTranslations: (catalog) => {
Object.assign(Documentation.TRANSLATIONS, catalog.messages);
Documentation.PLURAL_EXPR = new Function(
"n",
`return (${catalog.plural_expr})`
);
Documentation.LOCALE = catalog.locale;
},
/**
* helper function to focus on search bar
*/
focusSearchBar: () => {
document.querySelectorAll("input[name=q]")[0]?.focus();
},
/**
* Initialise the domain index toggle buttons
*/
initDomainIndexTable: () => {
const toggler = (el) => {
const idNumber = el.id.substr(7);
const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
if (el.src.substr(-9) === "minus.png") {
el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
toggledRows.forEach((el) => (el.style.display = "none"));
} else {
el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
toggledRows.forEach((el) => (el.style.display = ""));
}
};
const togglerElements = document.querySelectorAll("img.toggler");
togglerElements.forEach((el) =>
el.addEventListener("click", (event) => toggler(event.currentTarget))
);
togglerElements.forEach((el) => (el.style.display = ""));
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
},
initOnKeyListeners: () => {
// only install a listener if it is really needed
if (
!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
)
return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
if (!event.shiftKey) {
switch (event.key) {
case "ArrowLeft":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const prevLink = document.querySelector('link[rel="prev"]');
if (prevLink && prevLink.href) {
window.location.href = prevLink.href;
event.preventDefault();
}
break;
case "ArrowRight":
if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
const nextLink = document.querySelector('link[rel="next"]');
if (nextLink && nextLink.href) {
window.location.href = nextLink.href;
event.preventDefault();
}
break;
}
}
// some keyboard layouts may need Shift to get /
switch (event.key) {
case "/":
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
Documentation.focusSearchBar();
event.preventDefault();
}
});
},
};
// quick alias for translations
const _ = Documentation.gettext;
_ready(Documentation.init);

View File

@ -1,13 +0,0 @@
const DOCUMENTATION_OPTIONS = {
VERSION: '0.01',
LANGUAGE: 'es',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true,
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 B

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});

View File

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);

View File

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

View File

@ -1,75 +0,0 @@
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #9C6500 } /* Comment.Preproc */
.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #E40000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #008400 } /* Generic.Inserted */
.highlight .go { color: #717171 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #687822 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #767600 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */

View File

@ -1,574 +0,0 @@
/*
* searchtools.js
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
/**
* Simple result scoring code.
*/
if (typeof Scorer === "undefined") {
var Scorer = {
// Implement the following function to further tweak the score for each result
// The function takes a result array [docname, title, anchor, descr, score, filename]
// and returns the new score.
/*
score: result => {
const [docname, title, anchor, descr, score, filename] = result
return score
},
*/
// query matches the full name of an object
objNameMatch: 11,
// or matches in the last dotted part of the object name
objPartialMatch: 6,
// Additive scores depending on the priority of the object
objPrio: {
0: 15, // used to be importantResults
1: 5, // used to be objectResults
2: -5, // used to be unimportantResults
},
// Used when the priority is not in the mapping.
objPrioDefault: 0,
// query found in title
title: 15,
partialTitle: 7,
// query found in terms
term: 5,
partialTerm: 2,
};
}
const _removeChildren = (element) => {
while (element && element.lastChild) element.removeChild(element.lastChild);
};
/**
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
*/
const _escapeRegExp = (string) =>
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
const _displayItem = (item, searchTerms, highlightTerms) => {
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
const contentRoot = document.documentElement.dataset.content_root;
const [docName, title, anchor, descr, score, _filename] = item;
let listItem = document.createElement("li");
let requestUrl;
let linkUrl;
if (docBuilder === "dirhtml") {
// dirhtml builder
let dirname = docName + "/";
if (dirname.match(/\/index\/$/))
dirname = dirname.substring(0, dirname.length - 6);
else if (dirname === "index/") dirname = "";
requestUrl = contentRoot + dirname;
linkUrl = requestUrl;
} else {
// normal html builders
requestUrl = contentRoot + docName + docFileSuffix;
linkUrl = docName + docLinkSuffix;
}
let linkEl = listItem.appendChild(document.createElement("a"));
linkEl.href = linkUrl + anchor;
linkEl.dataset.score = score;
linkEl.innerHTML = title;
if (descr) {
listItem.appendChild(document.createElement("span")).innerHTML =
" (" + descr + ")";
// highlight search terms in the description
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
}
else if (showSearchSummary)
fetch(requestUrl)
.then((responseData) => responseData.text())
.then((data) => {
if (data)
listItem.appendChild(
Search.makeSearchSummary(data, searchTerms)
);
// highlight search terms in the summary
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
});
Search.output.appendChild(listItem);
};
const _finishSearch = (resultCount) => {
Search.stopPulse();
Search.title.innerText = _("Search Results");
if (!resultCount)
Search.status.innerText = Documentation.gettext(
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
);
else
Search.status.innerText = _(
`Search finished, found ${resultCount} page(s) matching the search query.`
);
};
const _displayNextItem = (
results,
resultCount,
searchTerms,
highlightTerms,
) => {
// results left, load the summary and display it
// this is intended to be dynamic (don't sub resultsCount)
if (results.length) {
_displayItem(results.pop(), searchTerms, highlightTerms);
setTimeout(
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
5
);
}
// search finished, update title and status message
else _finishSearch(resultCount);
};
/**
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
* custom function per language.
*
* The regular expression works by splitting the string on consecutive characters
* that are not Unicode letters, numbers, underscores, or emoji characters.
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
*/
if (typeof splitQuery === "undefined") {
var splitQuery = (query) => query
.split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
.filter(term => term) // remove remaining empty strings
}
/**
* Search Module
*/
const Search = {
_index: null,
_queued_query: null,
_pulse_status: -1,
htmlToText: (htmlString) => {
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
const docContent = htmlElement.querySelector('[role="main"]');
if (docContent !== undefined) return docContent.textContent;
console.warn(
"Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
);
return "";
},
init: () => {
const query = new URLSearchParams(window.location.search).get("q");
document
.querySelectorAll('input[name="q"]')
.forEach((el) => (el.value = query));
if (query) Search.performSearch(query);
},
loadIndex: (url) =>
(document.body.appendChild(document.createElement("script")).src = url),
setIndex: (index) => {
Search._index = index;
if (Search._queued_query !== null) {
const query = Search._queued_query;
Search._queued_query = null;
Search.query(query);
}
},
hasIndex: () => Search._index !== null,
deferQuery: (query) => (Search._queued_query = query),
stopPulse: () => (Search._pulse_status = -1),
startPulse: () => {
if (Search._pulse_status >= 0) return;
const pulse = () => {
Search._pulse_status = (Search._pulse_status + 1) % 4;
Search.dots.innerText = ".".repeat(Search._pulse_status);
if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
};
pulse();
},
/**
* perform a search for something (or wait until index is loaded)
*/
performSearch: (query) => {
// create the required interface elements
const searchText = document.createElement("h2");
searchText.textContent = _("Searching");
const searchSummary = document.createElement("p");
searchSummary.classList.add("search-summary");
searchSummary.innerText = "";
const searchList = document.createElement("ul");
searchList.classList.add("search");
const out = document.getElementById("search-results");
Search.title = out.appendChild(searchText);
Search.dots = Search.title.appendChild(document.createElement("span"));
Search.status = out.appendChild(searchSummary);
Search.output = out.appendChild(searchList);
const searchProgress = document.getElementById("search-progress");
// Some themes don't use the search progress node
if (searchProgress) {
searchProgress.innerText = _("Preparing search...");
}
Search.startPulse();
// index already loaded, the browser was quick!
if (Search.hasIndex()) Search.query(query);
else Search.deferQuery(query);
},
/**
* execute search (requires search index to be loaded)
*/
query: (query) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const allTitles = Search._index.alltitles;
const indexEntries = Search._index.indexentries;
// stem the search terms and add them to the correct list
const stemmer = new Stemmer();
const searchTerms = new Set();
const excludedTerms = new Set();
const highlightTerms = new Set();
const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
splitQuery(query.trim()).forEach((queryTerm) => {
const queryTermLower = queryTerm.toLowerCase();
// maybe skip this "word"
// stopwords array is from language_data.js
if (
stopwords.indexOf(queryTermLower) !== -1 ||
queryTerm.match(/^\d+$/)
)
return;
// stem the word
let word = stemmer.stemWord(queryTermLower);
// select the correct list
if (word[0] === "-") excludedTerms.add(word.substr(1));
else {
searchTerms.add(word);
highlightTerms.add(queryTermLower);
}
});
if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
}
// console.debug("SEARCH: searching for:");
// console.info("required: ", [...searchTerms]);
// console.info("excluded: ", [...excludedTerms]);
// array of [docname, title, anchor, descr, score, filename]
let results = [];
_removeChildren(document.getElementById("search-progress"));
const queryLower = query.toLowerCase();
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
results.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
id !== null ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// search for explicit entries in index directives
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
for (const [file, id] of foundEntries) {
let score = Math.round(100 * queryLower.length / entry.length)
results.push([
docNames[file],
titles[file],
id ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// lookup as object
objectTerms.forEach((term) =>
results.push(...Search.performObjectSearch(term, objectTerms))
);
// lookup as search terms in fulltext
results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
// let the scorer override scores with a custom scoring function
if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
// now sort the results by score (in opposite order of appearance, since the
// display function below uses pop() to retrieve items) and then
// alphabetically
results.sort((a, b) => {
const leftScore = a[4];
const rightScore = b[4];
if (leftScore === rightScore) {
// same score: sort alphabetically
const leftTitle = a[1].toLowerCase();
const rightTitle = b[1].toLowerCase();
if (leftTitle === rightTitle) return 0;
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
}
return leftScore > rightScore ? 1 : -1;
});
// remove duplicate search results
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
let seen = new Set();
results = results.reverse().reduce((acc, result) => {
let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
if (!seen.has(resultStr)) {
acc.push(result);
seen.add(resultStr);
}
return acc;
}, []);
results = results.reverse();
// for debugging
//Search.lastresults = results.slice(); // a copy
// console.info("search results:", Search.lastresults);
// print the results
_displayNextItem(results, results.length, searchTerms, highlightTerms);
},
/**
* search for object names
*/
performObjectSearch: (object, objectTerms) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const objects = Search._index.objects;
const objNames = Search._index.objnames;
const titles = Search._index.titles;
const results = [];
const objectSearchCallback = (prefix, match) => {
const name = match[4]
const fullname = (prefix ? prefix + "." : "") + name;
const fullnameLower = fullname.toLowerCase();
if (fullnameLower.indexOf(object) < 0) return;
let score = 0;
const parts = fullnameLower.split(".");
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullnameLower === object || parts.slice(-1)[0] === object)
score += Scorer.objNameMatch;
else if (parts.slice(-1)[0].indexOf(object) > -1)
score += Scorer.objPartialMatch; // matches in last name
const objName = objNames[match[1]][2];
const title = titles[match[0]];
// If more than one term searched for, we require other words to be
// found in the name/title/description
const otherTerms = new Set(objectTerms);
otherTerms.delete(object);
if (otherTerms.size > 0) {
const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
if (
[...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
)
return;
}
let anchor = match[3];
if (anchor === "") anchor = fullname;
else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
const descr = objName + _(", in ") + title;
// add custom score for some objects according to scorer
if (Scorer.objPrio.hasOwnProperty(match[2]))
score += Scorer.objPrio[match[2]];
else score += Scorer.objPrioDefault;
results.push([
docNames[match[0]],
fullname,
"#" + anchor,
descr,
score,
filenames[match[0]],
]);
};
Object.keys(objects).forEach((prefix) =>
objects[prefix].forEach((array) =>
objectSearchCallback(prefix, array)
)
);
return results;
},
/**
* search for full-text terms in the index
*/
performTermsSearch: (searchTerms, excludedTerms) => {
// prepare search
const terms = Search._index.terms;
const titleTerms = Search._index.titleterms;
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const scoreMap = new Map();
const fileMap = new Map();
// perform the search on the required terms
searchTerms.forEach((word) => {
const files = [];
const arr = [
{ files: terms[word], score: Scorer.term },
{ files: titleTerms[word], score: Scorer.title },
];
// add support for partial matches
if (word.length > 2) {
const escapedWord = _escapeRegExp(word);
Object.keys(terms).forEach((term) => {
if (term.match(escapedWord) && !terms[word])
arr.push({ files: terms[term], score: Scorer.partialTerm });
});
Object.keys(titleTerms).forEach((term) => {
if (term.match(escapedWord) && !titleTerms[word])
arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
});
}
// no match but word was a required one
if (arr.every((record) => record.files === undefined)) return;
// found search word in contents
arr.forEach((record) => {
if (record.files === undefined) return;
let recordFiles = record.files;
if (recordFiles.length === undefined) recordFiles = [recordFiles];
files.push(...recordFiles);
// set score for the word in each file
recordFiles.forEach((file) => {
if (!scoreMap.has(file)) scoreMap.set(file, {});
scoreMap.get(file)[word] = record.score;
});
});
// create the mapping
files.forEach((file) => {
if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
fileMap.get(file).push(word);
else fileMap.set(file, [word]);
});
});
// now check if the files don't contain excluded terms
const results = [];
for (const [file, wordList] of fileMap) {
// check if all requirements are matched
// as search terms with length < 3 are discarded
const filteredTermCount = [...searchTerms].filter(
(term) => term.length > 2
).length;
if (
wordList.length !== searchTerms.size &&
wordList.length !== filteredTermCount
)
continue;
// ensure that none of the excluded terms is in the search result
if (
[...excludedTerms].some(
(term) =>
terms[term] === file ||
titleTerms[term] === file ||
(terms[term] || []).includes(file) ||
(titleTerms[term] || []).includes(file)
)
)
break;
// select one (max) score for the file.
const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
// add result to the result list
results.push([
docNames[file],
titles[file],
"",
null,
score,
filenames[file],
]);
}
return results;
},
/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words.
*/
makeSearchSummary: (htmlText, keywords) => {
const text = Search.htmlToText(htmlText);
if (text === "") return null;
const textLower = text.toLowerCase();
const actualStartPosition = [...keywords]
.map((k) => textLower.indexOf(k.toLowerCase()))
.filter((i) => i > -1)
.slice(-1)[0];
const startWithContext = Math.max(actualStartPosition - 120, 0);
const top = startWithContext === 0 ? "" : "...";
const tail = startWithContext + 240 < text.length ? "..." : "";
let summary = document.createElement("p");
summary.classList.add("context");
summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
return summary;
},
};
_ready(Search.init);

View File

@ -1,990 +0,0 @@
// Generated by Snowball 2.1.0 - https://snowballstem.org/
/**@constructor*/
SpanishStemmer = function() {
var base = new BaseStemmer();
/** @const */ var a_0 = [
["", -1, 6],
["\u00E1", 0, 1],
["\u00E9", 0, 2],
["\u00ED", 0, 3],
["\u00F3", 0, 4],
["\u00FA", 0, 5]
];
/** @const */ var a_1 = [
["la", -1, -1],
["sela", 0, -1],
["le", -1, -1],
["me", -1, -1],
["se", -1, -1],
["lo", -1, -1],
["selo", 5, -1],
["las", -1, -1],
["selas", 7, -1],
["les", -1, -1],
["los", -1, -1],
["selos", 10, -1],
["nos", -1, -1]
];
/** @const */ var a_2 = [
["ando", -1, 6],
["iendo", -1, 6],
["yendo", -1, 7],
["\u00E1ndo", -1, 2],
["i\u00E9ndo", -1, 1],
["ar", -1, 6],
["er", -1, 6],
["ir", -1, 6],
["\u00E1r", -1, 3],
["\u00E9r", -1, 4],
["\u00EDr", -1, 5]
];
/** @const */ var a_3 = [
["ic", -1, -1],
["ad", -1, -1],
["os", -1, -1],
["iv", -1, 1]
];
/** @const */ var a_4 = [
["able", -1, 1],
["ible", -1, 1],
["ante", -1, 1]
];
/** @const */ var a_5 = [
["ic", -1, 1],
["abil", -1, 1],
["iv", -1, 1]
];
/** @const */ var a_6 = [
["ica", -1, 1],
["ancia", -1, 2],
["encia", -1, 5],
["adora", -1, 2],
["osa", -1, 1],
["ista", -1, 1],
["iva", -1, 9],
["anza", -1, 1],
["log\u00EDa", -1, 3],
["idad", -1, 8],
["able", -1, 1],
["ible", -1, 1],
["ante", -1, 2],
["mente", -1, 7],
["amente", 13, 6],
["aci\u00F3n", -1, 2],
["uci\u00F3n", -1, 4],
["ico", -1, 1],
["ismo", -1, 1],
["oso", -1, 1],
["amiento", -1, 1],
["imiento", -1, 1],
["ivo", -1, 9],
["ador", -1, 2],
["icas", -1, 1],
["ancias", -1, 2],
["encias", -1, 5],
["adoras", -1, 2],
["osas", -1, 1],
["istas", -1, 1],
["ivas", -1, 9],
["anzas", -1, 1],
["log\u00EDas", -1, 3],
["idades", -1, 8],
["ables", -1, 1],
["ibles", -1, 1],
["aciones", -1, 2],
["uciones", -1, 4],
["adores", -1, 2],
["antes", -1, 2],
["icos", -1, 1],
["ismos", -1, 1],
["osos", -1, 1],
["amientos", -1, 1],
["imientos", -1, 1],
["ivos", -1, 9]
];
/** @const */ var a_7 = [
["ya", -1, 1],
["ye", -1, 1],
["yan", -1, 1],
["yen", -1, 1],
["yeron", -1, 1],
["yendo", -1, 1],
["yo", -1, 1],
["yas", -1, 1],
["yes", -1, 1],
["yais", -1, 1],
["yamos", -1, 1],
["y\u00F3", -1, 1]
];
/** @const */ var a_8 = [
["aba", -1, 2],
["ada", -1, 2],
["ida", -1, 2],
["ara", -1, 2],
["iera", -1, 2],
["\u00EDa", -1, 2],
["ar\u00EDa", 5, 2],
["er\u00EDa", 5, 2],
["ir\u00EDa", 5, 2],
["ad", -1, 2],
["ed", -1, 2],
["id", -1, 2],
["ase", -1, 2],
["iese", -1, 2],
["aste", -1, 2],
["iste", -1, 2],
["an", -1, 2],
["aban", 16, 2],
["aran", 16, 2],
["ieran", 16, 2],
["\u00EDan", 16, 2],
["ar\u00EDan", 20, 2],
["er\u00EDan", 20, 2],
["ir\u00EDan", 20, 2],
["en", -1, 1],
["asen", 24, 2],
["iesen", 24, 2],
["aron", -1, 2],
["ieron", -1, 2],
["ar\u00E1n", -1, 2],
["er\u00E1n", -1, 2],
["ir\u00E1n", -1, 2],
["ado", -1, 2],
["ido", -1, 2],
["ando", -1, 2],
["iendo", -1, 2],
["ar", -1, 2],
["er", -1, 2],
["ir", -1, 2],
["as", -1, 2],
["abas", 39, 2],
["adas", 39, 2],
["idas", 39, 2],
["aras", 39, 2],
["ieras", 39, 2],
["\u00EDas", 39, 2],
["ar\u00EDas", 45, 2],
["er\u00EDas", 45, 2],
["ir\u00EDas", 45, 2],
["es", -1, 1],
["ases", 49, 2],
["ieses", 49, 2],
["abais", -1, 2],
["arais", -1, 2],
["ierais", -1, 2],
["\u00EDais", -1, 2],
["ar\u00EDais", 55, 2],
["er\u00EDais", 55, 2],
["ir\u00EDais", 55, 2],
["aseis", -1, 2],
["ieseis", -1, 2],
["asteis", -1, 2],
["isteis", -1, 2],
["\u00E1is", -1, 2],
["\u00E9is", -1, 1],
["ar\u00E9is", 64, 2],
["er\u00E9is", 64, 2],
["ir\u00E9is", 64, 2],
["ados", -1, 2],
["idos", -1, 2],
["amos", -1, 2],
["\u00E1bamos", 70, 2],
["\u00E1ramos", 70, 2],
["i\u00E9ramos", 70, 2],
["\u00EDamos", 70, 2],
["ar\u00EDamos", 74, 2],
["er\u00EDamos", 74, 2],
["ir\u00EDamos", 74, 2],
["emos", -1, 1],
["aremos", 78, 2],
["eremos", 78, 2],
["iremos", 78, 2],
["\u00E1semos", 78, 2],
["i\u00E9semos", 78, 2],
["imos", -1, 2],
["ar\u00E1s", -1, 2],
["er\u00E1s", -1, 2],
["ir\u00E1s", -1, 2],
["\u00EDs", -1, 2],
["ar\u00E1", -1, 2],
["er\u00E1", -1, 2],
["ir\u00E1", -1, 2],
["ar\u00E9", -1, 2],
["er\u00E9", -1, 2],
["ir\u00E9", -1, 2],
["i\u00F3", -1, 2]
];
/** @const */ var a_9 = [
["a", -1, 1],
["e", -1, 2],
["o", -1, 1],
["os", -1, 1],
["\u00E1", -1, 1],
["\u00E9", -1, 2],
["\u00ED", -1, 1],
["\u00F3", -1, 1]
];
/** @const */ var /** Array<int> */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10];
var /** number */ I_p2 = 0;
var /** number */ I_p1 = 0;
var /** number */ I_pV = 0;
/** @return {boolean} */
function r_mark_regions() {
I_pV = base.limit;
I_p1 = base.limit;
I_p2 = base.limit;
var /** number */ v_1 = base.cursor;
lab0: {
lab1: {
var /** number */ v_2 = base.cursor;
lab2: {
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab2;
}
lab3: {
var /** number */ v_3 = base.cursor;
lab4: {
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab4;
}
golab5: while(true)
{
lab6: {
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab6;
}
break golab5;
}
if (base.cursor >= base.limit)
{
break lab4;
}
base.cursor++;
}
break lab3;
}
base.cursor = v_3;
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab2;
}
golab7: while(true)
{
lab8: {
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab8;
}
break golab7;
}
if (base.cursor >= base.limit)
{
break lab2;
}
base.cursor++;
}
}
break lab1;
}
base.cursor = v_2;
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab0;
}
lab9: {
var /** number */ v_6 = base.cursor;
lab10: {
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab10;
}
golab11: while(true)
{
lab12: {
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab12;
}
break golab11;
}
if (base.cursor >= base.limit)
{
break lab10;
}
base.cursor++;
}
break lab9;
}
base.cursor = v_6;
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab0;
}
if (base.cursor >= base.limit)
{
break lab0;
}
base.cursor++;
}
}
I_pV = base.cursor;
}
base.cursor = v_1;
var /** number */ v_8 = base.cursor;
lab13: {
golab14: while(true)
{
lab15: {
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab15;
}
break golab14;
}
if (base.cursor >= base.limit)
{
break lab13;
}
base.cursor++;
}
golab16: while(true)
{
lab17: {
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab17;
}
break golab16;
}
if (base.cursor >= base.limit)
{
break lab13;
}
base.cursor++;
}
I_p1 = base.cursor;
golab18: while(true)
{
lab19: {
if (!(base.in_grouping(g_v, 97, 252)))
{
break lab19;
}
break golab18;
}
if (base.cursor >= base.limit)
{
break lab13;
}
base.cursor++;
}
golab20: while(true)
{
lab21: {
if (!(base.out_grouping(g_v, 97, 252)))
{
break lab21;
}
break golab20;
}
if (base.cursor >= base.limit)
{
break lab13;
}
base.cursor++;
}
I_p2 = base.cursor;
}
base.cursor = v_8;
return true;
};
/** @return {boolean} */
function r_postlude() {
var /** number */ among_var;
while(true)
{
var /** number */ v_1 = base.cursor;
lab0: {
base.bra = base.cursor;
among_var = base.find_among(a_0);
if (among_var == 0)
{
break lab0;
}
base.ket = base.cursor;
switch (among_var) {
case 1:
if (!base.slice_from("a"))
{
return false;
}
break;
case 2:
if (!base.slice_from("e"))
{
return false;
}
break;
case 3:
if (!base.slice_from("i"))
{
return false;
}
break;
case 4:
if (!base.slice_from("o"))
{
return false;
}
break;
case 5:
if (!base.slice_from("u"))
{
return false;
}
break;
case 6:
if (base.cursor >= base.limit)
{
break lab0;
}
base.cursor++;
break;
}
continue;
}
base.cursor = v_1;
break;
}
return true;
};
/** @return {boolean} */
function r_RV() {
if (!(I_pV <= base.cursor))
{
return false;
}
return true;
};
/** @return {boolean} */
function r_R1() {
if (!(I_p1 <= base.cursor))
{
return false;
}
return true;
};
/** @return {boolean} */
function r_R2() {
if (!(I_p2 <= base.cursor))
{
return false;
}
return true;
};
/** @return {boolean} */
function r_attached_pronoun() {
var /** number */ among_var;
base.ket = base.cursor;
if (base.find_among_b(a_1) == 0)
{
return false;
}
base.bra = base.cursor;
among_var = base.find_among_b(a_2);
if (among_var == 0)
{
return false;
}
if (!r_RV())
{
return false;
}
switch (among_var) {
case 1:
base.bra = base.cursor;
if (!base.slice_from("iendo"))
{
return false;
}
break;
case 2:
base.bra = base.cursor;
if (!base.slice_from("ando"))
{
return false;
}
break;
case 3:
base.bra = base.cursor;
if (!base.slice_from("ar"))
{
return false;
}
break;
case 4:
base.bra = base.cursor;
if (!base.slice_from("er"))
{
return false;
}
break;
case 5:
base.bra = base.cursor;
if (!base.slice_from("ir"))
{
return false;
}
break;
case 6:
if (!base.slice_del())
{
return false;
}
break;
case 7:
if (!(base.eq_s_b("u")))
{
return false;
}
if (!base.slice_del())
{
return false;
}
break;
}
return true;
};
/** @return {boolean} */
function r_standard_suffix() {
var /** number */ among_var;
base.ket = base.cursor;
among_var = base.find_among_b(a_6);
if (among_var == 0)
{
return false;
}
base.bra = base.cursor;
switch (among_var) {
case 1:
if (!r_R2())
{
return false;
}
if (!base.slice_del())
{
return false;
}
break;
case 2:
if (!r_R2())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_1 = base.limit - base.cursor;
lab0: {
base.ket = base.cursor;
if (!(base.eq_s_b("ic")))
{
base.cursor = base.limit - v_1;
break lab0;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_1;
break lab0;
}
if (!base.slice_del())
{
return false;
}
}
break;
case 3:
if (!r_R2())
{
return false;
}
if (!base.slice_from("log"))
{
return false;
}
break;
case 4:
if (!r_R2())
{
return false;
}
if (!base.slice_from("u"))
{
return false;
}
break;
case 5:
if (!r_R2())
{
return false;
}
if (!base.slice_from("ente"))
{
return false;
}
break;
case 6:
if (!r_R1())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_2 = base.limit - base.cursor;
lab1: {
base.ket = base.cursor;
among_var = base.find_among_b(a_3);
if (among_var == 0)
{
base.cursor = base.limit - v_2;
break lab1;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_2;
break lab1;
}
if (!base.slice_del())
{
return false;
}
switch (among_var) {
case 1:
base.ket = base.cursor;
if (!(base.eq_s_b("at")))
{
base.cursor = base.limit - v_2;
break lab1;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_2;
break lab1;
}
if (!base.slice_del())
{
return false;
}
break;
}
}
break;
case 7:
if (!r_R2())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_3 = base.limit - base.cursor;
lab2: {
base.ket = base.cursor;
if (base.find_among_b(a_4) == 0)
{
base.cursor = base.limit - v_3;
break lab2;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_3;
break lab2;
}
if (!base.slice_del())
{
return false;
}
}
break;
case 8:
if (!r_R2())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_4 = base.limit - base.cursor;
lab3: {
base.ket = base.cursor;
if (base.find_among_b(a_5) == 0)
{
base.cursor = base.limit - v_4;
break lab3;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_4;
break lab3;
}
if (!base.slice_del())
{
return false;
}
}
break;
case 9:
if (!r_R2())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_5 = base.limit - base.cursor;
lab4: {
base.ket = base.cursor;
if (!(base.eq_s_b("at")))
{
base.cursor = base.limit - v_5;
break lab4;
}
base.bra = base.cursor;
if (!r_R2())
{
base.cursor = base.limit - v_5;
break lab4;
}
if (!base.slice_del())
{
return false;
}
}
break;
}
return true;
};
/** @return {boolean} */
function r_y_verb_suffix() {
if (base.cursor < I_pV)
{
return false;
}
var /** number */ v_2 = base.limit_backward;
base.limit_backward = I_pV;
base.ket = base.cursor;
if (base.find_among_b(a_7) == 0)
{
base.limit_backward = v_2;
return false;
}
base.bra = base.cursor;
base.limit_backward = v_2;
if (!(base.eq_s_b("u")))
{
return false;
}
if (!base.slice_del())
{
return false;
}
return true;
};
/** @return {boolean} */
function r_verb_suffix() {
var /** number */ among_var;
if (base.cursor < I_pV)
{
return false;
}
var /** number */ v_2 = base.limit_backward;
base.limit_backward = I_pV;
base.ket = base.cursor;
among_var = base.find_among_b(a_8);
if (among_var == 0)
{
base.limit_backward = v_2;
return false;
}
base.bra = base.cursor;
base.limit_backward = v_2;
switch (among_var) {
case 1:
var /** number */ v_3 = base.limit - base.cursor;
lab0: {
if (!(base.eq_s_b("u")))
{
base.cursor = base.limit - v_3;
break lab0;
}
var /** number */ v_4 = base.limit - base.cursor;
if (!(base.eq_s_b("g")))
{
base.cursor = base.limit - v_3;
break lab0;
}
base.cursor = base.limit - v_4;
}
base.bra = base.cursor;
if (!base.slice_del())
{
return false;
}
break;
case 2:
if (!base.slice_del())
{
return false;
}
break;
}
return true;
};
/** @return {boolean} */
function r_residual_suffix() {
var /** number */ among_var;
base.ket = base.cursor;
among_var = base.find_among_b(a_9);
if (among_var == 0)
{
return false;
}
base.bra = base.cursor;
switch (among_var) {
case 1:
if (!r_RV())
{
return false;
}
if (!base.slice_del())
{
return false;
}
break;
case 2:
if (!r_RV())
{
return false;
}
if (!base.slice_del())
{
return false;
}
var /** number */ v_1 = base.limit - base.cursor;
lab0: {
base.ket = base.cursor;
if (!(base.eq_s_b("u")))
{
base.cursor = base.limit - v_1;
break lab0;
}
base.bra = base.cursor;
var /** number */ v_2 = base.limit - base.cursor;
if (!(base.eq_s_b("g")))
{
base.cursor = base.limit - v_1;
break lab0;
}
base.cursor = base.limit - v_2;
if (!r_RV())
{
base.cursor = base.limit - v_1;
break lab0;
}
if (!base.slice_del())
{
return false;
}
}
break;
}
return true;
};
this.stem = /** @return {boolean} */ function() {
r_mark_regions();
base.limit_backward = base.cursor; base.cursor = base.limit;
var /** number */ v_2 = base.limit - base.cursor;
r_attached_pronoun();
base.cursor = base.limit - v_2;
var /** number */ v_3 = base.limit - base.cursor;
lab0: {
lab1: {
var /** number */ v_4 = base.limit - base.cursor;
lab2: {
if (!r_standard_suffix())
{
break lab2;
}
break lab1;
}
base.cursor = base.limit - v_4;
lab3: {
if (!r_y_verb_suffix())
{
break lab3;
}
break lab1;
}
base.cursor = base.limit - v_4;
if (!r_verb_suffix())
{
break lab0;
}
}
}
base.cursor = base.limit - v_3;
var /** number */ v_5 = base.limit - base.cursor;
r_residual_suffix();
base.cursor = base.limit - v_5;
base.cursor = base.limit_backward;
var /** number */ v_6 = base.cursor;
r_postlude();
base.cursor = v_6;
return true;
};
/**@return{string}*/
this['stemWord'] = function(/**string*/word) {
base.setCurrent(word);
this.stem();
return base.getCurrent();
};
};

View File

@ -1,154 +0,0 @@
/* Highlighting utilities for Sphinx HTML documentation. */
"use strict";
const SPHINX_HIGHLIGHT_ENABLED = true
/**
* highlight a given string on a node by wrapping it in
* span elements with the given class name.
*/
const _highlight = (node, addItems, text, className) => {
if (node.nodeType === Node.TEXT_NODE) {
const val = node.nodeValue;
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
pos >= 0 &&
!parent.classList.contains(className) &&
!parent.classList.contains("nohighlight")
) {
let span;
const closestNode = parent.closest("body, svg, foreignObject");
const isInSVG = closestNode && closestNode.matches("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.classList.add(className);
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
parent.insertBefore(
span,
parent.insertBefore(
rest,
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
*/
_highlight(rest, addItems, text, className);
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
const bbox = parent.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute("class", className);
addItems.push({ parent: parent, target: rect });
}
}
} else if (node.matches && !node.matches("button, select, textarea")) {
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
}
};
const _highlightText = (thisNode, text, className) => {
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
obj.parent.insertAdjacentElement("beforebegin", obj.target)
);
};
/**
* Small JavaScript module for the documentation.
*/
const SphinxHighlight = {
/**
* highlight the search words provided in localstorage in the text
*/
highlightSearchWords: () => {
if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
// get and clear terms from localstorage
const url = new URL(window.location);
const highlight =
localStorage.getItem("sphinx_highlight_terms")
|| url.searchParams.get("highlight")
|| "";
localStorage.removeItem("sphinx_highlight_terms")
url.searchParams.delete("highlight");
window.history.replaceState({}, "", url);
// get individual terms from highlight string
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
const divBody = document.querySelectorAll("div.body");
const body = divBody.length ? divBody[0] : document.querySelector("body");
window.setTimeout(() => {
terms.forEach((term) => _highlightText(body, term, "highlighted"));
}, 10);
const searchBox = document.getElementById("searchbox");
if (searchBox === null) return;
searchBox.appendChild(
document
.createRange()
.createContextualFragment(
'<p class="highlight-link">' +
'<a href="javascript:SphinxHighlight.hideSearchWords()">' +
_("Hide Search Matches") +
"</a></p>"
)
);
},
/**
* helper function to hide the search marks again
*/
hideSearchWords: () => {
document
.querySelectorAll("#searchbox .highlight-link")
.forEach((el) => el.remove());
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
localStorage.removeItem("sphinx_highlight_terms")
},
initEscapeListener: () => {
// only install a listener if it is really needed
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
document.addEventListener("keydown", (event) => {
// bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
// bail with special keys
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
SphinxHighlight.hideSearchWords();
event.preventDefault();
}
});
},
};
_ready(() => {
/* Do not call highlightSearchWords() when we are on the search page.
* It will highlight words from the *previous* search query.
*/
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
SphinxHighlight.initEscapeListener();
});

View File

@ -1,60 +0,0 @@
Documentation.addTranslations({
"locale": "es",
"messages": {
"%(filename)s &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s",
"&#169; %(copyright_prefix)s %(copyright)s.": "",
", in ": ", en ",
"About these documents": "Sobre este documento",
"Automatically generated list of changes in version %(version)s": "Lista de cambios generada autom\u00e1ticamente en la versi\u00f3n %(version)s",
"C API changes": "Cambios en la API C",
"Changes in Version %(version)s &#8212; %(docstitle)s": "Cambios en la versi\u00f3n %(version)s &#8212; %(docstitle)s",
"Collapse sidebar": "Contraer barra lateral",
"Complete Table of Contents": "\u00cdndice de contenidos completo",
"Contents": "Contenidos",
"Copyright": "Copyright",
"Created using <a href=\"https://www.sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Creado usando <a href=\"https://www.sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.",
"Expand sidebar": "Expandir barra lateral",
"Full index on one page": "\u00cdndice completo en una p\u00e1gina",
"General Index": "\u00cdndice General",
"Global Module Index": "\u00cdndice Global de M\u00f3dulos",
"Go": "Ir a",
"Hide Search Matches": "Ocultar coincidencias de la b\u00fasqueda",
"Index": "\u00cdndice",
"Index &ndash; %(key)s": "\u00cdndice &ndash; %(key)s",
"Index pages by letter": "\u00cdndice alfab\u00e9tico de p\u00e1ginas",
"Indices and tables:": "\u00cdndices y tablas:",
"Last updated on %(last_updated)s.": "Actualizado por \u00faltima vez en %(last_updated)s.",
"Library changes": "Cambios en la biblioteca",
"Navigation": "Navegaci\u00f3n",
"Next topic": "Pr\u00f3ximo tema",
"Other changes": "Otros cambios",
"Overview": "Resumen",
"Please activate JavaScript to enable the search\n functionality.": "Por favor, active JavaScript para habilitar la funcionalidad\n de b\u00fasqueda.",
"Preparing search...": "Preparando b\u00fasqueda...",
"Previous topic": "Tema anterior",
"Quick search": "B\u00fasqueda r\u00e1pida",
"Search": "B\u00fasqueda",
"Search Page": "P\u00e1gina de B\u00fasqueda",
"Search Results": "Resultados de la b\u00fasqueda",
"Search finished, found ${resultCount} page(s) matching the search query.": "B\u00fasqueda finalizada, se encontraron ${resultCount} p\u00e1ginas que coinciden con la consulta de b\u00fasqueda.",
"Search within %(docstitle)s": "Buscar en %(docstitle)s",
"Searching": "Buscando",
"Searching for multiple words only shows matches that contain\n all words.": "La b\u00fasqueda de varias palabras solo muestra coincidencias que contienen\n todas las palabras.",
"Show Source": "Mostrar el c\u00f3digo",
"Table of Contents": "Tabla de contenido",
"This Page": "Esta p\u00e1gina",
"Welcome! This is": "\u00a1Bienvenido! Este es",
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Su b\u00fasqueda no coincide con ning\u00fan documentos. Por favor, aseg\u00farese de que todas las palabras est\u00e9n correctamente escritas y que usted all\u00e1 seleccionado las suficientes categor\u00edas.",
"all functions, classes, terms": "todas las funciones, clases, t\u00e9rminos",
"can be huge": "puede ser muy grande",
"last updated": "actualizado por \u00faltima vez el",
"lists all sections and subsections": "muestra todas las secciones y subsecciones",
"next chapter": "pr\u00f3ximo cap\u00edtulo",
"previous chapter": "cap\u00edtulo anterior",
"quick access to all modules": "acceso r\u00e1pido a todos los m\u00f3dulos",
"search": "buscar",
"search this documentation": "buscar en esta documentaci\u00f3n",
"the documentation for": "la documentaci\u00f3n para"
},
"plural_expr": "n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2"
});

File diff suppressed because one or more lines are too long

View File

@ -37,7 +37,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

View File

@ -38,7 +38,7 @@
GNU/Emacs 29.1
</a>
<div class="version">
Traducción Revisón: 0.45
Traducción Revisón: 0.46
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">