Konvensi tentang menggunakan Cx atau Cc sebagai kunci awalan

16

Apa konvensi untuk menggunakan C-x, C-catau M-sebagai kunci awalan?

Misalnya: apakah C-x, dll., Untuk menyimpan atau mengunjungi buffer? Apakah C-c, dll., Untuk mengedit teks?

Latar Belakang

Mungkin ini pertanyaan konyol. Saya menggunakan keyboard Spanyol, dan kadang-kadang mendefinisikan kembali keybindings yang umum untuk keyboard bahasa Inggris (QWERTY). Sebagai contoh: perintah shell terikat pada vanilla Emacs M-!. Saya mengikatnya sebagai M-¡gantinya, karena M-!itulah M-shift-1, yang tidak bisa saya tekan dengan mudah. Saya bertanya-tanya apakah ada konvensi yang saya timpa ketika saya melakukan perubahan semacam ini

anquegi
sumber
seperti M-xuntuk "jalankan perintah extended, Ini adalah pintu gerbang ke banyak hal canggih yang dapat Anda capai secara interaktif di Emacs; ini memungkinkan Anda untuk menjalankan fungsi Elisp apa pun dengan nama." Apakah C-cdan C-xtidak memiliki deskripsi seperti itu?
Pinocchio

Jawaban:

21

Jika Anda berbicara tentang mengikat kunci untuk Anda gunakan sendiri, maka ini adalah aturannya: Anda dapat mengikat kunci apa saja yang Anda suka.

Jika Anda ingin memastikan untuk tidak mengikat kunci yang mungkin sudah terikat maka gunakan C-cdiikuti oleh surat. Semua kunci semacam itu dicadangkan untuk pengguna (lihat selanjutnya).


Jika Anda berbicara tentang mengikat kunci dalam kode (misalnya, perpustakaan) yang Anda tulis, untuk digunakan oleh orang lain, maka aturan (konvensi) dijelaskan di sini: simpul Konvensi Pengikatan Kunci manual Elisp.

Aturan utama di sana, terkait dengan apa yang Anda tanyakan, adalah mengenai C-c:

  • Jangan mendefinisikan C-c LETTERsebagai kunci dalam program Lisp. Urutan yang terdiri dari C-cdan huruf (baik huruf besar atau kecil) disediakan untuk pengguna; mereka adalah satu - satunya urutan yang disediakan untuk pengguna, jadi jangan memblokirnya.

  • Urutan yang terdiri dari C-cdiikuti oleh karakter kontrol atau digit dicadangkan untuk mode utama.

  • Urutan terdiri dari C-cdiikuti oleh {, }, <, >, : atau ;juga disediakan untuk mode utama.

  • Urutan yang terdiri dari C-cdiikuti oleh tanda baca atau simbol ASCII lainnya dialokasikan untuk mode minor. Menggunakannya dalam mode utama tidak sepenuhnya dilarang, tetapi jika Anda melakukannya, pengikatan mode utama dari waktu ke waktu dapat dibayangi oleh mode minor.

Anda akan perhatikan bahwa tidak ada konvensi tentang C-x. Namun, konvensi yang tidak dinyatakan, atau hanya saran / praktik yang baik adalah ini: Jika Anda mengganti beberapa yang sudah ada, mengikat Emacs standar (yaitu, yang Anda dapatkan dari Emacs sebagai didistribusikan, tanpa memuat perpustakaan pihak ketiga mana pun) maka itu mungkin membingungkan atau mengganggu beberapa pengguna kode Anda.


Anda dapat membuka dokumen itu di Emacs, dengan cara ini:

  1. C-h i, untuk membuka Info, browser doc.
  2. m el TAB RET, Untuk m enu el isp ( TABuntuk lengkap), atau cukup klik Elisplink di dengan mouse Anda.
  3. key bi TAB, lalu n TAB RETselesaikan hingga Key Binding Conventions.

Atau Anda dapat menggunakan idalam manual Elisp, untuk menyelesaikan entri indeks:

  1. C-h i m el TAB RET.
  2. i key bi TAB, yang melengkapi key bindingdan menampilkan dua kemungkinan: key bindingdan key binding, conventions for. Ketik , TABuntuk menyelesaikan ke yang kedua, lalu RETmenerimanya.
Drew
sumber
Lebih baik mengikuti konvensi untuk mengikat C-cdan mengirim surat ke perintah pengguna. Dengan cara itu seseorang dapat (hampir) yakin bahwa seseorang tidak mengesampingkan beberapa pengikatan lainnya dari mode utama yang sudah diinstal atau untuk diinstal suatu hari nanti.
Tobias
1
@Tobias: Tidak yakin apa yang Anda katakan. Lebih baik dari apa? Semua konvensi pengikat kunci harus diikuti, termasuk tidak mengikat C-c+ SURAT di perpustakaan pihak ke-3.
Drew
Anda menyatakan dengan benar dalam kalimat pertama jawaban Anda bahwa tidak ada aturan ketat untuk penggunaan pribadi. Namun demikian disarankan untuk mengikuti konvensi untuk keybindings pengguna karena alasan yang saya berikan dalam komentar pertama saya. Mungkin, Anda bisa menambahkan catatan tentang itu di bawah ini semua aturan Anda di bagian pertama. Hanya itu yang ingin saya katakan, Drew. Best regards,
Tobias
3
@Tobias: Saya menambahkan apa yang saya pikir Anda katakan; Terima kasih. Tetapi tidak ada konvensi bagi pengguna untuk mengikuti sehubungan dengan binding utama. The "konvensi untuk keybindings pengguna" Anda berbicara tentang tidak konvensi untuk pengguna. Mereka adalah konvensi untuk coding Lisp yang akan digunakan oleh orang lain. (Saya tahu Anda tahu ini. Hanya ingin menjadi jelas, untuk orang lain yang membaca ini.)
Drew
Apa itu karakter kontrol?
Didier A.
2

@ Jawaban Drew jauh lebih bernuansa dan detail.

Ini pertanyaan yang sangat valid! Ada konvensi bahwa C-xdicadangkan oleh emacs sendiri sedangkan C-cawalan digunakan untuk keybindings yang ditentukan pengguna.

Lihatlah ini , terutama bagian "Kunci cadangan". Saya cukup yakin bahwa informasi ini dinyatakan dalam manual emacs juga, tetapi saya tidak dapat menemukannya saat ini. Konvensi dijelaskan dalam ini bagian dari emacs cadel manual.

Panagiotis Koutsourakis
sumber
1
C-cdiikuti oleh huruf (huruf besar atau kecil) tanpa pengubah lebih lanjut disediakan untuk pengguna. Banyak urutan kunci lainnya yang dimulai dengan C-cdicadangkan untuk mode utama - terutama yang mana stroke-kunci kedua juga dimodifikasi oleh tombol kontrol.
Tobias
Anda benar, tentu saja. @Rew menjawab pertanyaan ini jauh lebih baik.
Panagiotis Koutsourakis
seperti M-xuntuk "jalankan perintah extended, Ini adalah pintu gerbang ke banyak hal canggih yang dapat Anda capai secara interaktif di Emacs; ini memungkinkan Anda untuk menjalankan fungsi Elisp apa pun dengan nama." Apakah C-cdan C-xtidak memiliki deskripsi seperti itu?
Pinocchio