LINUX.ORG.RU

emacs: не работает meta в evil-mode

 , ,


0

2

Проблема состоит в следующем. В emacs не работает meta (будь то Esc или Alt), когда включен evil-mode. Если отключить evil-mode то сразу начинает работать Esc.

Проблема уже обсуждалась здесь, но появилась некоторая ясность, а так же понимание, что просто командой : (как рекомендовали здесь) не отделаться. Нужна полноценная работа Meta в evil-mode, так как слишком много комбинаций с Meta, если использовать emacs полноценно.

В xmonad modm был выставлен на использование Alt. Но даже и при выключенных иксах проблема повторяется. А значит xmonad здесь не при чем.

USE-флаги emacs: 1

Минимальный init.el, который позвоялет воспроизвести проблему: 2

P.S.: теги gentoo и xmonad добавлены потому, что, уверен, существует множество людей с похожей конфигурацией, и наверняка ими используется evil-mode. А значит, они как-то были вынуждены решить эту проблему.

Ответ на: комментарий от no-such-file

Да что вы прикопались к этому evil-mode?

Потому что нужно на первое время, если переходишь с вима. Нужно работать же.

выучи аккорды

Кстати, можно хорошую ссылку на аккорды, которые бы подменяли стандартные вимовские вещи типа dd, g, G dw, d$ и т.д.? Для тех, кот хотя бы пытается.

И потом, разве так сложно переставить Meta на Alt? Почему, собственно Meta вообще отключается в этом режиме? Удивительно то, что при поиске в гугле не ходится решения на вопрос, который, казалось бы, должен был возникнуть у многих. Теперь я хотя бы выяснил, что xmonad здесь не при чем.

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 7)
Ответ на: комментарий от early_britney_fun

Кстати, можно хорошую ссылку на аккорды, которые бы подменяли стандартные вимовские вещи типа dd, g, G dw, d$ и т.д.? Для тех, кот хотя бы пытается.

dd

C-a C-k (если много - пили макрос/функцию, вешай хоткей короче)

dw

M-d

d$

C-k

остальные я не помню уже, что делают

Потому что нужно на первое время, если переходишь с вима. Нужно работать же.

либо не на первое время, а вообще, либо нафиг не нужен.

Я когда переходил, тоже думал, что буду использовать evil, но решил немного освоить стандартные комбинации, в итоге через недельку понял, что режимы меня, оказывается, дико бесили. Так что остался на слегка допиленном искаробочном поведении (но допускаю, что это индивидуальное).

anonymous ()
Ответ на: комментарий от anonymous

а как быть с meta? он по умолчанию на Esc должен быть? Вот, например, нужно переместиться на строку 150. Писать Esc-g g RET 150 — это классический способ? Вот этот скачек мизинцем кажется был бы не очень удобен, если бы в детстве не играл на фортепиано ))) И перемещение а-ля hjkl было бы неплохо. С остальным, вроде, можно справиться, чтобы выключить evil-mode (или, во всяком случае, не держать его включенным автоматически).

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 4)
Ответ на: комментарий от early_britney_fun

которые бы подменяли стандартные вимовские вещи

В эмаксе все немного по-другому, но почему бы не осилить несколько первых глав их мануала? Там вполне доходчиво всё объясняется и есть сводка по самым ходовым командам.

no-such-file ★★★★★ ()
Ответ на: комментарий от early_britney_fun

И потом, разве так сложно переставить Meta на Alt?

ИМХО, это вообще не проблема эмакса. Я с такой фигнёй последний раз сталкивался в прошлом веке в консоли из-за кривых keymaps. В иксах никогда такого не было.

Удивительно то, что при поиске в гугле не ходится решения на вопрос, который, казалось бы, должен был возникнуть у многих

Это читал? https://www.emacswiki.org/emacs/MetaKeyProblems

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

Да, читал. У меня эта проблема на всех гентах например (а их 4 рабочих станций). А и в центоси тоже.

Хорошо, последний момент: в классическом случае или в большинстве случаев, в качестве Meta чаще используется Esc или чаще используется Alt? Я так понял, что всё-таки Esc. Или нет? Меня интересует каноничный вариант использования, здесь написано, что Esc.

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 5)
Ответ на: комментарий от deadNightTiger

Хорошо, но тогда я хотел бы четко понять, что не так со всеми моими компьютерами. Там разные клавы (либо это thinkpad'ы), и на всех установлена гента. ЧЯДНТ? Почему везде не Alt?

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 2)
Ответ на: комментарий от ashot

Оно может быть причем, если иксы выключены? а когда были включены, то я переносил на клавишу 'mod4Mask', alt освобождался, но ничего не менялось. Или предлагается вообще удалить xmonad? Или попробовать на системе, на которой он вообще в принципе не был установлен?

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 2)
Ответ на: комментарий от early_britney_fun

А вообще под аккордом подразумевается комбинация из скольки клавиш (в среднем и максимум)?

Вообще щас аккорды не в моде, теперь популярно использовать префикс клавишу + последовательность. Например C-x g s или C-c p s g.

no-such-file ★★★★★ ()
Ответ на: комментарий от ashot

Если отключить evil-mode, то получается так:

1 M-x runs the command execute-extended-command, which is an interactive          +
2  compiled Lisp function in `simple.el'.                                          +
3                                                                                  +
4  It is bound to <execute>, <menu>, C-x e, M-x.                                   +
5                                                                                  +
6  (execute-extended-command PREFIXARG &optional COMMAND-NAME)                     +
7                                                                                  +
8  Read a command name, then read the arguments and call the command.              +
9  Interactively, to pass a prefix argument to the command you are                 +
10 invoking, give a prefix argument to `execute-extended-command'.                 +
11 Noninteractively, the argument PREFIXARG is the prefix argument to              +
12 give to the command you invoke.

Ну а в evil-mode получается так:

1 <escape> runs the command evil-force-normal-state, which is an                  +
2 interactive compiled Lisp function in `evil-commands.el'.                       +
3                                                                                 +
4 It is bound to <escape>.                                                        +
5                                                                                 +
6 (evil-force-normal-state)                                                       +
7                                                                                 +
8 Switch to normal state without recording current command.

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 1)
Ответ на: комментарий от early_britney_fun

Хрень какая-то. Попробуй все сначала, по порядку:

  1. Переставляешь модификатор в Xmonad на mod4Mask
  2. !!!Перезапускаешь иксы!!!
  3. mv ~/.emacs.d/ ~/.emacs.d_
  4. В новом конфиге оставляешь только:
    • (require package)
    • (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
    • (package-initialize)
  5. Перезапуск. Установка. m-x install-package evil
  6. Добавляешь в конфиг:
    • (require 'evil)
    • (evil-mode 1)
  7. Перезапускаешь. Проверяешь.

Если не поможет и все по-прежнему, смотри в сторону сборки Емакса. Или сразу иди в Церковь.

ashot ★★☆ ()
Ответ на: комментарий от ashot

При чем здесь вообще иксы? Я же говорю, и без них всё то же самое. Я вообще без иксов работаю. xmonad это эпизодически, я просто предположил, что при установке он что-то меняет. Даже если его (xmonad) удалить, ничего не поменяется.

early_britney_fun ★★★★ ()
Последнее исправление: early_britney_fun (всего исправлений: 2)
Ответ на: комментарий от early_britney_fun

При чем здесь вообще иксы?

Ты собирал emacs и устанавливал evil без иксов? Я предположил, что при установке evil у тебя произошел косяк из-за alt забинденый xmomad-ом. Я не знаю лиспа и не знаю как происходит установка плагинов, но предложил тебе проверить на чистой установке.
У тебя баг, который ни у кого не воспроизводится, и логично для начала исключить кривую установку плагина или кривую сборку emacsa. Пишу это сообщение из emacs в evil-mode вызванный vimperator-ом.
Пересобери emacs из консоли и установи 1 плагин evil, так как я писал выше. Если баг останется можно посмотреть на опции сбоки.

ashot ★★☆ ()

В emacs не работает meta (будь то Esc или Alt), когда включен evil-mode.

Евил забирает «эскейп» себе, так что то, что он перестает быть липкой «метой» — это нормально.

Но даже и при выключенных иксах проблема повторяется.

Имеется в виду в TTY? Так а в других интерфейсах (ну, например, в ГНУ Ридлайне, который в Баше и так далее) «альт» за «мету» работает? Ну есть M-b перемещает курсор на слово назад? (Если у вас ви-подобное управление в Ридлайне, временно отключите, разумеется.)

И да, у меня тоже все работает, разумеется. Дебиан ГНУ/Линукс Джесси, ночной ГНУ Емакс.

Zmicier ★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)