Як уникнути введення “пробілу” після “^” для переміщення в каталог у розділеному?


9

^є ключовим прив'язкою для переміщення до батьківського каталогу в dired("Вгору каталогу").

Тим НЕ менше, в Gnu Emacsна Windows 7 Professional 64-bitмою німецької розкладці клавіатури, мало , щоб ввести «^» , але я повинен набрати простір після зробити ключ прив'язки роботи.

Як я можу переосмислити прив'язку клавіш, щоб уникнути необхідності натискати пробіл і рухатися вгору лише за допомогою "^"?


C-h k ^<space> повертає

^ запускає команду dired-up-каталог, яка є інтерактивно складеною функцією Lisp в `dired + .el '.

Він пов'язаний з ^,.

(dired-up-directory & optional OTHER-WINDOW)

Запустіть Dired в батьківському каталозі поточного каталогу. Знайдіть батьківський каталог або в цьому буфері, або в іншому буфері. При необхідності створює буфер.


4
Це проблема ОС, оскільки така поведінка звучить як липкі клавіші і вбудована в певні карти клавіш, наприклад, в us-intlLinux.
wasamasa

Здається, що wasamasa є правильним, і в цьому випадку ви повинні запитати, як прив’язати команду до іншого ключа.
Ендрю Сванн

@AndrewSwann: Можливо, може й ні. Це добре перевірити, так. Але поведінка Linux тут має бути неактуальною, якщо вважати microsoft-windowsтег відповідним.
Дрю

Найпростіший спосіб перевірки цього буде шукати , чи відноситься те ж саме поведінку інших програм, наприклад, шляхом введення ^в notepad.exe.
wasamasa

3
Я думаю, у вас є лише кілька варіантів: (1) Використовуйте іншу розкладку клавіатури, в якій ^ не є мертвою клавішею - це робиться на рівні ОС, а не в emacs, або (2) Прив’яжіть до неї якусь іншу клавішу dired-up-directoryта використовуйте її натомість або (3) Живіть із проблемою та введіть пробіл після ^. Я йду з (3) собі, але я дійсно знаходжу це дратує.
Харальд Ханш-Ольсен

Відповіді:


11

При налаштуванні клавіатури клавіша ^, швидше за все, є "мертвою клавішею". Це ключ, який повинен використовуватися разом з іншим, щоб створити інший символ. У цьому випадку мається на увазі створення символів з наголосом: ^ e буде виробляти ê, ^ a буде виробляти â і так далі.

Це не повинно бути специфічно для emacs: я думаю, всі ваші програми вимагають, щоб ви натиснули ^ і створили фактичний ^ на екрані.

Щоб вирішити це, просто потрібно використовувати іншу розкладку клавіатури. У випадку вашого німецького макета у середовищі Windows я просто посилаюся на /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- з-німецькою розкладкою клавіатури , сподіваючись, що це правильно зробити.


0

Я думаю, ви підтвердили прив'язку ^в Dired як таку dired-up-directory, яка команда викликається - це не проблема, якщо ви або щось, що ви завантажуєте, не порадили цю команду. (Використовуйте C-h k ^та повідомте нам, якщо команда радить.)

Ви позначили це тегом microsoft-windows. Можливо, згадайте, яку версію MS Windows ви використовуєте. Я не бачу цього з Windows 7 64-бітним.

Чи бачите ви таку ж поведінку, якщо ви запускаєте Emacs, використовуючи runemacs -Q, тобто, без файлу init? Якщо так, будь ласка, дайте тут рецепт, починаючи з runemacs -Q. У цьому випадку це може бути помилка Emacs.

Якщо ви не бачите проблеми з emacs -Qрекурсивним розбиттям файлу init, поки ви не звузите його, щоб знайти винуватця. Ви можете скористатися командою comment-regionдля коментування регіону коду (використовуйте C-uйого, щоб коментувати регіон).

Як тільки ви знайдете код винуватця, зможете дослідити це більш ретельно. Або ви можете повідомити тут, що знайшли, якщо вам потрібна додаткова допомога. Для кращої допомоги будьте максимально конкретними.

Що стосується перевизначення ключа: це не проблема - просто використовуйте (define-key dired-mode-map SOME-KEY 'dired-up-directory), де SOME-KEYє опис ключа. Наприклад, щоб прив'язати команду до цього C-o, ви можете скористатися цим:

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

Оновлено після вашого коментаря та інших -

Оскільки ви бачите те саме emacs -Q, що проблема, це або щось у вашій установці MS Windows (тобто поза Emacs) або помилка в самому Emacs.

Але в інших коментарях чітко видно, що проблема, здається, - це липкі клавіші в MS Windows. Спробуйте вимкнути липкі клавіші .


3
Це майже точно напевно. Хоча коментар @wasamasa цілком актуальний. Щоб детальніше розібратися, справа полягає в тому, що оскільки ^ липкий, emacs навіть не бачить події натискання клавіші, поки користувач не введе пробіл.
Харальд Ханш-Ольсен

дякую за детальну відповідь! Так, з runemacs.exe -Qним те саме. Введення ^ у буфер вводить символ лише в тому випадку, якщо після цього я наберу <space> або іншу клавішу. Так само в diredрежимі, його потрібно ^1 <space>рухати вгору. Для define-key: але я хотів би використовувати клавішу ^ для цього прив’язки, чи є спосіб уникнути її очікування <space>?
Здебільшого безрукий

@Harald: так що я можу зробити?
Здебільшого безрукий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.