(Your question is pretty open-ended, so it might get closed as being primarily opinion-based.)
What I use: Icicles multi-command icicle-goto-marker
(bound to C-- C-SPC
) to trip around the marks in any buffer (mark-ring
), and icicle-goto-global-marker
(C-- C-x C-SPC
) to trip among the global marks (global-mark-ring
).
The lines of text where the markers are located are used as completion candidates. You can type some text (e.g., substring, regexp) to narrow the candidates to the lines that match. You can cycle among the matching lines, visiting any that you like. If you also use library crosshairs.el
then position of a marker you visit is highlighted temporarily with crosshairs, so you can quickly see where it is.
Here is part of the doc string for 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.
(global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark)))
.