Usando efectivamente el anillo de marca

29

He usado la marca para seleccionar regiones de un búfer. Por ejemplo, sé que la secuencia C-<space> C-s foose puede usar para seleccionar todo el texto entre el punto actual y el punto después de una búsqueda foo.

Recientemente descubrí la existencia del anillo de la marca, por lo que puedo C-<space> C-<space>dejar una marca, mover el punto en el búfer y luego C-u C-<space>saltar hacia atrás.

¿Hay alguna sugerencia, guía o consejo para navegar de manera efectiva usando el anillo de marcas?

Patrick Steele
fuente
2
Gracias por hacer la pregunta. Un pensamiento que se me ocurre es hacer un enlace más rápido para "agregar una marca", por ejemplo (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli

Respuestas:

22

Timón tiene una interfaz para navegar por ambos márgenes de anillos locales y globales: helm-all-mark-rings.

Vea la mini-guía para una breve descripción y una captura de pantalla.

Y si prefieres Ivy / Swiper / Counsel , mira counsel-mark-ring.

Davor Cubranic
fuente
Increíble. Una cosa que podría mejorar esto es una acción para eliminar la marca del anillo de marca ...
Joe Corneli
12

Cuando configuras set-mark-command-repeat-popa ttravés de

(setq set-mark-command-repeat-pop t)

puede seguir presionando C-SPCdespués de la primera invocación de C-u C-SPCpara saltar a ubicaciones anteriores almacenadas en el anillo de marcas.

itsjeyd
fuente
10

Me resulta más fácil usar registros para marcar ubicaciones: C-x r <space>y luego una letra para marcar C-x r jy una letra para saltar hacia atrás. Puedo mantener una serie de marcas, muy útil al alternar entre múltiples buffers

Alain
fuente
2
Siempre me detengo para decidir la mejor carta para asignar mi registro a ...
nispio
@nispio hace algún tiempo implementé la extensión [email protected]: atykhonov / iregister.el.git Una de las ideas era: permitir omitir la decisión de qué registro utilizar. Puede que la extensión no sea útil para usted, pero puede tomar prestada la idea de que su script personalizado podría usar cualquier registro gratuito y luego le permitirá explorar los registros usados ​​y restaurarlos.
Andriy Tykhonov el
9

C-x C-xpara exchange-mark-and-pointtiene un uso similar a C-u C-space. Te permite rebotar entre un punto y la última marca. Es un poco extraño rebotar, transient-mark-modeya que activa la marca y selecciona la región.

dgtized
fuente
C-x C-xcon el modo de marca transitoria es excelente para seleccionar lo último que seleccionó (útil con el modo iedit) o ​​tiró.
Rune Kaagaard
8

Además de los otros consejos que tiene aquí, pensé que debería mencionar que C-sestablece la marca para usted, por lo que no hay necesidad de hacerlo explícitamente. Además, muchos comandos que "se mueven un camino potencialmente largo" ( beginning-of-buffery, end-of-bufferpor ejemplo) también establecen la marca donde comenzó. Junto con las otras formas de trabajar con la marca (pop, punto de intercambio y marca, etc.) es una forma bastante poderosa de trabajar con un búfer, una vez que comprenda cómo funciona. También tenga en cuenta que si tira de texto en un búfer, apunte y marque alrededor del texto arrancado.

Mathias Dahl
fuente
5

(Su pregunta es bastante abierta, por lo que podría cerrarse porque se basa principalmente en la opinión).

Lo que uso: Icicles multi-command icicle-goto-marker (vinculado a C-- C-SPC) para disparar alrededor de las marcas en cualquier búfer ( mark-ring) y icicle-goto-global-marker( C-- C-x C-SPC) para disparar entre las marcas globales ( global-mark-ring).

Las líneas de texto donde se encuentran los marcadores se utilizan como candidatos de finalización. Puede escribir texto (por ejemplo, subcadena, expresión regular) para limitar los candidatos a las líneas que coinciden. Puede alternar entre las líneas coincidentes, visitando cualquiera que desee. Si también usa la biblioteca crosshairs.el, la posición de un marcador que visita se resalta temporalmente con una mira, para que pueda ver rápidamente dónde está.

Aquí hay parte de la cadena de documentación para icicle-goto-marker:

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
Dibujó
fuente