Emacs: bagaimana memilih binding kunci kustom yang bagus?

10

Saya seorang pemula Emacs dan saya ingin mulai menambahkan beberapa binding kunci kustom global untuk tugas umum seperti replace-string, replace-regex, dll yang tidak memiliki mereka secara default. Saya ingin membuat pilihan yang baik, dan saya melihat beberapa masalah:

  • Lihat semua opsi saya - Bagaimana saya bisa melihat berbagai tombol yang tidak terikat di semua mode yang saya gunakan secara teratur?

  • Kompatibilitas / konvensi - Apakah ada ikatan tidak resmi yang umum atau kunci "ruang pengguna" yang umum untuk memulai ikatan kustom pribadi?

  • Masalah lain - Apa lagi yang harus saya pertimbangkan?

Ian Mackinnon
sumber

Jawaban:

9

Coba lihat pertanyaan ini di SO: Apakah ada kombinasi kunci emacs yang disediakan untuk perintah khusus?

Mengenai melihat apa yang tersedia, ada unboundperpustakaan (lihat jawaban pertama untuk pertanyaan di atas).

Satu konvensi (diambil dari jawaban saya untuk pertanyaan itu ) adalah:

Anda dapat mendefinisikan ulang apa pun, tetapi konvensi ini untuk digunakan C-c l (di mana lada huruf).

Sebagai pengguna, Anda dapat mendefinisikan ulang kunci apa pun; tetapi biasanya terbaik untuk tetap pada urutan kunci yang terdiri dari C-c diikuti oleh huruf (huruf besar atau kecil). Kunci-kunci ini "disediakan untuk pengguna," sehingga mereka tidak akan bertentangan dengan ekstensi Emacs yang dirancang dengan benar. Tombol fungsi yang F5melaluinya F9juga disediakan untuk pengguna. Jika Anda mendefinisikan ulang beberapa kunci lain, definisi Anda mungkin ditimpa oleh ekstensi tertentu atau mode utama yang mendefinisikan kembali kunci yang sama.

Ingat saja bahwa binding utama berbeda di setiap mode (utama dan kecil), jadi apa yang tersedia di satu buffer tidak selalu tersedia di yang lain. Dan buat ikatan utama Anda pada tingkat yang paling terlokalisasi. Misalnya, jika fungsi melakukan sesuatu untuk baris kode, tidak membuat kunci global yang mengikat untuk itu, mendefinisikannya dalam keymap yang sesuai ( c++-mode-map, ruby-mode-map, dll).

Sejauh tugas spesifik Anda, apakah Anda memperhatikan:

  • M-% alias query-replace
  • C-M-% alias query-replace-regexp

Selain itu, ketika Anda mencari ( C-satau C-M-s(dan varian terbalik)), Anda dapat mengetik M-%(atau C-M-%) untuk langsung memasukkan query-replace( query-replace-regexp) dengan string pencarian sebagai hal yang harus diganti ... Cukup berguna.

Trey Jackson
sumber