Отключение режима зла для Nav в Emacs? Или какие-нибудь буферы только для чтения?
Я пытаюсь получить что-то вроде Nerd Tree в Emacs и нашел Nav, который похож на базовый файловый навигатор emacs, и мне это подходит.
Проблема в том, что когда я открываю Nav и переключаюсь в его буфер, режим зла все еще включен, и я должен нажать C-z
если я хочу использовать какие-либо конкретные команды Nav (например, .
за nav-toggle-hidden-files
). И это меня раздражает.
Уже несколько часов я пытаюсь решить эту проблему, вставив
(require 'evil)
(evil-mode 0)
везде в файлах Nav, но, очевидно, я делаю это неправильно.. И я почти уверен, что это произойдет снова при использовании других плагинов.. Как мне это сделать?
3 ответа
Ты хочешь nav-mode
буферы открываются в состоянии Emacs, а не в нормальном состоянии зла. Я не знаю что nav-mode
на самом деле вызывается, но сделайте следующее, соответственно изменив название режима:
(add-to-list 'evil-emacs-state-modes 'nav-mode)
Как описано в злой вики здесь, вы можете проверить evil-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 в этих режимах...
Вам нужен "крючок", который сообщит 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
это любая функция, которую вы вызываете, чтобы отключить режим зла. Проверьте документацию по злому режиму на предмет реального имени функции.