2009-06-24 20 views
15

En vim, el bloqueo visual se puede recuperar mediante el comando 'gv' para que se puedan aplicar varios comandos fácilmente. (como, comentar, luego sangrar, luego do_something_fun).Emacs vuelva a seleccionar la región, como el acceso directo de Vim 'gv' hace

En Emacs, ¿cómo se puede lograr esto? [C-xC-x] solo funciona cuando la posición actual del cursor permanece donde terminó el bloque anterior. Si se modificó el bloque anterior, el más cercano es pasar por 'punto a registrar' y 'saltar para registrar'.

Solo tengo curiosidad por saber si hay un comando incorporado de Emacs que lo haga de una vez.

+2

Aww, ¿por qué ir de vim a emacs? – Brian

+7

No quiero estar en un debate de elección religiosa de editor. Hace 2 años, cambié a Emacs, y me gusta. – Raymond

+0

¿Podría describir lo que quiere decir con más detalle? No estoy lo suficientemente familiarizado con vim para saber lo que estás pidiendo. – baudtack

Respuesta

10

Si entiendo correctamente lo que está pidiendo, entonces no necesita hacer nada. Cuando selecciona una región en emacs, permanece seleccionada hasta que seleccione una nueva. Entonces puede seleccionar la región y luego realizar tantas acciones como desee.

+1

Usando Emacs 23 (.0.93.1). Gracias, pero no funcionó como lo mencionaste. Estoy seleccionando Resion usando CTRL-SPC para comenzar, posisión actual para el final. Región destacados después de la selección. La aplicación de un comando hace que este hightlight desaparezca. Supuse que esta región deselecciona. – Raymond

+2

@Raymond Intente realizar otra acción. La región ya no está resaltada, pero aún está seleccionada. – baudtack

+0

+1 Estoy de acuerdo en que esta solución funciona. –

11

Si el modo Marca de transición está desactivado, la región siempre está activa. Si está activado (lo que suena es su situación), puede configurar mark-even-if-inactive en no-nil para permitir que los comandos de región funcionen mientras la región no está resaltada.

Sin embargo, tenga en cuenta que también puede retroceder en las posiciones de marca anteriores usando C-u C-SPC - esto hará que aparezca el anillo de marca. Una vez que haya vuelto a donde desea estar, C-x C-x volverá a iluminar la región que desee. (Puede tomar un poco de tiempo jugar con esta función para obtener una idea, pero es por eso que no puedo cambiarme de Emacs ahora).

+0

Con esto en mente, Emacs parece ser mucho más flexible que vi en este sentido. Sin embargo, C-x C-x debería ser suficiente en la mayoría de las situaciones descritas por el OP. – fotNelton

1

También se aplica la restricción de región (CTRL-x nn) cada comando a partir de ese momento solo para esa región; no se puede dañar el resto del búfer, ni siquiera se muestra. Después de la edición, amplíe (CTRL-x n w) para recuperar todo el buffer. CMM

+0

Bueno, gracias, eso es interesante. – fotNelton

2

Parece que está buscando la selección secundaria, que se mantiene incluso aunque la región cambie. (Es allí se queda hasta que se desplace.)

Ver:

0

Dado que las respuestas aquí y para otras preguntas similares SO no me ayudaron (CUA-mode, Emacs 24, no solo sangría-rígidamente), continué buscando y finalmente encontré un reselect-last-region definido en este collection of custom function (starting line 670). Eso funcionó como un encanto para mí, y con suerte para otros que todavía llegan aquí.

Cuestiones relacionadas