rp
Referéncia

9. Ventanas

Pág.Anterior  |  Índice |  Pág.Siguente

Como vimos en el capítulo anterior,   [8.Buffers Múltiples],  con Emacs se puede tener abierto más de un buffer al mismo tiempo. Dichos buffers pueden visualizarse en pantalla através de múltiples ventanas y marcos.

Antes de seguir se impone una precisión terminológica: Para Emacs, ventanas son porciones de ventana de Emacs. En otros términos, cada ventana es una porción de la GIU ( Interfaz Gráfica de Usuario ).

En cambio, los marcos son ventanas de Emacs (GIU,s) independientes.

Tanto las ventanas como los marcos son medios de visualizar un buffer, pudiendo contener o no un archivo.

Veamos un ejempo de dos buffers, buffer1  y  buffer2  mostrados en dos ventanas y en dos marcos :

Los citados buffers mostrados en dos  buffer1  y  buffer2 : Cada uno de ellos ocupa una porción de la pantalla, (GUI), de Emacs.

Ventana

Los mismos buffers mostrados através de  marcos : Cada uno de ellos ocupa una pantalla, (GUI), de Emacs independiente.

Ventana

Cuando se esté trabajando con varios buffers a la vez, la decisión de disponerlos en ventanas y/o en marcos dependerá, esencialmente, de las preferencias individuales.


9.1 Ventanas: Introducción.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

Como se comentó más arriba, las ventanas son porciones de la GUI de Emacs através de la cual se muestra el contenido de buffers abiertos.

No debe confundirse ventana con buffer. Un mismo buffer puede mostrarse en más de una ventana al mismo tiempo, lo que puede ser muy útil para trabajar con partes distintas de un mismo buffer.

Podemos tener múltiples ventanas abiertas, mostrando cada una de ellas el contenido de un buffer diferente o bién diferentes partes del contenido de un mismo buffer. Por supuesto, cuantas más ventanas dispongamos, más pequeñas serán, ya que Emacs no es capaz de superponer ventanas.

Las ventanas pueden disponerse horizontalmente, verticalmente o combinando las anteriores disposiciones.

Cada ventana tiene su propia linea de modo con los datos del buffer que muestra.

Podemos tener múltiples ventanas, pero disponemos de un solo cursor. La ventana en la que se encuentre el cursor en un momento dado es la denominada ventana activa y es la ventana editable en éste momento.

Moviendo el cursor de una ventana a otra es como iremos cambiando de ventana activa.

En las ventanas no activas podemos observar la presencia de un "cursor no activo", denominado punto,  Point  de la ventana. Cuando traslademos el cursor a esta ventana, se situará en el punto de la ventana destino, quedando como punto de la ventana origen la última posición del cursor antes de abandonarla.


9.2 Creación de ventanas.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

El comando para la división de la ventana actual en dos es:

  • Comando : C-x 2
  • Opción de menú : File--> Split Window
  • Comando "largo" : M-x split-window-vertically <Enter>
  • Divide la actual ventana en dos, horizontalmente (una encima de otra).

  • Comando : C-x 3
  • Comando "largo" : M-x split-window-horizontally <Enter>
  • Divide la actual ventana en dos, verticalmente (una al lado de de otra).

Veamos, gráficamente, el efecto de estos comandos:

Con  C-x  2  se provoca una división horizontal:.

Ventana

Con  C-x  3  se provoca una división vertical:.

Ventana

Repitiendo los comandos se van produciendo sucesivas divisiones (horizontales o verticales) de la  ventana activa .

Cuando se inicia Emacs desde la linea de comandos, especificando varios nombres de archivo:

  • user@linux:~> emacs archivo1 archivo2
  • Emacs los abre en ventanas separadas dispuestas horizontalmente.

Como hemos podido observar, los anteriores comandos provocan una división de la ventana activa; las ventanas resultantes muestran el mismo buffer.

Cuando se desee ejecutar un comando en otra ventana, insertaremos el número 4 en el comando en cuestión:

  • Comando : C-x 4  C-f
  • Comando "largo" : M-x find-file-other-window 
  • Abre el buffer que especifiquemos en otra ventana.
  • Comando : C-x 4  b
  • Comando "largo" : M-x switch-to-buffer-other-window 
  • Seleccionar un buffer diferente, en otra ventana.

Cuando hay sólo una ventana abierta, se divide verticalmente. Si hay más de una ventana abierta, se sustituye el contenido de la ventana no activa mas reciente.

A partir de éste momento operaremos sólo con ventanas dispuestas horizontalmente, siendo todo lo que se exponga aplicable a la disposición vertical.


9.3 Ventanas: Moverse entre ventanas.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

Cuando estamos trabajando con varias ventanas, el paso de una ventana a otra, esto es, el cambio de ventana activa es una de las actividades más frecuentes.

La forma más sencilla de realizar el cambio de ventana activa es mediante el ratón: llevando el puntero y clicando sobre la ventana que deseamos activar. El cursor se emplazará en el lugar ocupado, hasta este momento, por el punto

Pero, como no podia ser de otra manera, en Emacs disponemos de un comando para realizar esta función:

  • Comando : C-x o
  • Comando "largo" : M-x other-window <Enter>
  • Realiza el cambio de ventana activa

Cuando hay más de dos ventanas abiertas, el comando pasa el cursor de una ventana a la anterior. No existe un modo, através de comandos, de llevar el cursor directamente desde una ventana a otra no adyacente. Debe teclearse repetidamente el comando hasta llegar a la ventana deseada.......... En estos casos, en entornos gráficos, el ratón es la opción a considerar.

El orden el que Emacs realiza los cambios de ventana activa coincide con el orden normal de lectura: de izquierda a derecha y luego abajo, para seguir de nuevo de izquierda a derecha.

Cuando se esté operando con varias ventanas, un comado útil es el siguiente:

  • Comando : M-C v
  • Comando "largo" : M-x scroll-other-window <Enter>
  • Desplaza (scroll) la ventana no sactiva, sin cambiar el cursor

9.4 Cerrar ventanas.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

Cuando se cierra una ventana, no se cierra el buffer corerspondiente. tan solo se suspende su "visualización".

Disponemos de dos formas de cerrar ventanas:

  • Comando : C-x 0
  • Comando "largo" : M-x delete-window <Enter>
  • Cierra la ventana activa
  • Comando : C-x 1
  • Opción de menú : File--> Split Unsplit Windows
  • Comando "largo" : M-x delete-other-windows <Enter>
  • Cierra todas las ventanas no activas. Deja una sóla ventana abierta: la ventana activa.

Otro comando a tener en cuenta es el que nos permite cerrar todas las ventanas de un determinado buffer:

  • M-x delete-windows-on <Enter>  nombre_buffer <Enter>

9.5 Control del tamaño de las ventanas.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

Cuando estemos trabajando con varias ventanas abiertas, el control de su tamaño puede ser importante ya que, por ejemplo, nos puede interesar que la ventana activa sea en cada momento la de mayor tamaño.

Debemos conocer también que las ventanas tienen un límite mínimo de altura, especifoicado por la variable    window-min-height   y un límite mínimo de anchura, especificado por la variable   window-min-width.  Por defecto, los valores de estas variables son:

  • altura: cuatro líneas.
  • anchura: diez caracteres

Emacs nos proporciona una serie de comandos que nos permiten controlar el tamaño de la ventana activa:

  • Comando : C-x  +
  • Comando "largo" : M-x balance-windows 
  • Hace que todas las ventanas tengan el mismo tamaño.
  • Comando : C-x  ^
  • Comando "largo" : M-x enlarge-window 
  • La ventana se alarga en una linea, a expensas de la ventana de debajo.
  • Comando : C-u C-x  ^
  • La ventana se alarga en 4 lineas, a expensas de la ventana de debajo.
  • Comando : C-x  }
  • Comando "largo" : M-x enlarge-window-horizontally 
  • La ventana se ensancha en una columna, a expensas de la ventana de al lado.
  • Comando : C-u  C-x   }
  • La ventana se ensancha en una 4 columnas, a expensas de la ventana de al lado.
  • Comando : C-x  C-{
  • Comando "largo" : M-x shrink-window-horizontally 
  • La ventana se encoge en una columna.
  • Comando : C-u  C-{
  • La ventana se encoge en 4 columnas.
  • Comando "largo" : M-x shrink-window 
  • La ventana se encoge en una linea.

9.6 Comparación de archivos entre ventanas.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

Emacs nos ofrece un comando muy útil a la hora de buscar diferencias entre dos archivos que se muestran en diferentes ventanas:

  • Opción de menú : Tools-->Compare (Ediff)-->This Window and Next Window
  • Comando "largo" : M-x compare-windows 
  • Compara la ventana el archivo de la ventana activa con el de la ventana adyacente, mostrando la primera diferencia.

Este comando actua sólo si el punto , en ambos buffers, se encuentra exactamente en el mismo lugar.

Para buscar más diferencias entre los dos buffers, situar los respectivos puntos tras la diferencia encontrada y repetir el comando.

9.7 Lista de buffers.

Pág.Anterior  |  Índice |  Inicio Página |  Pág.Siguente

En el capítulo anterior , 8.Buffers Múltiples [8.2] ,  pudimos ver como movernos por múltiples buffers abiertos.

Mediante el comando:

  • Comando : C-x C-b
  • Opción de menú : Buffers->List All Buffers
  • Comando "largo" : M-x list-buffers <Enter>
  • Se muestra,en una nueva ventana, el buffer  *Buffer List*, que contiene la relación de los buffers abiertos.
Comando C-x b

En determinadas versiones de Emacs, el buffer  *Buffer List*, no se nos muestra en una nueva ventana :

Buffer List

Sea cual fuere la forma en que se nos muestre la Lista de buffers, nos ofrece una completa información , dispuesta en columnas, sobre los buffers abiertos.

La información que se ofrece, de izquierda a derecha es:

C  Marca con un punto,  (.)  ,el buffer activo
M  Marca con un arterisco,  (*)  ,los buffers modificados.
R  Marca con un arterisco,  (*)  ,los buffers solo-lectura  
Buffer  Nombre del buffer.
Size  Tamaño, en bytes, del buffer.
Mode  Modo mayor del buffer.
File  Nombre del archivo (con path).

En algunas versiones de Emacs, la primena columna presenta una cabecera en blanco.

Para pasar desde la ventana del buffer activo a la Lista de Buffers puede utilizarse el comando  C-x o  o , sencillamente, el ratón.

Para movernos dentro de la lista de buffers, las teclas de flecha y el ratón son las opciones más útiles, aunque pueden usarse los siguientes comandos:

  • Bajar una linea. Cualquiera de los siguientes comandos:
    • n
    • C-n
    • <Space>
    • <Flecha-abajo>
  • Subir una linea. Cualquiera de los siguientes comandos:
    • p
    • C-p
    • <BackDel>
    • <Flecha-arriba>

Más interesantes son los comandos que nos permiten gestionar los buffers abiertos desde la Lista de Buffers :

d : Marca un buffer para su eliminación.
En la primera columna aparece el signo D
k : Marca un buffer para su eliminación.
En la primera columna aparece el signo D
s : Marca un buffer para guardarlo.
En la primera columna aparece el signo S
x : Elimina los buffers marcados con d y k. Guarda los marcados con s
u : Desmarca los buffers marcados con d y k y s
~ : Pasa el buffer a inmodificado.
% : Pasa el buffer de lectura-escritura a solo-lectura y viceversa.
1 : Muestra el buffer a pantalla completa.
2 : Muestra el buffer y el siguiente en pantalla ventanas horizontales.
f : Reemplaza la Lista de buffers por este buffer
o : Reemplaza el buffer mostrado en otra ventana por este buffer.
m : Marca buffers para ser visualizados en ventanas.
En la primera columna aparece el signo
v : Ejecuta la marca m.
q : Sale de la Lista de buffers.

Hay dos teclas útiles en la gestión de buffers:

  • <Supr>
  • Realiza las funciones de d y k
  • <BackDel >
  • Desmarca el buffer inmediatamente anterior marcado con d , k o s
 
Pág.Anterior |  Índice | Inicio Página |  Pág.Siguente
RPublica >  Emacs >  | 9.Ventanas y Marcos |