Come evitare di digitare "spazio" dopo "^" per spostarsi nella directory in dired?


9

^è l'associazione chiave per spostarsi nella directory principale in dired("Up directory").

Tuttavia, in Gnu Emacssu Windows 7 Professional 64-bitcon la mia tastiera tedesca, non è sufficiente digitare "^" ma devo digitare spazio poi per far funzionare la chiave vincolante.

Come posso ridefinire l'associazione dei tasti per evitare di premere spazio e spostarsi verso l'alto solo con "^"?


C-h k ^<space> ritorna

^ esegue il comando dired-up-directory, che è una funzione Lisp compilata interattiva in `dired + .el '.

È legato a ^,.

(directory indirizzata e FINESTRA ALTRA opzionale)

Esegui Dired sulla directory principale della directory corrente. Trova la directory principale in questo buffer o in un altro buffer. Crea un buffer, se necessario.


4
Questo è un problema del sistema operativo in quanto questo comportamento suona come chiavi adesive ed è incorporato in alcune mappe dei tasti, come us-intlsu Linux.
wasamasa,

Sembra che wasamasa abbia ragione, nel qual caso dovresti chiedere come associare il comando a una chiave diversa.
Andrew Swann,

@AndrewSwann: Forse, forse no. È una buona cosa controllare, sì. Ma il comportamento di Linux dovrebbe essere irrilevante qui, supponendo che il microsoft-windowstag sia appropriato.
Estratto il

Il modo più semplice di controllare per questo sarebbe in cerca se lo stesso comportamento si applica ad altri programmi, come ad esempio digitando ^in notepad.exe.
wasamasa,

3
Penso che tu abbia solo poche opzioni: (1) Usa un layout di tastiera diverso in cui ^ non è un tasto morto - questo viene fatto a livello di sistema operativo, non in emacs, o (2) Associa qualche altro tasto dired-up-directorye usalo invece, oppure (3) Risolvi il problema e digita lo spazio dopo ^. Sto andando con (3) me, ma io non lo trovo irritante.
Harald Hanche-Olsen,

Risposte:


11

Con la configurazione della tastiera, il tasto ^ è molto probabilmente un "tasto morto". È una chiave pensata per essere usata insieme ad un'altra, al fine di produrre un altro personaggio. In questo caso, si intende produrre caratteri accentati: ^ e produrrà ê, ^ a produrrà â e così via.

Tuttavia, non dovrebbe essere specifico per emacs: immagino che tutte le tue applicazioni richiedano di premere ^ e di produrre un vero ^ sullo schermo.

Per risolvere questo, devi semplicemente usare un altro layout di tastiera. Nel caso del layout tedesco in ambiente Windows, farò semplicemente riferimento a /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- con-tastiera-tedesca-layout , sperando che questa sia la cosa giusta da fare.


0

Immagino che tu abbia confermato il legame di ^in Dired come dired-up-directorytale, quindi quale comando è invocato non è il problema, a meno che tu o qualcosa che carichi non abbia consigliato quel comando. (Usa C-h k ^e facci sapere se il comando è consigliato.)

Hai taggato questo con microsoft-windows. Forse menziona quale versione di MS Windows usi. Non lo vedo con Windows 7 a 64 bit.

Vedi lo stesso comportamento se avvii Emacs usando runemacs -Q, cioè, senza file init? In tal caso, fornisci una ricetta qui, a partire da runemacs -Q. In tal caso, potrebbe trattarsi di un bug di Emacs.

Se non si emacs -Qriscontra il problema, quindi sezionare in modo ricorsivo il file init finché non lo si restringe per trovare il colpevole. Puoi usare il comando comment-regionper commentare la regione del codice (usa C-ucon essa per rimuovere il commento dalla regione).

Una volta trovato il codice colpevole, puoi indagare più da vicino. Oppure puoi segnalare qui quello che hai trovato, se hai bisogno di ulteriore aiuto. Per il miglior aiuto, sii il più specifico possibile.

Per quanto riguarda la ridefinizione della chiave: non è un problema, basta usare (define-key dired-mode-map SOME-KEY 'dired-up-directory), dove SOME-KEYè una descrizione chiave. Ad esempio, per associare il comando a C-o, è possibile utilizzare questo:

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

Aggiornato dopo il tuo commento e altri -

Dal momento che vedi la stessa cosa emacs -Q, il problema è o qualcosa nella tua configurazione di MS Windows (cioè fuori da Emacs) o un bug in Emacs stesso.

Ma altri commenti chiariscono che il problema sembra essere chiavi adesive in MS Windows. Prova a disattivare le chiavi adesive .


3
Questo è quasi certamente al punto. Il commento di @wasamasa è tuttavia del tutto pertinente. Per elaborare un po ', il punto è che poiché ^ è appiccicoso, emacs non vede nemmeno l'evento keypress finché l'utente non digita uno spazio.
Harald Hanche-Olsen,

grazie per la tua risposta dettagliata! Sì, con runemacs.exe -Qesso è lo stesso. Digitando ^ in un buffer si immette il carattere solo se dopo si digita <spazio> o un'altra chiave. Lo stesso in diredmodalità, deve ^1 <space>spostarsi verso l'alto. Per define-key: ma mi piacerebbe usare il tasto ^ per questa associazione, c'è un modo per evitarlo in attesa di <spazio>?
MostlyHarmless

@Harald: quindi cosa posso fare?
MostlyHarmless
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.