Есть ли способ заставить IdeaVIM соблюдать сопоставления из моего файла .vimrc? - PullRequest
59 голосов
/ 07 апреля 2011

Я недавно (снова) вошел в vim, и теперь у меня есть тонна настроек в моем файле .vimrc.Я понимаю, что не все, что есть, имело бы смысл в контексте плагина IDEA, но мне бы действительно понравилось бы, если бы такие вещи, как переназначение jj в Esc были бы выбраны и выполнены.Есть способ сделать это?Без необходимости вручную настраивать все эти вещи в таблице ключей IDEA, то есть.

Спасибо.

Ответы [ 8 ]

150 голосов
/ 29 апреля 2014

Обновленный ответ: IdeaVim версии 0.35 (выпущена 2014-05-15) считывает настройки и привязки клавиш из ~/.ideavimrc.Вы можете поместить source ~/.vimrc в этот файл, если хотите включить сопоставления из ~/.vimrc.

0,33 и 0,34 для чтения ~/.vimrc напрямую.

0,33 (выпущено 2014-04-28)была первой версией для реализации VIM-288 , включая такие вещи, как отображение j j на ESC .Он прекрасно работает, и в настройках IDEA есть новый раздел Vim Emulation , в котором перечислены все конфликты между отображениями ~/.vimrc и Intellij, а также можно разрешить конфликты, назначив ключи либо IDEA, либо IdeaVim.,Вот объявление о выпуске в твиттере.

(Примечание: я не автор, просто довольный пользователь.)

23 голосов
/ 14 мая 2011

Обновление: да! Смотрите ответ ниже .

Краткий ответ: нет.

Я тоже пытался сделать это, особенно потому, что у меня есть довольно сложный .vimrc, к которому я привык за эти годы.

Во всяком случае, есть обходной путь (вроде). Настройки IdeaVim хранятся в файле с именем vim.xml в папке .IntelliJIdea10/config/keymaps внутри вашей домашней папки (C:\Users\<user_name> в Windows). Вы можете редактировать XML, чтобы добавить материал, который вы хотите. Например, я добавил следующие строки для сохранения файла, нажав F2 вместо ввода :w!:

<action id="SaveAll">
<keyboard-shortcut first-keystroke="F2"/>
</action>

Однако я не понимаю, как мы можем добавить такие вещи, как функции или настройки vim (для этого я обычно использую .vimrc).

P.S. Это может объяснить, почему не используется .vimrc (выделено мной):

Для любопытных плагин написано без каких-либо ссылок на Исходный код VIM (кроме обработка регулярных выражений). я в основном используя отличный VIM документация и сам VIM как ссылка для проверки правильности поведения.
Источник: http://ideavim.sourceforge.net/

5 голосов
/ 03 декабря 2015

Согласно описанию в репозитории плагина (https://github.com/JetBrains/ideavim), этого можно добиться, создав файл " ~ / .ideavimrc " с его содержанием:

source ~/.vimrc
5 голосов
/ 21 июня 2013

Похоже, что проблема IdeaVIM # VIM-288 (редактирование, обновление: см. ответ jbyler , VIM-288 теперь исправлен) решит вашу проблему, когда она будет решена. Я тоже искал способ выхода из режима вставки 'jk' вместо использования клавиши Escape. Я не эксперт по плагинам IntelliJ, но мне удалось изменить исходный код IdeaVIM так, чтобы ярлык 'jk' был там жестко закодирован. Все, что мне нужно было сделать, это переустановить плагин и использовать его вместо официальной версии. Вот как я это сделал:

  1. Получить исходный код IdeaVIM.

    https://github.com/JetBrains/ideavim

  2. Вы можете следовать инструкциям в разделе «Разработка» на этой странице, чтобы настроить среду разработки для плагина.

  3. Теперь, когда ваш проект IdeaVIM полностью настроен, откройте этот файл: com.maddyhome.idea.vim.key.RegisterActions.java

  4. Кажется, этот файл содержит все команды режима Visual / Insert / Normal и соответствующие им привязки клавиш. Для моего примера изменения привязки клавиш «Режим выхода из режима» найдите «VimInsertExitMode». Вам нужно добавить строку в этот блок кода для вашего нового ярлыка.

  5. Вот как выглядит фрагмент кода после того, как я его отредактировал: parser.registerAction(KeyParser.MAPPING_INSERT, "VimInsertExitMode", Command.Type.INSERT, new Shortcut[]{ new Shortcut(KeyStroke.getKeyStroke('[', KeyEvent.CTRL_MASK)), new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK)), new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)), new Shortcut("jk"), new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, KeyEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)}) });

  6. Теперь разверните проект (сделайте .jar) и добавьте его в папку плагинов; Я следовал этим инструкциям для справки:

    http://confluence.jetbrains.com/display/IDEADEV/Getting+Started+with+Plugin+Development#GettingStartedwithPluginDevelopment-anchor5

  7. Возможно, вам понадобится сохранить файл Vim.xml из папки keymaps, я не уверен. Я удалил мой, а затем он был заново сделан, когда я перезапустил IntelliJ.

  8. Дай вихрь! Должен быть в состоянии использовать 'JK' в качестве ярлыка выхода из режима вставки сейчас!

4 голосов
/ 20 марта 2012

Вы знаете, у меня был некоторый успех с .vimrc в моей домашней папке в Windows, поэтому обычно C: \ Users \ yourLogin.Казалось бы, это по замыслу.Олег упоминает, что IdeaVIM использует здесь подмножество команд VIm.

http://youtrack.jetbrains.com/issue/VIM-134#tab=Comments

Похоже, вам необходимо войти в систему, чтобы увидеть комментарии в системе youtrack.

Олег Шпынов 15 августа 2011 г. 18: 12

Плагин IdeaVIM загружает некоторые данные конфигурации из файла .vimrc, однако поддержка плагинов vim отсутствует и не будет доступна, поскольку требуется переписать всю среду выполнения VIM в пределахПлагин IdeaVim.

Обратите внимание, что вы должны называть файл .vimrc, а не _vimrc, если вы находитесь в Windows, где вы можете ожидать последнего.

Работает с set ignorecaseпо крайней мере!

1 голос
/ 19 октября 2015

Чтобы заставить его работать на Windows 7, создайте .ideavimrc в C: \ Users [имя пользователя]

Работает для меня.

1 голос
/ 19 июня 2014

IdeaVim теперь (по крайней мере, начиная с 0.35) поддерживает ограниченное количество команд set , а также карту и ее варианты. Чтобы они были получены автоматически, поместите ваши настройки в ~ / .ideavimrc.

0 голосов
/ 15 июля 2017

Я только что понял, как это сделать вчера. Я смог символически связать мой .vimrc с моими настройками ideavim, выполнив следующую команду:

ln -s $HOME/.vimrc $HOME/.ideavim
...