42 Ordenar texto

Emacs proporciona varios comandos para ordenar texto en el búfer. Todos operan sobre el contenido de la región. Dividen el texto de la región en muchos registros de ordenamiento, identifican una clave de clasificación (u ordenamiento) para cada registro, y luego reordenan los registros en el orden determinado por las claves de clasificación. Los registros se ordenan de forma que sus claves estén en orden alfabético o, para una clasificación numérica, en orden numérico. En la clasificación alfabética, todas las letras mayúsculas de la A a la Z van antes que las minúsculas de la a, de acuerdo con la secuencia de caracteres ASCII (pero sort-fold-case, que se describe más adelante, puede cambiar esto).

Los distintos comandos de reordenamiento difieren en cómo dividen el texto en registros de ordenamiento (o clasificación) y en qué parte de cada registro se utiliza como clave de ordenamiento. La mayoría de los comandos hacen de cada línea un registro de clasificación separado, pero algunos comandos utilizan párrafos o páginas como registros de clasificación. La mayoría de los comandos de ordenamiento utilizan cada registro de clasificación completo como su propia clave de ordenamiento, pero algunos utilizan sólo una parte del registro como clave de este tipo.

Alt-x sort-lines (M-x sort-lines)

Divide la región en líneas y ordena comparando todo el texto de una línea. Un argumento numérico significa ordenar en orden descendente.

Alt-x sort-paragraph (M-x sort-paragraph)

Divide la región en párrafos y ordena comparando todo el texto de un párrafo (excepto las líneas en blanco del encabezado). Un argumento numérico significa ordenar en orden descendente.

Alt-x sort-pages (M-x sort-pages)

Divide la región en páginas y ordena comparando todo el texto de una página (excepto las líneas en blanco del encabezado). Un argumento numérico significa ordenar en orden descendente.

Alt-x sort-fields (M-x sort-fields)

Divide la región en líneas y la ordena comparando el contenido de un campo en cada línea. Los campos se definen como separados por espacios en blanco, de modo que la primera serie de caracteres consecutivos sin espacios en blanco de una línea constituye el campo 1, la segunda serie constituye el campo 2, etc.

Especifica por qué campo ordenar con un argumento numérico: 1 para ordenar por el campo 1, etc.; por defecto es 1. Un argumento negativo significa contar los campos desde la derecha en lugar de desde la izquierda; así, menos 1 significa ordenar por el último campo. Si varias líneas tienen contenidos idénticos en el campo que se ordena, mantienen el mismo orden relativo que tenían en el búfer original.

Alt-x sort-numeric-fields (M-x sort-numeric-fields)

Igual que M-x sort-fields, excepto en que el campo especificado se convierte en un número entero para cada línea y se comparan los números. 10 va antes que 2 cuando se considera como texto, pero después cuando se considera como número. Por defecto, los números se interpretan según sort-numeric-base, pero los números que empiezan por 0x o 0 se interpretan como hexadecimal y octal, respectivamente.

Alt-x sort-columns (M-x sort-columns)

Como M-x sort-fields, excepto en que el texto de cada línea utilizado para la comparación procede de un rango fijo de columnas. Con un argumento prefijo, ordena en orden inverso. Para más detalles sobre este comando, véase más abajo.

Alt-x reverse-region (M-x reverse-region)

Invierte el orden de las líneas de la región. Esto es útil para ordenar en orden descendente por campos, ya que esos comandos de ordenación no tienen una función para hacerlo.

Por ejemplo, si un búfer con este contenido:

En los sistemas en los que está implementada la detección de colisiones (bloqueo de los archivos que se están editando),
Emacs también comprueba la primera vez que modifica un búfer si el archivo ha cambiado en el disco desde la última vez que fue visitado
o guardado.
En caso afirmativo, se le pedirá que confirme que desea modificar el búfer.

aplicando M-x sort-lines a todo el buffer se obtiene esto:

Emacs también comprueba la primera vez que modifica un búfer si el archivo ha cambiado en el disco desde la última vez que fue visitado
En caso afirmativo, se le pedirá que confirme que desea modificar el búfer.
En los sistemas en los que está implementada la detección de colisiones (bloqueo de los archivos que se están editando),
o guardado.

donde la E mayúscula se ordena antes que todas las minúsculas. Si en su lugar utiliza campos de ordenamiento C-u 2 M-x, obtendrá lo siguiente:

o guardado.
En los sistemas en los que está implementada la detección de colisiones (bloqueo de los archivos que se están editando),
En caso afirmativo, se le pedirá que confirme que desea modificar el búfer.
Emacs también comprueba la primera vez que modifica un búfer si el archivo ha cambiado en el disco desde la última vez que fue visitado

donde las claves de ordenamiento eran Emacs, Si, búfer, sistemas y el.

M-x sort-columns (ordenar-columnas) requiere más explicación. Se especifican las columnas poniendo punto en una de las columnas y la marca en la otra columna. Como esto significa que no puede poner el punto o la marca al principio de la primera línea del texto que desea ordenar, este comando utiliza una definición inusual de «región»: toda la línea en la que está el punto se considera parte de la región, y también toda la línea en la que está la marca, así como todas las líneas intermedias.

Por ejemplo, para ordenar una tabla por la información que se encuentra en las columnas 10 a 15, podría poner la marca en la columna 10 en la primera línea de la tabla, y el punto en la columna 15 en la última línea de la tabla, y luego ejecutar sort-columns. De forma equivalente, podría ejecutarlo con la marca en la columna 15 en la primera línea y el punto en la columna 10 en la última línea.

Esto puede considerarse como ordenar el rectángulo especificado por el punto y la marca, excepto que el texto de cada línea a la izquierda o derecha del rectángulo se mueve junto con el texto dentro del rectángulo. Véase 13.5 Rectángulos.

Muchos de los comandos de ordenamiento ignoran las diferencias entre mayúsculas y minúsculas al comparar, si sort-fold-case es distinto de nil.