Есть ли способ получить представление IdeaVIM для сопоставлений из моего .vimrc файла?

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

Спасибо.

Ответ 1

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

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

Я тоже пытался сделать это, потому что у меня довольно сложный .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/

Ответ 2

Обновленный ответ: 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, Он отлично работает, и там есть новый раздел Vim Emulation в настройках IDEA, в котором перечислены все конфликты между сопоставлениями ~/.vimrc и сопоставлениями Intellij, и позволяет разрешать конфликты, назначая ключи либо IDEA, либо IdeaVim. Вот объявление выпуска в твиттере.

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

Ответ 3

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

  • Захватите исходный код IdeaVIM.

    https://github.com/JetBrains/ideavim

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

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

  • Кажется, что у этого файла есть все команды Visual/Insert/Normal mode и соответствующие им привязки клавиш. Для моего примера изменения привязки клавиш "exit insert mode" найдите "VimInsertExitMode". Вам нужно будет добавить строку в этот блок кода для нового ярлыка.

  • Вот как выглядел раздел кода после того, как я его отредактировал:

    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)})
    });
  • Теперь разверните проект (сделайте .jar) и добавьте его в свою папку плагинов; Я выполнил следующие инструкции для справки:

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

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

  • Дайте ему вихрь! Должна иметь возможность использовать "jk" в качестве ярлыка режима выхода в прямом режиме!

Ответ 4

Знаете, у меня был некоторый успех с .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 как минимум!

Ответ 5

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

source ~/.vimrc

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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