Jun 16

Puntero, cursor y marca. Regiones (básico)

Tag: introoverdrive @ 2:08 am

Antes de poder continuar, es imprescindible como explicar el concepto de puntero, cursor y marca. Todo ello esta explicado en la charla ya mencionada antes por José E. Marchesi (Editorwars-Emacs-Vs-Vim).

El cursor, es aquel elemento que parpadea, y que nos sirve a nosotros, los usuarios del sistema, saber en que posición nos encontramos. Sin embargo, los editores de texto y en este caso Emacs, no hace uso de este elemento, sino que usa el puntero. Cuando tenemos el cursor sobre el carácter ‘D’ de la palabra «ABCDEF», lo que realmente ocurre es que existe un puntero que se encuentra señalando la posicion entre la ‘C’ y la ‘D’, de esa forma si escribimos algo se escribirá no sobre la ‘D’, pero tampoco después de la ‘D’, sino entre la ‘C’ y la ‘D’, que en efecto es la posición del puntero. Este concepto está muy bien explicado dicha charla, que como se dice, existe una posicion válida para el puntero entre cada carácter. Por lo tanto cada vez que movemos el cursor, Emacs internamente cambia el valor del puntero.

Por último explicaremos el concepto de marca. La marca, por defecto es invisible en versiones anteriores a Emacs 22. La marca se emplea para trabajar con regiones por norma general o para recordar posiciones para nuestro interés a la cual nos podremos referir.

Explicamos ahora algunos comandos básicos empleando la marca y regiones que servirán como ejemplo para confirmar y fortalecer la teoría explicada anteriormente. En primer lugar tenemos que saber como poner la marca, para ello usaremos C-SPC. Recordemos que la marca estará guardando la posición entre dos caracteres, nunca encima de uno. Si movemos el cursor hacia otro lugar, tendremos en efecto una region desde la posición de la marca hasta la del cursor, la cual podemos copiar empleando M-w, cortar usando C-w, y después de ello pegar esta región usando C-y o M-y. La diferencia entre estas dos últimas es que C-y sigue manteniendo la región en el kill-ring, mientras que M-y no.

El kill ring (anillo de la muerte) es un cementerio de todo aquello eliminado (a excepción de carácteres individuales). Es decir, aquí se almacenarán palabras, regiones, párrafos, etc… borrados. Gracias a éste kill ring, eliminar por error en emacs nunca es fatídico, siempre podremos acudir a este anillo.

Existe también un mark ring, que es un cementerio de marcas; cada vez que marcamos una nueva marca, guardamos en éste anillo la marca anterior.

Éstos anillos son listas enlazadas circulares, y eliminar por norma general añadirá un nuevo nodo al anillo, mientras que recuperar el valor algunas veces implicará la eliminación del nodo.

Por último podemos intercambiar el valor de la marca y cursor usando C-x C-x.

puntero_cursor_y_marca

Leave a Reply

You must be logged in to post a comment.