Отключение злого режима для Nav в Emacs? Или любые буферы только для чтения?
Я пытаюсь получить что-то вроде Nerd Tree в Emacs и нашел Nav, который похож на основной файловый навигатор emacs, и мне это подходит.
Проблема заключается в том, что когда я открываю Nav и переключаюсь в свой буфер, режим зла по-прежнему включен, и я должен нажать C-z
, если я хочу использовать какие-либо команды Nav (например, .
для nav-toggle-hidden-files
), И меня это раздражает.
Прошло несколько часов, я пытаюсь исправить эту проблему, вставив
(require 'evil)
(evil-mode 0)
везде в файлах Nav, но, очевидно, я делаю это неправильно.
И я уверен, что это произойдет снова при использовании других плагинов.
Как это сделать?
Ответы
Ответ 1
Вы хотите, чтобы буферы nav-mode
открывались в состоянии Emacs, а не в нормальном состоянии Evil. Я не знаю, что на самом деле вызывается nav-mode
, но выполните следующие действия, соответственно изменив имя режима:
(add-to-list 'evil-emacs-state-modes 'nav-mode)
Ответ 2
Как описано в злой вики здесь, вы можете проверить состояние зла-set-initial-state.
Здесь соответствующая часть моей конфигурации emacs:
(evil-set-initial-state 'ibuffer-mode 'normal)
(evil-set-initial-state 'bookmark-bmenu-mode 'normal)
(evil-set-initial-state 'dired-mode 'emacs)
(evil-set-initial-state 'sunrise-mode 'emacs)
Не облегчает тот факт, что я действительно хотел бы иметь привязки клавиш vim в этих режимах, однако...
Ответ 3
Что вам нужно, так это "hook", который сообщит Emacs, в каких условиях вы хотите, чтобы какой-либо конкретный режим был активным или нет.
Я не использую режимы evil
или nav
, но вам нужно что-то очень похоже на следующую строку в .emacs
:
(add-hook 'nav-mode-hook 'disable-evil-mode)
Эта команда сообщает Emacs, что, когда режим (чьи крючки указаны в nav-mode-hook
) активен, запустите функцию disable-evil-mode
. Вероятно, вам придется изменить имя списка крючков или имя функции обратного вызова в соответствии с тем, как реализованы nav-mode
и evil-mode
.
nav-mode-hook
- это мое предположение, что nav-mode
будет называть его список крючков. Если это не сработает, проверьте документацию nav-mode
, найдите, как добавить крючки.
disable-evil-mode
- это любая функция, которую вы вызываете для отключения режима зла. Проверьте документацию злого режима для имени фактической функции.