Normalmente, per ragioni storiche, emacs tratta il TAB
codice C-i
chiave e la chiave come gli stessi, cfr. la documentazione emacs lisp sui tasti funzione o la risposta di abo-abo sulla domanda "Qual è la differenza tra TAB e?" .
NOTA: In questo post, keycodes sono
TAB
,<tab>
eC-i
; tabe Ctrl+ id'altra parte sono i tasti fisici sulla tastiera.Tuttavia, al momento, emacs considera la
TAB
eC-i
come la stessa cosa, ovvero(equal (kbd "TAB") (kbd "C-i"))
->t
.
Tuttavia, dal momento che non viviamo più nello stoneage dell'informatica, lo trovo estremamente fastidioso. Ci sono alcuni suggerimenti là fuori che cosa si può fare per ovviare a questo, ad es
"Come associare un comando a Ci senza cambiare TAB?"
- La soluzione di Trey non ha funzionato per me, la variabile
local-function-key-maps
non è cambiata. Modificarlo per usarlodelete
piuttosto chedelq
provocare una variabile modificata, ma non porta risoluzione ... tabe Ctrl+ isono sempre gli stessi. - La traduzione nell'hyper map sembra una soluzione alternativa degli anni '80 ... Potrei voler usare anche Hyper+ i.
- La soluzione di Trey non ha funzionato per me, la variabile
Usare il
input-decode-map
to map Ctrl+ isu un codice di controllo post-ASCII è quasi quello che sto cercando. Tranne il fatto che non funziona correttamente con lakbd
macro, il che significa che è necessario modificare tutti i bit del codice sorgente che assocerà Ctrl+ i. Probabilmente questa è la soluzione migliore dato che tutto il codice sorgente viene modificato correttamente.Utilizzando
(kbd "<tab>")
per la tabe(kbd "C-i")
(che si traduce in(kbd "TAB")
cioè il\t
letterale) per Ctrl+ i funziona , ma che avrebbe dovuto modificare tutti i file di origine che utilizzano il tipo sbagliato di tab[Read: il codice chiaveTAB
] che è fastidioso.
Questo è stato suggerito ad esempio in un problema con github e anche su emacs.sx .
Nessuna di queste soluzioni sembra soluzioni reali, preferirei considerarle soluzioni alternative o hack (del bug esistente ).
C'è una via d'uscita lì per forzare emacs per mappare tabad
(kbd "<tab>")
e(kbd "TAB")
mentre Ctrl+ iè mappata a(kbd "C-i")
corto di modyfing il codice sorgente di emacs?Questo approccio dovrebbe essere completamente invisibile per l'utente, il che significa che il tabcome keycodes
<tab>
eTAB
devono mappare un legame, mentre il Ctrl+ icome codice chiaveC-i
dovrebbe mapping a un altro legame.
Su una nota meno seria: Qualche sviluppatore di emacs qui che può commentare se questo sarà cambiato / riparato nel codice sorgente di emacs ad un certo punto?
kbd
di tradurre TAB come [tab]. Semplicemente non funzionerà per le parti precaricate di Emacs.
TAB
eC-i
(i codici, non le chiavi) sono la stessa cosa per definizione diTAB
.