21 Varias Ventanas

Emacs puede dividir un marco en dos o muchas ventanas. Múltiples ventanas pueden mostrar partes de diferentes búferes, o diferentes partes de un búfer. Múltiples marcos siempre implican múltiples ventanas, porque cada marco tiene su propio conjunto de ventanas. Cada ventana pertenece a uno y sólo un marco.

21.1 Conceptos de las Ventanas Emacs

Cada ventana de Emacs muestra un búfer de la aplicación en cualquier momento. Un mismo búfer puede aparecer en más de una ventana; si es así, cualquier cambio en su texto se muestra en todas las ventanas donde aparezca. Pero estas ventanas pueden mostrar diferentes partes del búfer, porque cada ventana tiene su propio valor para el punto.

En cualquier momento, una ventana Emacs es la ventana seleccionada; el búfer que esta ventana está mostrando es el búfer actual. En las pantallas gráficas, el punto se indica mediante un cursor sólido parpadeante en la ventana seleccionada, y mediante una caja hueca en las ventanas no seleccionadas. En los terminales de texto, el cursor sólo se dibuja en la ventana seleccionada. Véase 15.21 Visualización del Cursor.

Los comandos para mover el punto afectan al valor del mismo sólo para la ventana Emacs seleccionada. No afectan a dicho valor en otras ventanas de Editor, ni siquiera en las que muestran el mismo búfer. Lo mismo ocurre con los comandos de cambio de búfer como C-x b; no afectan a otras ventanas en absoluto. Sin embargo, hay otros comandos como C-x 4 b que seleccionan una ventana diferente y cambian de búfer en ella. Además, todos los comandos que muestran información en una ventana, incluyendo (por ejemplo) C-h f (describe-función) y C-x C-b (list-buffers), normalmente funcionan mostrando búferes en una ventana no seleccionada sin afectar a la ventana seleccionada.

Cuando varias ventanas muestran el mismo búfer, pueden tener diferentes regiones, porque pueden tener diferentes valores para el punto. Sin embargo, todas tienen el mismo valor de marca, porque cada búfer sólo tiene una posición de marca.

Cada ventana tiene su propia línea de modo, que muestra el nombre del búfer, el estado de modificación y los modos mayor y menor del búfer que se muestra en la ventana. La línea de modo de la ventana seleccionada aparece en un color diferente. Véase 1.3 La Línea de Modo, para más detalles.

21.2 Ventanas Divididas

Ctrl-x 2 (C-x 2)

Divide la ventana seleccionada en dos, una encima de la otra (split-window-below, dividir-ventana-abajo).

Ctrl-x 3 (C-x 3)

Divide la ventana seleccionada en dos, dispuestas una al lado de la otra (split-window-right, dividir-ventana-derecha).

Ctrl-ratón-2 (C-ratón-2)

En la línea de modo de una ventana, la divide.

C-x 2 (split-window-below) divide la ventana seleccionada en dos, una encima de la otra. Tras la división, la ventana seleccionada es la superior, y la recién dividida es la inferior. Ambas ventanas tienen el mismo valor de punto que antes, y muestran la misma porción del búfer (o lo más cercana posible). Si es necesario, las ventanas se desplazan para mantener el punto en pantalla. Por defecto, las dos ventanas tienen cada una la mitad de la altura de la ventana original. Un argumento numérico positivo especifica cuántas líneas dar a la ventana superior; un argumento numérico negativo especifica cuántas líneas dar a la ventana inferior.

Si cambia la variable split-window-keep-point a nil, C-x 2 ajusta la porción del búfer mostrada por las dos ventanas, así como el valor del punto en cada ventana, para mantener el texto en pantalla lo más cercano posible al que había antes; además, si el punto estaba en la mitad inferior de la ventana original, se selecciona la ventana inferior en lugar de la superior.

C-x 3 (split-window-right) divide la ventana seleccionada en dos ventanas contiguas. La ventana izquierda es la seleccionada; la ventana derecha muestra la misma porción del mismo búfer, y tiene el mismo valor del punto. Un argumento numérico positivo especifica cuántas columnas hay que dar a la ventana izquierda; un argumento numérico negativo especifica cuántas columnas hay que dar a la ventana derecha.

Al dividir una ventana con C-x 3, cada ventana resultante ocupa menos que el ancho total del cuadro. Si se estrecha demasiado, el búfer puede ser difícil de leer si se están usando líneas de continuación (ver 8.8 Líneas de Continuación). Por lo tanto, Emacs cambia automáticamente al truncamiento de líneas si el ancho de la ventana se estrecha más de 50 columnas. Este truncamiento ocurre independientemente del valor de la variable truncate-lines (ver 15.22 Truncado de Línea); en su lugar es controlado por la variable truncate-partial-width-windows. Si el valor de esta variable es un entero positivo (el valor por defecto es 50), esto especifica la anchura total mínima para una ventana de anchura parcial antes de que se produzca el truncado automático de líneas; si el valor es nil, el truncado automático de líneas está desactivado; y para cualquier otro valor no nil, Emacs trunca las líneas en cada ventana de anchura parcial independientemente de su anchura. La anchura total de una ventana está en unidades de columna tal y como se informa en window-total-width (ver Tamaños de Ventana en el Manual de Referencia de Emacs Lisp), incluye los márgenes, los glifos de continuación y truncado, los márgenes y la barra de desplazamiento.

En las terminales de texto, las ventanas contiguas están separadas por un divisor vertical que se dibuja utilizando la cara vertical-border.

Si se pulsa C-ratón-2 en la línea de modo de una ventana, se divide la ventana, poniendo un divisor vertical donde se pulsó. Dependiendo de cómo esté compilado Emacs, también puede dividir una ventana pulsando C-ratón-2 en la barra de desplazamiento, que pone un divisor horizontal donde se pulsa (esta característica no funciona cuando Emacs usa barras de desplazamiento GTK+).

Por defecto, cuando se divide una ventana, Emacs da a cada una de las ventanas resultantes dimensiones que son un múltiplo integral del tamaño de fuente por defecto del marco. Esto puede subdividir la pantalla de forma desigual entre las ventanas resultantes. Si establece la variable window-resize-pixelwise a un valor no nulo, Emacs dará a cada ventana el mismo número de píxeles (más o menos un píxel si la dimensión inicial era un número impar de píxeles). Tenga en cuenta que cuando el tamaño en píxeles de un marco no es múltiplo del tamaño en caracteres del marco, al menos una ventana puede ser redimensionada en píxeles incluso si esta opción es nula.

21.3 Utilización de Otras Ventanas

Ctrl-x o (C-x o)

Selecciona otra ventana (other-window).

Ctrl-Alt-v (C-M-v)

Desplaza la ventana siguiente hacia arriba (scroll-other-window).

Ctrl-Alt-Shift-v (C-M-S-v)

Desplaza la ventana siguiente hacia abajo (scroll-other-window-down).

Ctrl-Alt-Shift-l (C-M-S-l)

Vuelve a centrar la ventana siguiente (recenter-other-window).

ratón-1

ratón-1, en el área de texto de una ventana, selecciona la ventana y mueve punto a la posición pulsada. Haciendo clic en la línea de modo se selecciona la ventana sin mover el punto en ella.

Con el teclado, puede cambiar de ventana escribiendo Ctrl-x o (C-x o, other-window). Es una o, de «otra», no un cero. Cuando hay más de dos ventanas, este comando recorre todas las ventanas en un orden cíclico, generalmente de arriba abajo y de izquierda a derecha. Después de la ventana situada más a la derecha y más abajo, vuelve a la situada en la esquina superior izquierda. Un argumento numérico significa moverse varios pasos en el orden cíclico de las ventanas. Un argumento negativo se desplaza por el ciclo en el orden inverso. Cuando el minibúfer está activo, la ventana del minibúfer es la última ventana del ciclo; se puede cambiar de la ventana del minibúfer a una de las otras ventanas, y más tarde volver a cambiar y terminar de suministrar el argumento del minibúfer que se solicita. Véase 9.3 Edición en el minibuffer.

El comando other-window normalmente sólo cambiará a la siguiente ventana en el marco actual (a menos que se configure de otra manera). Si trabaja en un entorno de varios marcos y desea que las ventanas de todos los marcos formen parte del ciclo, puede volver a vincular C-x o al comando next-window-any-frame. (Para saber cómo volver a vincular un comando, consulte 50.3.5. Cambiar las combinaciones de teclas interactivamente).

Los comandos de desplazamiento habituales (véase 15 Controlando la Pantalla) se aplican sólo a la ventana seleccionada, pero también existen comandos para desplazarse a la ventana siguiente. C-M-v (scroll-other-window) desplaza la ventana que C-x o seleccionaría. En otros aspectos, el comando se comporta como C-v; ambos mueven el texto del búfer hacia arriba en relación con la ventana, y toman argumentos positivos y negativos. (En el minibúfer, C-M-v desplaza la ventana de ayuda asociada al minibúfer, si existe, en lugar de la ventana siguiente en el orden cíclico estándar; véase 9.3 Edición en el minibuffer). C-M-S-v (scroll-other-window-down) desplaza la siguiente ventana hacia abajo de forma similar. Del mismo modo, C-M-S-l (recenter-other-window) se comporta como C-l (recenter-top-bottom) en la siguiente ventana.

Si establece mouse-autoselect-window a un valor no nulo, al mover el ratón sobre una ventana diferente se selecciona esa ventana. Esta función está desactivada por defecto.

21.4 Visualización en Otra Ventana

C-x 4 es una tecla prefijo para una variedad de comandos que cambian a un búfer en una ventana diferente, ya sea otra ventana existente, o una nueva ventana creada dividiendo la ventana seleccionada. Ver 21.6.1 Cómo Funciona display-buffer, para saber cómo Emacs elige o crea la ventana a usar.

Ctrl-x 4b nombrebúfer RETURN (C-x 4 b nombrebúfer RET)

Selecciona nombrebúfer en otra ventana (switch-to-buffer-other-window). Véase 20.1 Creación y Selección de Búferes.

Ctrl-x 4 Ctrl-o nombrebúfer RETURN (C-x 4 C-o nombrebúfer RET)

Muestra nombrebúfer en alguna ventana, sin intentar seleccionarlo (display-buffer). Ver 21.6. Mostrar un Búfer en una Ventana, para más detalles sobre cómo se elige la ventana.

Ctrl-x 4f nombrearchivo RETURN (C-x 4 f nombrearchivo RET)

Visita el archivo nombrearchivo y selecciona su búfer en otra ventana (find-file-other-window). Véase 19.2 Visitar Archivos.

Ctrl-x 4d directorio RETURN (C-x 4 d directorio RET)

Selecciona un búfer de Dired para el directorio en otra ventana (dired-other-window). Véase 31 Dired, el Editor de Directorios.

Ctrl-x 4m (C-x 4 m)

Comienza a redactar un mensaje de correo, de forma similar a C-x m (véase 33 Envío de Correo), pero en otra ventana (compose-mail-other-window).

Ctrl-x 4. (C-x 4 .)

Busca la definición de un identificador, de forma similar a M-. (véase 29.4 Buscar Referencias de Identificador), pero en otra ventana (xref-find-definitions-other-window).

Ctrl-x 4r (C-x 4 r nombrearchivo RET)

Visita el archivo de sólo lectura, y selecciona su búfer en otra ventana (find-file-read-only-other-window). Véase 19.2 Visitar Archivos.

Ctrl-x 44 (C-x 4 4)

Un comando prefijo más general afecta al búfer mostrado por el siguiente comando invocado inmediatamente después de este comando prefijo. Solicita que el búfer de la orden siguiente se muestre en otra ventana.

Ctrl-x 41 (C-x 4 1)

Este comando de prefijo general solicita el búfer del comando siguiente que se mostrará en la misma ventana.

21.5 Borrar y Redimensionar Ventanas

Ctrl-x 0 (C-x 0)

Borra la ventana seleccionada (delete-window).

Ctrl-x 1 (C-x 1)

Elimina todas las ventanas del marco seleccionado excepto la ventana seleccionada (delete-other-windows).

Ctrl-x 40 (C-x 4 0)

Elimina la ventana seleccionada y mata el búfer que aparecía en ella (kill-buffer-and-window). El último carácter de esta secuencia de teclas es un cero.

Alt-x delete-windows-on RETURN búfer RETURN
(M-x delete-windows-on RET búfer RET)

Elimina las ventanas que muestran el búfer especificado.

Ctrl-x ^ (C-x ^)

Aumenta el tamaño de la ventana seleccionada (enlarge-window).

Ctrl-x } (C-x })

Amplía la ventana seleccionada (enlarge-window-horizontally).

Ctrl-x { (C-x {)

Hace más estrecha la ventana seleccionada (shrink-window-horizontally). Hace más ancha la ventana seleccionada (enlarge-window-horizontally).

Ctrl-x - (C-x -)

Reduce esta ventana si su búfer no necesita tantas líneas (shrink-window-if-larger-than-buffer).

Ctrl-x + (C-x +)

Hace que todas las ventanas tengan la misma altura (balance-windows).

Para borrar la ventana seleccionada, escriba Ctrl-x 0 (C-x 0, delete-window). (Es un cero.) Una vez borrada una ventana, el espacio que ocupaba se cede a una ventana adyacente (pero no a la ventana del minibúfer, aunque esté activa en ese momento). La supresión de la ventana no tiene ningún efecto sobre el búfer que mostraba; el búfer sigue existiendo, y todavía se puede pasar a él con C-x b. La opción delete-window-choose-selected controla qué ventana es elegida como la nueva ventana seleccionada en su lugar (ver Borrar Ventanas en El Manual de Referencia de Emacs Lisp).

C-x 4 0 (kill-buffer-and-window) es un comando más fuerte que C-x 0; mata el búfer actual y luego borra la ventana seleccionada.

C-x 1 (delete-other-windows) borra todas las ventanas, excepto la seleccionada; la ventana seleccionada se expande para usar todo el marco. (Este comando no puede utilizarse mientras la ventana del minibúfer está activa; al intentarlo se produce un error).

M-x delete-windows-on borra las ventanas que muestran un búfer específico. Pide el búfer, por defecto el búfer actual. Con el argumento de prefijo cero, C-u 0, este comando borra ventanas sólo en los marcos de la pantalla actual.

El comando C-x ^ (enlarge-window) hace la ventana seleccionada una línea más alta, tomando espacio de una ventana verticalmente adyacente sin cambiar la altura del marco. Con un argumento numérico positivo, este comando aumenta la altura de la ventana en esa cantidad de líneas; con un argumento negativo, reduce la altura en esa cantidad de líneas. Si no hay ventanas adyacentes verticalmente (es decir, la ventana está a la altura completa del marco), esto indica un error. El comando también indica un error si intenta reducir la altura de cualquier ventana por debajo de un cierto número mínimo de líneas, especificado por la variable window-min-height (el valor por defecto es 4).

Del mismo modo, C-x } (enlarge-window-horizontally) ensancha la ventana seleccionada, y C-x { (shrink-window-horizontally) la estrecha. Estos comandos señalan un error si se intenta reducir el ancho de cualquier ventana por debajo de un cierto número mínimo de columnas, especificado por la variable window-min-width (el valor por defecto es 10).

Los clics del ratón en la línea de modo (véase 22.5 Comandos del Ratón en la Línea de Modo) o en los divisores de ventana (véase 22.13 Separadores de Ventanas) proporcionan otra forma de cambiar la altura de las ventanas y de dividir o eliminar ventanas.

C-x - (shrink-window-if-larger-than-buffer) reduce la altura de la ventana seleccionada, si es más alta de lo necesario para mostrar todo el texto del búfer que está mostrando. Cede las líneas sobrantes a otras ventanas del marco.

También puede utilizar C-x + (balance-windows) para igualar las alturas de todas las ventanas del marco seleccionado.

21.6. Mostrar un Búfer en una Ventana

Es una operación común de Emacs mostrar o hacer aparecer algún búfer en respuesta a un comando del Usuario. Hay varias maneras diferentes en que los comandos hacen esto.

Muchos comandos, como C-x C-f (find-file), por defecto muestran el búfer «ocupando» la ventana seleccionada, esperando que la atención del Usuario se desvíe a ese búfer.

Algunos comandos tratan de mostrar de forma inteligente, intentando no ocupar la ventana seleccionada, por ejemplo, separando una nueva ventana y mostrando allí el búfer deseado. Estos comandos, que incluyen varios comandos de ayuda (ver 11 Ayuda), funcionan llamando internamente a display-búfer. Ver 21.6.1 Cómo Funciona display-buffer, para más detalles.

Otros comandos hacen lo mismo que display-buffer, y además seleccionan la ventana de visualización para que pueda empezar a editar su búfer. El comando M-g M-n (next-error) es un ejemplo (ver 28.2 Modo Compilación). Tales comandos funcionan llamando internamente a la función pop-to-búfer. Ver Cambiar a un Búfer en una Ventana en el Manual de Referencia de Emacs Lisp.

Los comandos con nombres que terminan en other-window se comportan como display-buffer, excepto que nunca se muestran en la ventana seleccionada. Varios de estos comandos están enlazados en la tecla de prefijo Ctrl-x 4 (C-x 4) (ver 21.4 Visualización en Otra Ventana).

Los comandos cuyos nombres terminan en other-frame se comportan como display-buffer, salvo que (i) nunca se muestran en la ventana seleccionada y (ii) prefieren crear un nuevo marco o usar una ventana en otro marco para mostrar el búfer deseado. Varios de estos comandos están vinculados a la tecla de prefijo Ctrl-x 5 (C-x 5).

21.6.1 Cómo Funciona display-buffer

El comando display-buffer (así como los comandos que lo llaman internamente) elige una ventana para mostrar siguiendo los pasos que se dan a continuación. Véase Elegir una Ventana para Mostrar un Búfer en El Manual de Referencia de Emacs Lisp, para más detalles sobre cómo alterar esta secuencia de pasos.

  • Si el búfer debe mostrarse en la ventana seleccionada independientemente de otras consideraciones, reutiliza la ventana seleccionada. Por defecto, este paso se omite, pero puede decirle a Emacs que no lo omita añadiendo una expresión regular que coincida con el nombre del búfer junto con una referencia a la función display-buffer-same-window``(mostrar-búfer-misma-ventana) (ver **Funciones de Acciones para Mostrar Búferes** en El Manual de Referencia de Emacs Lisp) a la opción `display-buffer-alist` (ver **Elegir Una Ventana para Mostrar** un Búfer en El Manual de Referencia de Emacs Lisp). Por ejemplo, para mostrar el búfer ``*scratch* preferiblemente en la ventana seleccionada escriba:

    (setopt
     display-buffer-alist
     '(("\\*scratch\\*" (display-buffer-same-window))))
    

    Por defecto, display-buffer-alist es nil.

  • De lo contrario, si el búfer ya se muestra en una ventana existente, reutiliza esa ventana. Normalmente, sólo se consideran las ventanas en el marco seleccionado, pero las ventanas en otros marcos también son reutilizables si usa la correspondiente entrada reusable-frames action alist (vea Listas de Acciones para la Visualización de Búferes en el Manual de Referencia de Emacs Lisp). Vea en el siguiente paso un ejemplo de cómo hacerlo.

  • De lo contrario, crea opcionalmente un nuevo marco y muestra allí el búfer. Por defecto, este paso se omite. Para habilitarlo, cambie el valor de la opción display-buffer-base-action (vea Elegir una Ventana para Mostrar un Búfer en el Manual de Referencia de Emacs Lisp) como sigue:

    (setopt
     display-buffer-base-action
     '((display-buffer-reuse-window display-buffer-pop-up-frame)
      (reusable-frames . 0)))
    

    Esta personalización también intentará que el paso anterior busque una ventana reutilizable en todos los marcos visibles o iconificados.

  • De lo contrario, intenta crear una nueva ventana dividiendo una ventana en el marco seleccionado, y muestra el búfer en esa nueva ventana.

    La división puede ser vertical u horizontal, dependiendo de las variables split-height-threshold y split-width-threshold. Estas variables deben tener valores enteros. Si split-height-threshold es menor que la altura de la ventana elegida, la división coloca la nueva ventana debajo. En caso contrario, si split-width-threshold es menor que la anchura de la ventana, la división coloca la nueva ventana a la derecha. Si no se cumple ninguna de las dos condiciones, Emacs intenta dividir de forma que la nueva ventana quede debajo, pero sólo si la ventana no se ha dividido antes (para evitar una división excesiva).

  • En caso contrario, muestra el búfer en una ventana que ya lo mostraba previamente. Normalmente, sólo se tienen en cuenta las ventanas del marco seleccionado, pero con una entrada reusable-frames de la lista de acciones adecuada (véase más arriba) la ventana puede estar también en otro marco.

  • De lo contrario, muestra el búfer en una ventana existente en el marco seleccionado.

  • Si todos los métodos anteriores fallan por cualquier motivo, crea un nuevo marco y muestra el búfer allí.

21.6.2 Visualización de Búferes no Editables

Algunos búferes se muestran en ventanas para su lectura en lugar de para su edición. Los comandos de ayuda (ver 11 Ayuda) suelen utilizar un búfer llamado *Help* para este propósito, el minibúfer de completado (ver 9.4 Completado) utiliza un búfer llamado *Completions*, etc. Estos búferes suelen mostrarse sólo durante un corto periodo de tiempo.

Normalmente, Emacs elige la ventana para tales visualizaciones temporales mediante display-buffer, como se describe en la subsección anterior. El búfer *Completions*, por otro lado, se muestra normalmente en una ventana en la parte inferior del marco seleccionado, independientemente del número de ventanas que ya se muestren en ese marco.

Si prefiere que Emacs muestre un búfer temporal de una manera diferente, personalice la variable display-buffer-alist (vea Eligiendo una Ventana para Mostrar un Búfer en El Manual de Referencia de Emacs Lisp) apropiadamente. Por ejemplo, para mostrar *Completions* siempre debajo de la ventana seleccionada, use la siguiente forma en su archivo de inicialización (vea 50.4. El Archivo de Inicialización de Emacs):

(setopt
 display-buffer-alist
  '(("\\*Completions\\*" display-buffer-below-selected)))

El búfer *Completions* también es especial en el sentido de que Emacs normalmente intenta hacer su ventana tan grande como sea necesario para mostrar todo su contenido. Para redimensionar las ventanas que muestran otras pantallas temporales, como, por ejemplo, el búfer *Help*, activa el modo menor (ver 24.2 Modos Menores) temp-buffer-resize-mode (ver Ventanas Temporales en el Manual de Referencia de Emacs Lisp).

El tamaño máximo de las ventanas redimensionadas por temp-buffer-resize-mode puede controlarse personalizando las opciones temp-buffer-max-height y temp-buffer-max-width (ver Ventanas Temporales en el Manual de Referencia de Emacs Lisp), y no puede exceder el tamaño del marco que las contiene.

21.7 Características Convenientes para el Manejo de Ventanas

El modo Winner es un modo menor global que registra los cambios en la configuración de la ventana (es decir, cómo se particionan los marcos en ventanas), para que pueda deshacerlos. Puede activar este modo con M-x winner-mode, o personalizando la variable winner-mode. Cuando el modo está activado, Ctrl-c (``C-c izquierda`, winner-undo) deshace el último cambio de configuración de la ventana. Si cambia de opinión mientras deshace, puede rehacer los cambios que había deshecho usando Ctrl-c (C-c derecha, M-x winner-redo). Para evitar que el modo Winner vincule C-c izquierda y C-c derecha, puede personalizar la variable winner-dont-bind-my-keys a un valor no nulo. Por defecto, el modo Winner almacena un máximo de 200 configuraciones de ventana por marco, pero puede cambiarlo modificando la variable winner-ring-size. Si hay algunos búferes cuyas ventanas no desea que Winner mode restaure, añada sus nombres a la variable de lista winner-boring-buffers o a la regexp winner-boring-buffers-regexp.

El modo de seguimiento (M-x follow-mode) sincroniza varias ventanas en el mismo búfer para que siempre muestren secciones adyacentes de ese búfer. Véase 15.7 Modo de Seguimiento.

El paquete Windmove define comandos para moverse direccionalmente entre ventanas vecinas en un marco. M-x windmove-right selecciona la ventana inmediatamente a la derecha de la actualmente seleccionada, y de forma similar para las contrapartidas izquierda, arriba y abajo. windmove-default-keybindings vincula estos comandos a Shift- (S-right) etc.; al hacerlo se desactiva la selección de mayúsculas para esas teclas (ver 12.6 Selección mediante Mayúsculas (Shift)). De la misma manera que se pueden definir combinaciones de teclas para comandos que seleccionan ventanas direccionalmente, puede usar windmove-display-default-keybindings para definir combinaciones de teclas para comandos que especifican en qué dirección mostrar la ventana para el búfer que el siguiente comando va a mostrar. También hay windmove-delete-default-keybindings para definir keybindings para comandos que borran ventanas direccionalmente, y windmove-swap-states-default-keybindings que define combinaciones de teclas para comandos que intercambian el contenido de la ventana seleccionada con la ventana en la dirección especificada.

El comando M-x compare-windows le permite comparar el texto mostrado en diferentes ventanas. Véase 19.9 Comparación de Archivos.

El modo Desplazar Todo (M-x scroll-all-mode) es un modo menor global que hace que los comandos de desplazamiento y los comandos de movimiento de puntos se apliquen a todas las ventanas.

21.8 Línea de Pestañas de Ventana

El comando global-tab-line-mode activa la visualización de una línea de pestañas en la línea superior de la pantalla de cada ventana. La línea de pestañas muestra botones especiales («pestañas») para cada búfer que se mostró en una ventana, y permite cambiar a cualquiera de estos búferes pulsando el botón correspondiente. Pulsando sobre el icono + se añade un nuevo búfer a la línea de pestañas de búferes de la ventana, y pulsando sobre el icono x de una pestaña se borra. La rueda del ratón en la línea de pestañas desplaza las pestañas horizontalmente.

Seleccionar la pestaña local de la ventana anterior es lo mismo que teclear Ctrl-x (C-x IZQUIERDA, previous-búfer), seleccionar la pestaña siguiente es lo mismo que teclear Ctrl-x (C-x DERECHA, next-búfer). Ambos comandos admiten un prefijo numérico como argumento de repetición.

Puede personalizar la variable tab-line-tabs-function para definir el contenido preferido de la línea de tabulación. Por defecto, muestra todos los búferes visitados anteriormente en la ventana, como se ha descrito anteriormente. Pero también puede configurarla para que muestre una lista de búferes con el mismo modo principal que el búfer actual, o para que muestre búferes agrupados por su modo principal, donde al hacer clic en el nombre del modo en la primera pestaña se muestra una lista de todos los modos principales donde puede seleccionar otro grupo de búferes.

Tenga en cuenta que la línea de pestañas es diferente de la barra de pestañas (consulte 22.17 Barras de Pestañas). Mientras que las pestañas de la Barra de pestañas de la parte superior de cada marco se usan para cambiar entre configuraciones de ventanas que contienen varias ventanas con búferes, las pestañas de la Línea de pestañas de la parte superior de cada ventana se usan para cambiar entre los búferes de la ventana.