Bisakah kursor melompat kembali ke posisi sebelumnya?

24

Bisakah saya membuat kursor saya di buffer melompat kembali ke posisi terakhir? (lebih disukai tanpa harus menandai posisi sebelumnya)

Sebagai contoh, Ca melompat ke awal garis saat ini, dapatkah saya melompat kembali ke tempat sebelumnya?

Misalnya, ketika Cx Cf untuk membuka file di direktori yang berbeda, saya ingin melompat kembali ke posisi sebelumnya dalam nama path.

Terima kasih.

Tim
sumber
Apakah C-x xyang berjalan akan exchange-point-and-marklakukan? Emacs tidak menyimpan semua gerakan kursor, hanya gerakan yang secara khusus Anda beri tahu. Menambahkan dan memunculkan tanda adalah salah satu cara untuk menyimpan riwayat pergerakan kursor. emacswiki.org/emacs/MarkCommands - ini adalah diskusi yang bagus tentang topik ini.
wvxvw
1
C-x xtidak jelas. M-x exchange-point-and-mark: tidak ada tanda yang diatur dalam buffer ini.
Tim
@Tim Itu C-x C-x. Anda juga harus menetapkan tanda terlebih dahulu agar bisa berfungsi. Untuk menetapkan tanda secara eksplisit, Anda harus melakukannya C-SPC. Untuk melompat kembali ke tanda sebelumnya, Anda lakukan C-u C-SPC.
Kaushal Modi
Ya, benar, maaf C-x C-x. C-x xmengikat saya sendiri.
wvxvw
1
Tidak yakin apakah ini duplikat, tetapi emacs.stackexchange.com/q/3421/454 mungkin berguna.
phils

Jawaban:

30

Berikut adalah beberapa ikatan yang terkait tanda yang dapat membantu Anda:

  • C-SPC- menetapkan tanda dan mengaktifkan wilayah (terikat ke set-mark-command)
  • C-SPC C-SPC - setel tanda (mengaktifkan dan kemudian menonaktifkan wilayah)
  • C-x C-x - terikat exchange-point-and-mark
  • C-u C-SPC - pindah ke tanda sebelumnya

Periksa dokumentasi Tandai untuk pemahaman yang lebih baik tentang topik ini.

Kaushal Modi
sumber
9
Perhatikan bahwa perintah yang dapat memindahkan kursor ke jarak sewenang-wenang (tetapi berpotensi besar) dari tempat Anda sebelumnya (biasanya) akan secara otomatis menekan tanda terlebih dahulu. Jadi Anda bisa sering kembali ke tempat Anda sebelumnya dengan satu C-u C-SPC.
phils
Dengan counsel-mark-ringitu juga memungkinkan untuk membuat daftar semua tanda dan menavigasi dengan kursor, mendapatkan pratinjau waktu-nyata dalam buffer.
Arialdo Martini
1

Anda dapat menggunakan `Register '.

Dari file info emacs

13.1 Menyimpan Posisi di Register

C-x r <SPC> R' Record the position of point and the current buffer in register R (point-to-register ').

C-x r j R' Jump to the position and buffer saved in register R (lompat-mendaftar ').

Mengetik C-x r <SPC>' (point-to-register '), diikuti oleh karakter `R', menyimpan posisi point dan buffer saat ini di register R. Register menyimpan informasi ini sampai Anda menyimpan sesuatu yang lain di dalamnya.

Perintah `Cx rj R 'beralih ke buffer yang direkam dalam register R, dan memindahkan titik ke posisi yang direkam. Isi register tidak diubah, sehingga Anda dapat melompat ke posisi yang disimpan beberapa kali.

Jika Anda menggunakan C-x r j' to go to a saved position, but the buffer it was saved from has been killed,Cx rj 'mencoba membuat buffer lagi dengan mengunjungi file yang sama. Tentu saja, ini hanya berfungsi untuk buffer yang mengunjungi file.

joe
sumber