2010-10-15 21 views
6

A diferencia de los comandos de copiar/cortar/pegar del estilo de Windows, no pude entender anillo concepto en emacs.lo que se llama anillo en emacs?

Dado que no programo con mucha frecuencia en emacs, no podría haberme dado cuenta del valor de la función de timbre. ¿Puede decirme qué se llama anillo en emacs y cómo usarlo?

+1

No creo que esta pregunta esté fuera de tema aquí. Es una pregunta de tecnología informática sobre cómo se implementa el portapapeles en Emacs. –

+4

Cuando alguien dice que una parte de la tecnología informática es "autoexplicativa", creo que realmente solo significa que la aprendieron hace tanto tiempo que olvidaron el momento en que no la entendieron. :-) – Ken

+1

el anillo de emacs no es un simple portapapeles, y ciertamente no se explica por sí mismo. como de costumbre, cuando emacs hace algo, lo hace de una manera súper característica, compleja de comprender que es súper poderosa para los pocos usuarios para quienes invertir el tiempo para aprender vale la pena. –

Respuesta

12

Bien, déjame intentar en palabras simples. Cada vez que copie (M-w) o corte (C-w), la selección se inserta en un superior del denominado anillo (que es como una lista cerrada).

Lo interesante viene después. Ahora, si pega con C-y, la región pegada más recientemente (que ahora es el elemento frontal del anillo) se inserta en el búfer. Si continúa presionando M-y, el texto se reemplaza sucesivamente con elementos antiguos y antiguos del anillo, por así decirlo, el anillo se gira y el texto anterior se designa como frente elemento cada vez. Esto le da acceso a un texto antiguo cortado/copiado.

La parte útil no termina aquí. Si cortar/copiar un texto diferente, que se insertará en el parte superior del anillo, y el anillo se hará girar de nuevo de forma que la parte superior es ahora la parte delantera . Y puede iniciar nuevamente la secuencia C-y M-y, con el texto recién insertado designado como frente.

lo tanto, para concluir:

  • la parte superior del anillo es el lugar donde se inserta el recién copiado/corte (M-w/C-w) de texto. Cuando eso sucede, el elemento superior se convierte en el elemento frontal.
  • la frente elemento del anillo es el lugar en el que pegar (aka un tirón) comandos de C-y y M-y operar, insertándolo en la memoria intermedia. M-y también gira el anillo, de modo que el texto anterior en el anillo se convierte en frente.

Puede visualizarlo por imaginar el círculo con la parte delantera fijo a las 12 horas posición, pero no forma parte del anillo. El superior es parte del anillo en su lugar, por lo que cuando algún comando gira el anillo, el superior también se gira.

alt text

3

Un anillo es un buffer circular. Piensa en un rolodex.

Si está matando/tirando a un anillo, puede avanzar y retroceder en su historial.

1

Del Emacs manual: "Un anillo es una estructura de datos de tamaño fijo que admite la inserción, borrado, rotación y referencia de módulo indexado y recorrido". En otras palabras, es un circular queue.

4

Cada vez que copia o corta algo en el portapapeles de Windows, pierde lo que tenía antes en el portapapeles. (Aunque algunos programas almacenarán el contenido anterior del portapapeles) El "anillo" de emacs almacenará el contenido del portapapeles anterior incluso después de copiar/tirar/cortar/matar cosas. Puede ser útil si te acostumbras porque te permite almacenar más de una cosa en el portapapeles a la vez, y reduce las posibilidades de sobreescribir accidentalmente algo que cortaste en el portapapeles como lo hiciste en Windows.

2

En Ubuntu, con el emacs-goodies-el paquete instalado:

Prensa C-(M-x browse-kill-ringRETC-)

Esto define una macro de teclado temporal que llama browse-kill-ring al pulsar C-x e.

Ahora no tiene que leer sobre el anillo de muerte, realmente puede ver lo que contiene.

Experimento con C-w (corte), M-w (copia), C-y (tirón) y C-y M-y (tirón siguiente en el anillo), y presione C-x e para ver el efecto sobre el anillo de corte.

+0

¿'browse-kill-ring' es una función de biblioteca estándar? No puedo encontrarlo. –

+0

@ Török Gábor: Vaya, no me di cuenta de que no es una función de biblioteca estándar. Lo proporciona el paquete emacs-goodies-el en Ubuntu. El código se puede encontrar aquí: http://www.fan.gr.jp/~ring/doc/misc/browse-kill-ring.el – unutbu

+0

, Drew

Cuestiones relacionadas