[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

V.4.1 Expresiones con paréntesis balanceados

Estos comandos manejan expresiones balanceades, también llamadas sexps(9).

C-M-f

Avanza sobre una expresión balanceada (forward-sexp).

C-M-b

Retrocede sobre una expresión balanceada (backward-sexp).

C-M-k

Mata una expresión balanceada hacia adelante (kill-sexp).

C-M-DEL

Mata una expresión balanceada hacia atrás (backward-kill-sexp).

C-M-t

Transpone expresiones (transpose-sexps).

C-M-@

Pone la marca después de la siguiente expresión (mark-sexp).

Cada modo principal de lenguaje de programación personaliza la definición de las expresiones balanceadas para dicho lenguaje. Las expresiones balanceadas típicamente incluyen los símbolos, números, y constantes de cadenas, así como cualquier par de delimitadores emprejados y su contenido. Algunos lenguajes tienen formas oscuras de sintaxis de expresiones que nadie se ocupó de implementar en Emacs.

Por convencion, las teclas para estos comandos son todos caracteres Control-Meta. Generalmente operan con las expresiones igual que los caracteres Meta correspondientes operan con las palabras. por ejemplo, el comando C-M-b retrocede sobre una expresión balanceada, igual que M-b retrocede sobre una palabra.

Para avanzar sobre una expresión balanceada, utilice C-M-f (forward-sexp). Si el primer caracter significativo después del punto es un delimitador de apertura (`(' en Lisp; `(', `[' o `{' en C), C-M-f avanza hasta después del delimitador de cierre correspondiente. Si el carácter es el principio de un símbolo, cadena, o número, C-M-f avanza sobre él.

El comando C-M-b (backward-sexp) retrocede sobre una expresión balanceada. Las reglas detalladas son como las anteriores para C-M-f, pero con la dirección invertida. Si hay caracteres prefijos (comilla simple, comilla inclinada y coma, en Lisp) precediendo la expresión, C-M-b retrocede sobre ellos también. Los comandos para expresiones balanceadas mueven a través de los comentarios como si fuesen espacio en blanco, en la mayoría de los modos.

C-M-f o C-M-b con un argumento repite la operación la cantidad especificada de veces; con un argumento negativo, se mueve en la dirección opuesta.

Se puede matar una expresión balanceada entera con C-M-k (kill-sexp) o C-M-DEL (backward-kill-sexp). C-M-k mata los caracteres que C-M-f saltaría, y C-M-DEL mata los caracteres que C-M-b saltaría. En algunas máquinas, C-M-DEL tecleado en la consola es un comando para reiniciar; cuando es así, ud. no puede usarlo como comando de Emacs. Este conflicto es infrecuente, sin embargo: generalmente la tecla DEL para Emacs es en realidad BACKSPACE, y el comando de reinicio es C-M-DELETE, de manera que no hay conflicto.

Un comando que suena un poco extraño pero que sin embargo es práctico es C-M-t (transpose-sexps), que traslada la expresión balanceada anterior detrás de la siguiente. Un argumento sirve como cantidad de repeticiones, y un argumento negativo traslada la expresión balanceada anterior hacia atrás a través de las que la preceden (cancelando el efecto de C-M-t con un argumeto positivo). Un argumento de cero, en lugar de no hacer nada, traspone las expresiones balanceadas que terminan en el punto y en la marca, o después de ellos.

Para establecer la región alrededor de la siguiente expresión balanceada en el búfer, utilice C-M-@ (mark-sexp), que establece la marca en el mismo lugar adonde iría con C-M-f. C-M-@ acepta argumentos como C-M-f. En particular, un argumento negativo es útil para poner la marca al comienzo de la expresión balanceada anterior.

En los lenguajes que utilizan operadores infijos, como C, no es posible reconocer todas las expresiones balanceadas como tales porque puede haber varias posibilidades en una posición dada. Por ejemplo, el modo C no toma `foo + bar' como una expresión individual, aunque es una expresión de C; en su lugar, reconoce `foo' como una expresión y `bar' como otra, con el `+' como puntuación entre ambos. Tanto `foo + bar' como `foo' son elecciones legítimas para "la expresión después del punto" cuando el punto está en la `f', luego los comandos de expresiones deben elegir forzosamente una o la otra para operar. Observe que `(foo + bar)' se reconoce como una expresión individual en modo C, por los paréntesis.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated by Roberto on abril, 2 2007 using texi2html 1.76.