Quiero seleccionar o resaltar un bloque en emacs sin usar el mouse pero hacerlo desde el teclado como el modo visual de vim. ¿Cuál es la forma más sencilla de hacer esto desde un teclado?
Quiero seleccionar o resaltar un bloque en emacs sin usar el mouse pero hacerlo desde el teclado como el modo visual de vim. ¿Cuál es la forma más sencilla de hacer esto desde un teclado?
Respuestas:
Eche un vistazo a region-rectangle en emacs.
En resumen, comienza la selección como de costumbre con Control- Space, luego mata la región con Control- x r ky pega (o tira ) el bloque eliminado con Control- x r y.
Si entiendo la pregunta correctamente, originalmente no se trata de regiones rectangulares.
C-Spc
pone una marca en la posición actual.
Donde sea que esté el cursor después, el texto entre la última marca y la posición actual está "seleccionado" (puede resaltar esto activando transient-mark-mode
, pero esto también significará que las marcas deben eliminarse cuando no desee resaltar).
Puede operar en esa región con comandos como:
C-w
. . Mata a la región. Esto elimina y pone la región en el círculo de la muerte.
C-y
. . Tirón. Esto inserta el último fragmento del anillo de muerte.
M-y
. . Anillo de muerte de ciclo. Inmediatamente después C-y
, esto reemplaza la parte arrancada por los otros fragmentos en el anillo de muerte.
M-w
. . Guarde la región en el anillo de muerte. Me gusta C-w
, pero no elimina.
Este es solo el uso básico. Las marcas también tienen otros usos. Recomiendo el tutorial ( C-h t
).
C-s
C-r
se utilizan comúnmente en este contexto para ir a buscar el final / inicio de la región. (Especialmente útil en una macro.)
M-x indent-region
.
indent-region
funciona bien, pero el c-indent-line-or-region
(el que está vinculado a la tecla de tabulación ) no lo es. La última función no funciona en las regiones marcadas , sino en las seleccionadas , es decir, la región que está resaltada como si la hubiera seleccionado con el mouse.
C-Spc
dos veces donde pusiste la marca. Eso activa el modo transient-mark-mode temporalmente (hasta que cancele (con C-g
)). Luego mueva el punto para ver aparecer la región seleccionada.
Emacs 24.4 ahora tiene modo de marca de rectángulo. Espacio Cx para invocarlo.
Consulte el artículo: "Trabajar con selecciones rectangulares" , especialmente la sección de comentarios. Consulte también la sección de la documentación del modo CUA titulada "Soporte de rectángulo CUA". También hay un buen video en vimeo .
Aunque C-SPC
es una forma común de comenzar a marcar algo desde donde sea que esté su punto, a menudo hay formas más rápidas / fáciles que no implican moverse explícitamente a los puntos de inicio / finalización ...
M-h
- un medio importante para marcar un párrafo . Un "párrafo" a menudo significa un bloque de código.
C-M-h
y C-M-@
- para marcar sexps y defuns , respectivamente. Esto funciona para varios idiomas, no solo ceceo.
Mantenga presionada la tecla Mayús , otra forma elegante de resaltar durante el movimiento. Por ejemplo, M-S-f
selecciona reenviar una palabra completa. Esto es
shift-select-mode
, y está habilitado por defecto en Emacs 24+. En algunos teclados (que no son chiclet), debería poder mantener presionado C-S-
con un solo meñique.
Puede presionar cualquiera de estos repetidamente para aumentar la selección.
(NOTA: utilícelo con C-g
frecuencia para cancelar el marcado mientras experimenta).
Hay algunos paquetes de complementos que mejoran la selección de regiones y cosas. Todos se combinan muy bien y se adaptan a diferentes casos de uso. ¡Úsalos todos!
Expandir región : Expandir región aumenta la región seleccionada en unidades semánticas. Simplemente siga presionando la tecla hasta que seleccione lo que desea. C-=
es un enlace recomendado para ello. Golpéelo varias veces para obtener lo que necesita.
Easy-Kill : useM-w
y un mnemotécnico para seleccionar diferentes tipos de cosas, como palabras, sexps, listas, etc.
Zop-to-Char : como zap-to-char , pero proporciona una buena selección y otras acciones basadas en menús.
diff-hl : resalta las regiones modificadas no confirmadas. Utilicediff-hl-mark-hunk
para seleccionar / marcar un trozo.
Utilice Control- Spacepara establecer una marca y mover el cursor.
El transient-mark-mode
resaltará las selecciones para usted. M- x transient-mark-mode
.
Puede configurar Emacs para habilitar este modo por defecto usando una personalización. M- x customize-option
RET transient-mark-mode
.
... y en caso de que esté utilizando Ubuntu y C-spcno funcione para usted: debe borrar la combinación de teclas del "siguiente método de entrada" de IBus, como en
ejecute
ibus-setup
y cambie el enlace de teclas para el "siguiente método de entrada" a otra cosa (o elimínelo por completo haciendo clic en el botón "..." y luego en el botón "Eliminar").
Cita extraída de la respuesta a una pregunta SO.
Para expandir la respuesta de Edin Salkovic, si usa el modo CUA, puede usar para comenzar una selección de bloque visual. Hay muchos atajos para controlar la selección de bloques descritos en la documentación de CUA .
Con Emacs 25, simplemente presione C- Spacey luego mueva el cursor donde desee resaltar / seleccionar la región de texto que le interese. Después de eso, es posible que necesite estos comandos:
mark-defun