Secara efektif menggunakan cincin tanda

29

Saya telah menggunakan tanda untuk memilih wilayah buffer. Misalnya, saya tahu urutannya C-<space> C-s foodapat digunakan untuk memilih semua teks antara titik saat ini dan titik setelah pencarian foo.

Baru-baru ini saya menemukan keberadaan cincin tanda, sehingga saya dapat C-<space> C-<space>meninggalkan tanda, memindahkan titik di buffer, dan kemudian C-u C-<space>melompat kembali.

Adakah saran, panduan, atau kiat untuk bernavigasi secara efektif menggunakan cincin tanda?

Patrick Steele
sumber
2
Terima kasih telah mengajukan pertanyaan. Satu pemikiran yang terjadi pada saya adalah membuat ikatan lebih cepat untuk "menambahkan tanda", misalnya (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli

Jawaban:

22

Helm memiliki antarmuka untuk browsing baik mark-cincin lokal dan global: helm-all-mark-rings.

Lihat mini-guide untuk deskripsi singkat dan tangkapan layar.

Dan jika Anda lebih suka Ivy / Swiper / Counsel , lihat counsel-mark-ring.

Davor Cubranic
sumber
Luar biasa. Satu hal yang dapat meningkatkan ini adalah tindakan untuk menghapus tanda dari cincin tanda ...
Joe Corneli
12

Ketika Anda mengatur set-mark-command-repeat-popke tvia

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

Anda dapat terus menekan C-SPCsetelah doa pertama C-u C-SPCuntuk melompat ke lokasi sebelumnya yang disimpan dalam cincin tanda.

itu hanya
sumber
10

Saya merasa lebih mudah untuk menggunakan register untuk menandai lokasi: C-x r <space>dan kemudian surat untuk menandai, C-x r jdan surat untuk melompat kembali. Saya dapat mempertahankan sejumlah tanda, sangat berguna ketika berganti-ganti antara beberapa buffer

Alain
sumber
2
Saya selalu mendapati diri saya berhenti sejenak untuk memutuskan surat terbaik untuk menetapkan register saya ke ...
nispio
@nispio beberapa waktu lalu saya telah menerapkan ekstensi [email protected]: atykhonov / iregister.el.git Salah satu idenya adalah: izinkan untuk melewati keputusan yang mendaftar untuk digunakan. Mungkin ekstensi tidak akan berguna bagi Anda, tetapi Anda dapat meminjam ide di mana skrip khusus Anda hanya dapat menggunakan register gratis dan kemudian akan memungkinkan untuk menelusuri register yang digunakan dan mengembalikan.
Andriy Tykhonov
9

C-x C-xuntuk exchange-mark-and-pointmemiliki penggunaan yang mirip dengan C-u C-space. Ini memungkinkan Anda memantul di antara titik dan tanda terakhir. Agak aneh untuk memantul transient-mark-modesaat mengaktifkan tanda dan memilih wilayah.

dgtized
sumber
C-x C-xdengan transient-mark-mode sangat baik untuk memilih hal terakhir yang Anda pilih (berguna dengan mode iedit) atau disentak.
Rune Kaagaard
8

Terlepas dari tips lain yang Anda dapatkan di sini saya pikir saya harus menyebutkan yang C-smenetapkan tanda untuk Anda, jadi tidak perlu untuk melakukannya secara eksplisit. Juga, banyak perintah yang "bergerak sangat berpotensi" ( beginning-of-bufferdan end-of-buffermisalnya) juga menetapkan tanda di mana Anda memulai. Bersama dengan cara lain untuk bekerja dengan tanda (pop, titik pertukaran dan tanda, dll) itu adalah cara yang cukup kuat untuk bekerja dengan buffer, setelah Anda memahami cara kerjanya. Perhatikan juga bahwa jika Anda menarik teks ke dalam buffer, titik dan tandai mengelilingi teks yang ditarik.

Mathias Dahl
sumber
5

(Pertanyaan Anda cukup terbuka, jadi mungkin ditutup karena berdasarkan pendapat.)

Apa yang saya gunakan: Icicles multi-command icicle-goto-marker (terikat ke C-- C-SPC) untuk menjelajah tanda di buffer ( mark-ring), dan icicle-goto-global-marker( C-- C-x C-SPC) untuk perjalanan di antara tanda global ( global-mark-ring).

Baris teks tempat penanda ditempatkan digunakan sebagai kandidat pelengkap. Anda dapat mengetik beberapa teks (misalnya, substring, regexp) untuk mempersempit kandidat ke garis yang cocok. Anda dapat bersepeda di antara garis yang cocok, mengunjungi apa pun yang Anda suka. Jika Anda juga menggunakan pustaka crosshairs.elmaka posisi marker yang Anda kunjungi disorot sementara dengan garis bidik, sehingga Anda dapat dengan cepat melihat di mana itu.

Ini adalah bagian dari string doc untuk 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.
Drew
sumber