Oct 25 2008

Rectángulos

Tag: basicoverdrive @ 11:10 pm

Trabajar con rectángulos en emacs puede ser muy útil, pero antes de trabajar con rectángulos debemos seleccionar el buffer entero y cercionarnos de que dicho buffer no contiene tabulaciones si queremos evitar problemas.

C-x h para seleccionar el buffer
M-x untabify para quitar las tabulaciones.

Decir que este paso es recomendable pero posiblemente innecesario, debido a que en las ultimas versiones de emacs (probablemente desde la 22) emacs es suficientemente inteligente para trabajar correctamente con rectángulos en un buffer con tabulaciones.

Imaginemos que tenemos un documento a modo tabla en texto, con sus filas (separadas mediante y sus columnas separadas previamente con TAB pero esta vez convertidos a simple espacios con M-x untabify. Podemos desplazar el cursor hasta el primer carácter de la primera columna, pulsar C-SPC y desplazar de nuevo el caracter hasta el primer carácter de otra columna y otra fila cualquiera. Si ahora ejecutamos uno de los siguientes comandos podremos ver los siguientes efectos aplicados a rectángulos (notar que los prefixjos de rectángulos siempre comenzarán por C-x r.

C-x r k : ‘kill-rectangle‘; elimina un rectángulo.
C-x r y : ‘yank-rectangle‘; pega un rectángulo.
C-x r o : ‘open-rectangle‘; crea un rectángulo como el seleccionado previamente sin contenido, abre una área.
C-x r c : ‘clear-rectangle‘; rellena con espacios el rectángulo seleccionado, sin borrar su desplazamiento pero sí su contenido.
C-x r d : ‘delete-rectangle‘; elimina un rectángulo seleccionado, incluyendo su desplazamiento y su contenido.
C-x r r [a-z0-9]: ‘copy-rectangle-to-register‘; copia el rectángulo a un registro, que puede ser usado posteriormente, los registros validos son cualquier carácter alfanumérico.
C-x r i : ‘insert-register‘; inserta el contenido de un registro.
(sin keystroke asociada) : ‘delete-whitespace-rectangle‘; si contiene espacios en blancos adicionales, los elimina.
C-x r t : ‘string-rectangle‘; rellena con un carácter o cadena un rectángulo. Además el rectángulo puede redimensionarse en caso de que el ancho exceda las dimensiones del rectángulo.
(sin keystroke asociada) : ‘string-insert-rectangle‘; muestra un prompt para la cadena que posteriormente sera insertada en un rectángulo.

  • Rectángulos con CUA

Si trabajamos con CUA, C-x se emplea para cortar, por lo que debemos buscar una manera alternativa para poder realizar las acciones anteriormente mencionadas.

Con Shift-<CR> podremos seleccionar un rectángulo, una vez vista la parte seleccionada podemos presionar M-p, el cual seleccionará perfecto. Ahora podemos hacer uso de C-x y C-v ya sea para cortar o pegar.


Oct 25 2008

outline-mode

Tag: basicoverdrive @ 9:58 pm

Antes de nada decir que puede usarse org-mode en lugar de outline-mode, el cual, es un outline-mode mejorado, así que cuando tenga preparado el artículo de org-mode preparado escribiré sobre él.

Con outline-mode podemos organizar nuestros documentos con divisiones lógicas, esto es, podemos crear cabeceras y subcabeceras para nuestro texto, así como mostrar u ocultar las partes que nos interesen. Para entrar en out-line mode tan sólo debemos pulsar M-x outline-mode. Primero explicaré como promocionar y degradar cabeceras y subcabeceras, como desplazarse sobre ellas de forma efectiva, y por último como mostrar u ocultarlas según nuestros intereses.

  • Promocionar y degradar

C-c C-^ : ‘outline-promote‘; promocionaremos.
C-c C-v : ‘outline-demote‘; para degradar (es decir su análogo).

  • Desplazamiento

C-c C-n : se desplaza a la siguiente cabecera o subcabecera.
C-c C-p : se desplaza a la cabecera o subcabecera anterior.
C-c C-f : se desplaza a la siguiente cabecera en el mismo nivel.
C-c C-b : se desplaza a la cabecera anterior en el mismo nivel.
C-c C-u : coge el nivel superior siguiente.

  • Mostrando y ocultando
    • Mostrar y ocultar sobre cabeceras y subcabeceras

C-c C-t : ‘hide-body‘; muestra sólo las cabeceras.
C-c C-a : ‘show-all‘; muestra todo.
C-c C-q : ‘hide-sublevels‘; sólo muestra el primer nivel de cabecera, pero no el resto.
C-c C-o : ‘hide-others‘; oculta para el resto de árboles todo excepto el primer nivel de cada uno.
C-c C-c : ‘hide-entry‘; oculta el cuerpo asociado a una cabecera particular, pero no al resto.

    • Mostrar y ocultar sobre cuerpos/texto

C-c C-l : ‘hide-leaves‘; oculta el cuerpo de una cabecera particular y los cuerpos de tadas sus subcabeceras.
C-c C-s : ‘show-subtree‘; muestra la subcabecera del texto asociado con una cabecera.
C-c C-e : ‘show-entry‘; muestra el cuerpo asociado con una cabecera particular (no las subcabeceras y cuerpos).
C-c C-k : ‘show-branches‘; muestra el cuerpo de la cabecera y los cuerpos de todas sus subcabeceras.
C-c TAB : ‘show-children‘; muestra el siguiente nivel de subcabeceras asociadas con una cabecera particular (no el cuerpo).

  • Marcando cabeceras, subcabeceras y cuerpo

C-c @ : ‘outline-mark-subtree‘; marca una sección.
C-x C-x : verifica que una sección ha sido marcada correctamente.

  • Acciones sobre cabeceras, subcabeceras y cuerpos/texto marcados

Si ejecutamos C-k sobre un nivel cuando esta oculto borraría también el texto o ‘cuerpo’ oculto en ese nivel.
Si ejecutamos C-y sobre un nivel, pegaria el texto oculto en ese nivel.

  • Outline mode como modo menor

Outline-mode se ejecuta como un modo mayor, sin embargo es posible ejecutarlo como un modo menor mediante M-x outline-minor-mode. Además podriamos ejecutar un comando del modo mayor mediante C-c @ prefix <comando necesitado en modo mayor> para ‘outline-mark-subtree‘.


Oct 25 2008

Párrafos, márgenes y alineación

Tag: basicoverdrive @ 9:11 pm
  • Párrafos

Para identar párrafos podemos pulsar TAB sobre cada línea o bien presionar C-j para ‘newline-and-indent‘, presionando C-j C-j nos crea una línea en blanco entre párrafos. También podemos usar M-x paragraph-indent-text-mode (en modo mayor) o bien M-x paragraph-ident-minor-mode (en modo menor) para obtener una sangría.

Si queremos poder identar un párrafo de un documento de forma individual podemos seleccionarlo como región y pulsar M-q. También podemos utilizar distinta identación para distintos párrafos mediante M-x fill-individual-paragraphs. Con C-_ C-x h para ‘fill-individual-paragraph‘, esto ajustara el párrafo de forma contigua a una región dada. Debemos tener en cuenta que C-M-\ para ‘indent-region‘ sólo identará un nivel debido a que fue desarrollado para identar código.

Si por ejemplo seleccionamos una región y pulsamos C-x TAB para ‘indent-rigidly‘, identará una columna por defecto, podemos emplear esta acción con C-u o M-número para poder lanzar el comando con argumentos y así poder realizar identaci&oaacute;n para múltiples columnas. Con M-m para ‘back-to-identation‘ nos desplazaremos hasta el primer carácter no blanco del párrafo actual. C-M-o para ‘split-line‘ podemos partir el párrafo o línea en dos, dejando una línea en blanco entre medio.

  • Márgenes

Para trabajar con márgenes podemos emplear el prefijo de keystrokes C-x h para marcar todo el buffer y así realizar una de las siguientes acciones:

M-x increase-left-margin : incrementa el margen izquierdo.
M-x decrease-left-margin : decrementa el margen izquierdo.
M-x increase-right-margin : incrementa el margen derecho.
M-x decrease-right-margin : decrementa el margen derecho.

Si no especificamos un argumento numérico con C-u o M-número usará el valor que contenga la variable standard-indent que por defecto es 4.

Existe otro problema típico cuando las lineas son demasiado largas respecto al ancho de la ventana, y es que podemos querer realizar un salto de línea automático cuando sean demasiado largas, pero sin tener que hacerlo de forma manual, sino que sea Emacs quien haga dicho cálculo, para ello podemos ejecutar M-x auto-fill-mode y conseguiremos este efecto de forma automática.

Para el mismo caso anterior, podemos conseguir un efecto de prefijo delante de cada línea, esto se consigue mediante C-x . para ‘set-fill-prefix‘; con esto conseguiremos poner prefijos cada vez que la línea sea cortada. La forma correcta de usarlo es primero poniendo el prefijo y luego ejecutando el comando; por ejemplo: pulsando 5 veces espacio y luego C-x .

  • Alineación

Emacs no se considera un procesador de textos, en todo caso contiene un editor. La tarea de un editor es trabajar con o editar texto, mientras que la de un procesador es dar un formato de presentación. Sin embargo, aunque emacs no sea un procesador de texto permite realizar ciertas tareas básicas de presentación y formato de texto, entre ellas se puede alinear texto:

M-s : ‘center-line‘; centra una línea.
M-S : ‘center-paragraph‘; centra un párrafo.
(sin keystroke asociada) : ‘center-region‘; centra una región.
(sin keystroke asociada) : ‘set-justification-center‘; centra el texto seleccionado.