Bagaimana menghindari mengetik "spasi" setelah "^" untuk pindah ke direktori dired?

9

^adalah kunci yang mengikat untuk pindah ke direktori induk di dired("Direktori atas").

Namun, di Gnu Emacsatas Windows 7 Professional 64-bitdengan layout keyboard Jerman saya, itu tidak cukup untuk mengetik "^" tapi aku harus mengetik ruang setelah itu untuk membuat pekerjaan kunci-mengikat.

Bagaimana saya bisa mendefinisikan ulang ikatan-kunci untuk menghindari keharusan menekan spasi dan bergerak ke atas hanya dengan "^"?


C-h k ^<space> kembali

^ menjalankan perintah dired-up-direktori, yang merupakan fungsi Lisp interaktif yang dikompilasi dalam `dired + .el '.

Ini terikat ke ^,.

(dired-up-direktori & OTHER-WINDOW opsional)

Jalankan Dired pada direktori induk dari direktori saat ini. Temukan direktori induk di buffer ini atau buffer lain. Membuat buffer jika perlu.

Sebagian besar tidak berbahaya
sumber
4
Ini adalah masalah OS karena perilaku ini kedengarannya seperti kunci lengket dan dibangun ke dalam kartu kunci tertentu, seperti us-intldi Linux.
wasamasa
Kedengarannya seperti wasamasa benar, dalam hal ini Anda harus bertanya bagaimana cara mengikat perintah ke kunci yang berbeda.
Andrew Swann
@AndrewSwann: Mungkin, mungkin tidak. Itu hal yang baik untuk diperiksa, ya. Tetapi perilaku Linux seharusnya tidak relevan di sini, dengan asumsi microsoft-windowstag sesuai.
Drew
Cara termudah memeriksa ini akan melihat apakah perilaku yang sama berlaku untuk program lain, misalnya dengan mengetik ^ke dalam notepad.exe.
wasamasa
3
Saya pikir Anda hanya memiliki beberapa opsi: (1) Gunakan tata letak keyboard yang berbeda di mana ^ bukan kunci mati - ini dilakukan pada tingkat OS, bukan di emacs, atau (2) Ikat beberapa tombol lain untuk dired-up-directorydan gunakan sebagai gantinya, atau (3) Hidup dengan masalah, dan ketik spasi setelah ^. Saya akan dengan (3) sendiri, tapi aku tidak merasa menjengkelkan.
Harald Hanche-Olsen

Jawaban:

11

Dengan pengaturan keyboard Anda, kunci ^ kemungkinan besar adalah "kunci mati". Ini adalah kunci yang dimaksudkan untuk digunakan bersama dengan yang lain, untuk menghasilkan karakter lain. Dalam hal ini, ini dimaksudkan untuk menghasilkan karakter beraksen: ^ e akan menghasilkan ê, ^ a akan menghasilkan â dan seterusnya.

Itu seharusnya tidak spesifik untuk emacs: Saya kira semua aplikasi Anda mengharuskan Anda menekan ^ dan menghasilkan ^ aktual di layar.

Untuk mengatasi ini, Anda cukup menggunakan tata letak keyboard lain. Dalam hal tata letak bahasa Jerman Anda di lingkungan windows, saya hanya akan merujuk ke /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- dengan-german-keyboard-layout , berharap ini adalah hal yang benar untuk dilakukan.

YoungFrog
sumber
0

Saya kira Anda telah mengkonfirmasi pengikatan ^di Dired sebagai dired-up-directory, jadi perintah mana yang dipanggil bukanlah masalahnya, kecuali jika Anda atau sesuatu yang Anda muat telah menyarankan perintah itu. (Gunakan C-h k ^, dan beri tahu kami jika perintah disarankan.)

Anda menandai ini dengan microsoft-windows. Mungkin menyebutkan versi MS Windows yang Anda gunakan. Saya tidak melihat ini dengan Windows 7 64-bit.

Apakah Anda melihat perilaku yang sama jika Anda memulai Emacs dengan menggunakan runemacs -Q, yaitu, tanpa file init? Jika demikian, tolong berikan resep di sini, mulai dari runemacs -Q. Dalam hal ini, ini bisa menjadi bug Emacs.

Jika Anda tidak melihat masalah dengan emacs -Qkemudian membagi file init Anda secara rekursif sampai Anda mempersempitnya untuk menemukan pelakunya. Anda dapat menggunakan perintah comment-regionuntuk mengomentari wilayah kode (gunakan C-udengannya untuk membatalkan komentar wilayah).

Setelah Anda menemukan kode pelakunya, Anda dapat menyelidikinya lebih dekat. Atau Anda dapat melaporkan di sini apa yang Anda temukan, jika Anda memerlukan bantuan lebih lanjut. Untuk bantuan terbaik, sespesifik mungkin.

Adapun mendefinisikan ulang kunci: Itu bukan masalah - cukup gunakan (define-key dired-mode-map SOME-KEY 'dired-up-directory), di mana SOME-KEYdeskripsi kunci. Misalnya, untuk mengikat perintah C-o, Anda dapat menggunakan ini:

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

Diperbarui setelah komentar Anda dan yang lainnya -

Karena Anda melihat hal yang sama emacs -Q, masalahnya adalah sesuatu di pengaturan MS Windows Anda (yaitu, di luar Emacs) atau bug di Emacs sendiri.

Tetapi komentar lain menjelaskan bahwa masalahnya adalah kunci lengket di MS Windows. Cobalah mematikan kunci lengket .

Drew
sumber
3
Ini hampir pasti tidak penting. Komentar dari @wasamasa benar-benar relevan. Untuk menguraikan sedikit, intinya adalah bahwa karena ^ lengket, emacs bahkan tidak melihat peristiwa penekanan tombol sampai pengguna mengetik spasi.
Harald Hanche-Olsen
terima kasih atas jawaban terinci Anda! Ya, runemacs.exe -Qsama saja. Mengetik ^ dalam buffer tidak hanya memasukkan karakter, jika saya mengetikkan <spasi> atau tombol lain setelahnya. Dalam diredmode yang sama, perlu ^1 <space>naik. Untuk define-key: tetapi saya ingin menggunakan kunci ^ untuk pengikatan ini, apakah ada cara untuk menghindarinya menunggu <spasi>?
MostlyHarmless
@ Harald: jadi apa yang bisa saya lakukan?
MostlyHarmless