Saya baru saja mencoba
(set 'global-map (make-sparse-keymap))
tetapi mengeluarkan C-hbmasih menunjukkan banyak omong kosong, terutama di bagian Global Bindings :
Global Bindings:
key binding
--- -------
C-@ set-mark-command
C-a move-beginning-of-line
C-b backward-char
C-d delete-char
C-e move-end-of-line
C-f forward-char
C-g keyboard-quit
C-h help-command
TAB indent-for-tab-command
C-k kill-line
C-l recenter-top-bottom
RET newline
C-n next-line
C-o open-line
... ...
dan masih banyak lagi yang akan datang.
Saya ingin menyingkirkan ini sepenuhnya. Bagaimana saya bisa melakukan itu dalam satu panggilan fungsi sederhana? Saya ingin solusi menjadi penghapusan total, daripada loop yang mengatur semua peta ini nil
. Terima kasih sebelumnya.
CATATAN: Tolong, tidak ada jawaban pengajaran atau komentar spam seperti "Kunci ini penting untuk produktivitas, jangan lakukan itu!" . Saya memiliki layer emulasi yang sangat khusus untuk mengedit teks modal di sini, jadi saya tidak memerlukan binding default ini sama sekali.
key-bindings
keymap
Alexander Shukaev
sumber
sumber
evil-mode
itu Anda harus menulis layer pengeditan modal Anda sendiri?evil-mode
, tetapi beberapa fungsi tingkat atas: operator, objek teks, dan beberapa perintah ditulis ulang atau diperluas. Binding default-nya juga benar-benar terhapus dan disusun ulang di keyboard sejak awal. Namun ini tidak ada hubungannya dengan pertanyaan.make-keymap
.Jawaban:
Diambil dari Manual Emacs Lisp (lihat Mengontrol Peta Aktif ):
Mengutip manual: "Sangat tidak biasa untuk mengubah keymap global.". Catatan keamanan: Pastikan Anda dapat menyimpan buffer dan keluar dengan bersih dari Emacs setelahnya dengan keymap yang berbeda, jika tidak Anda harus membunuhnya tanpa perubahan yang disimpan.
sumber
Meskipun informasi berikut ini bukan jawaban langsung untuk pertanyaan (karena sudah dijawab oleh @wasamasa), saya masih percaya bahwa ini adalah tambahan penting untuk jawabannya. Intinya adalah setelah menerbitkan
satu memang menghapus bagian Global Bindings sepenuhnya, dan sebagai akibatnya, seseorang bahkan tidak bisa mengetik teks lagi! Dalam sebagian besar kasus, salah satu tentu saja ingin mengembalikan kemampuan untuk mengetik teks karena itu penting untuk editor teks apa pun. Jadi, inilah satu-satunya cara untuk melakukan itu:
Supaya kalian percaya bahwa kode Emacs Lisp ini adalah cara yang benar untuk melakukannya, saya akan memberikan sumber yang saya gunakan untuk memproduksinya. Secara default, kemampuan mengetik teks dengan halaman kode ASCII 8-bit saat ini diimplementasikan dalam
cmds.c
unit terjemahan kode sumber Emacs C:Seperti yang Anda lihat, kode Emacs Lisp di atas adalah replikasi tepat dari kode C ini, kecuali untuk satu baris tambahan:
Anggap itu peringatan, tetapi kalimat ini penting untuk dimiliki! Kalau tidak, hanya 7-bit dari halaman kode ASCII saat ini akan tersedia (terlepas dari kenyataan bahwa kami telah menginisialisasi semua 8-bit).
sumber
self-insert-command
binding dari keymap global saat ini?(setq my-global-map (make-keymap)) (substitute-key-definition 'self-insert-command 'self-insert-command my-global-map global-map)
global-map
segera tahu masalah apa yang akan mereka hadapi dan apa resep untuk menyelesaikannya. Mereka mungkin akan mempelajari sesuatu yang baru tentang ASCII secara umum dan / atau bagaimana penerapannya di Emacs secara khusus.