Я использовал сильно настроенный vim, а теперь использую еще более настроенный emacs. Я думаю, вы найдете каждый экземпляр сопоставления клавиш в моем файле конфигурации сопоставления клавиш https://github.com/mbriggs/.emacs.d-oldv2/blob/master/init/init-keymaps.el
Имейте в виду, я перепрошиваю вещи, которые настоящие пользователи emacs сочли бы ересью, так что YMMV, если вы когда-нибудь захотите изучить «настоящие» emacs (я действительно не хочу).
Одна вещь, которую я бы порекомендовал любому бывшему виммеру, - это
;;; esc quits
(defun minibuffer-keyboard-quit ()
"Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
(interactive)
(if (and delete-selection-mode transient-mark-mode mark-active)
(setq deactivate-mark t)
(when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
(abort-recursive-edit)))
(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
так что esc на самом деле завершает практически все (например, ожидающие запросы в минибуфере)
Как человек, пришедший из emacs, попробовавший vim и осознавший, что можно получить огромное количество вещей, я много экспериментировал, когда впервые начал использовать зло. Хотя нижеследующее является спорным, я хотел сохранить ключи emacs, которые используются более универсально в терминале, firefox, какао и т. Д., Но не хотел терять возможности редактирования vim. В конце концов я решил повторно привязать следующие ключи в моем .emacs:
К сожалению, они совпадают с операциями vim «переместить на один экран вверх или вниз». Однако вместо этого я привык использовать следующее:
Кроме того, если вы работаете с vim и хотите быстро перейти из режима вставки в нормальный режим с помощью «jk» (или любой другой комбинации двух штрихов), лучший способ - скопировать текст с http://www.emacswiki.org/ emacs / download / key-chord.el и вставьте его в свой ~ / .emacs.d / key-chord.el. Затем добавьте в свой .emacs следующее:
Кроме того, если вы работаете с vim и думаете, что копирование в буфер обмена в emacs не подходит, вы, вероятно, правы. Однако после запуска sudo apt-get install xsel вы можете найти следующее полезным:
Очевидно, вам придется решить для себя, стоят ли какие-либо из этих спорных изменений того, но, возможно, эти базовые изменения вас вдохновят.
Для некоторых других действительно интересных реализаций функций, таких как удаление и вставка, удаление без копирования в буфер обмена, эффективное перемещение 4x / 16x, использование счетчиков для спецификации регистра вставки, настройки вкладок, которые действительно работают для c / c ++, и многое другое, вы можете проверить из полных версий .emacs, init.el, my-keymaps.el и my-functions.el на моем git по адресу https://github.com/Russell91/emacs
источник
less
command и другими).evil
, я удаляю ее, поэтому она возвращается к настройке клавиатуры обычного emacs, например(dolist (m (list evil-normal-state-map evil-motion-state-map evil-insert-state-map)) (define-key m "\C-e" 'nil))
Раньше я также был пользователем Viper / Vimpulse с огромным количеством настроек. Потом я нашел Evil-mode.
Это вся моя конфигурация злого режима, и она отлично мне подходит:
Нет, в отличие от Viper / Vimpulse, который вызывал проблемы в нескольких режимах.
источник
evil-emacs-state
Я начал пользоваться Evil месяц назад; до этого я без особого успеха пытался использовать viper / vimpulse. Если честно, vimpulse довольно хорош, но использование его с различными режимами было немного проблематичным (например, режим компиляции, где vimpulse всегда сходил с ума), оставляя emacs в каком-то режиме между vi-emacs-something.
Когда я переключился на Evil, я наконец начал исследовать всю мощь Emacs и, поверьте мне, я не пожалел. Evil прекрасно работает во всех используемых мною режимах (в основном редактирование, компиляция, скретчинг и eshell), и даже чтение info / man / help работает без проблем.
Кроме того, я обнаружил только переключение буфера странным, как и раньше: b <0-9> вместо: b-TAB-then-complete-name или: bn. Обратите внимание, однако, что разработчики Evil пытаются (в некоторых случаях) уменьшить повторяющиеся функции, поэтому вместо этого:! (чтобы выполнить команду оболочки), вы должны использовать собственный M- !.
Если вы чувствуете желание добавить / переопределить некоторые пользовательские команды ex, просто откройте evil-maps.el и отредактируйте его (попробуйте это в vim!).
Evil еще молодой, но многообещающий проект, и я жду того дня, когда заменит viper в официальном дистрибутиве Emacs.
источник
Мне нравится сохранять буфер, когда я выхожу из
insert-mode
: (отредактировано: не запрашивать сохранение, если для этого буфера нет связанного файла, например, когда в царапине или буфере магит)для дополнительных возможностей: см. http://wikemacs.org/index.php/Evil
Комментарии приветствуются для улучшений!
источник
Я использую злой лидер и использую ", xm" вместо "Mx", поэтому я редко нажимаю клавишу Alt. Также существует general.el, который поддерживает несколько клавиш-лидеров.
evil-matchit , нажмите "%" для перехода между парой тегов.
evil-nerd-commenter , нажмите "9, ci", чтобы прокомментировать / раскомментировать 9 строк
избегайте использования клавиши ESC, вместо этого вы можете нажать «kj» .
Верьте в бесплатное программное обеспечение! Нет ничего невозможного с Evil, сочетающим в себе мощь Vim и Emacs. Например, многие люди предполагают, что комбинации клавиш Evil конфликтуют с существующими надстройками Emacs без тяжелой повторной привязки. На самом деле это неправильно
источник
Со стороны emacs я очень предпочитаю M-. чтобы перейти к определению, но функция, выполняемая в
M-.
разных режимах, различается. Я мог бы переопределить его обычным способом,(define-key evil-normal-state-map (kbd "M-.") 'foo)
гдеfoo
проверяет текущий основной режим и запускает соответствующую функцию, но это звучит так, как будто это потребует большого количества жесткого кодирования. Более общее решение таково:Помимо этого, мне нравятся плагины evil-Surround (хотя я считаю, что smartparens - более полное решение) и evil-leader .
Раньше я использовал ключевой аккорд для сопоставления jk с ESC, как я научился делать в vim, но он настаивал на том, чтобы рассматривать kj как то же самое, что и jk, поэтому вместо этого я использую следующее:
я использую
(setq evil-move-cursor-back nil)
это не очень vimmy (хотя, по-видимому, вы можете заставить свой vimrc делать то же самое), я просто никогда не привык к тому, что курсор перемещается назад после выхода из вставки.Практический совет: используйте
evil-local-mode-hook
для таких вещей, как ленивая загрузка Evil-Surround-Mode, это не поможет выразить это простоevil-mode-hook
. Итак, если вы устанавливаете зло и зло-окружение с помощью package-install, вы можете запустить его, когда вы это сделаетеM-x evil-mode
, выполнив(Конечно, если вы всегда запускаете злой режим и всегда устанавливаете зло, в этой автозагрузке нет необходимости, но я предпочитаю, чтобы мои .emacs были достаточно общими, чтобы я мог использовать его на машинах со старым emacsen или без каких-либо Установлены пакеты elpa.)
источник