web-dev-qa-db-ja.com

IdeaVIMに.vimrcファイルからのマッピングを尊重させる方法はありますか?

私は最近(再び)大々的にvimを始めましたが、今では.vimrcファイル。 IDEAプラグインのコンテキストでは、そこにあるすべてが意味をなさないことを理解していますが、jjEscに再マッピングするようなものが選択された場合は本当にが好きですそれを行う方法はありますか?IDEAのキーマップにあるすべてのものを手動で調整する必要なしに、つまり。

ありがとう。

61
Hank Gay

更新:はい!回答 以下 を参照してください。

短い答え:いいえ。

私もこれをやろうとしているのは、長年慣れてきた.vimrcという非常に複雑なものがあるからです。

とにかく、回避策(のようなもの)があります。 IdeaVimの設定は、ホームフォルダー(Windowsではvim.xml)内の.IntelliJIdea10/config/keymapsフォルダーにあるC:\Users\<user_name>というファイルに保存されます。 XMLを編集して、必要なものを追加できます。たとえば、次の行を追加して、F2と入力する代わりに:w!を押してファイルを保存します。

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

ただし、関数やvim設定などを追加する方法がわかりません(通常、.vimrcを使用します)。

P.S.これは、.vimrcが使用されない理由を説明するかもしれません(エンファシス鉱山)

好奇心For盛な人のために、プラグインはVIMソースコードへの参照なしで記述されています(正規表現の処理を除く)。基本的に、優れたVIMドキュメントとVIM自体を参照として使用して、正しい動作を確認します。
出典: http://ideavim.sourceforge.net/

23

更新された回答:IdeaVimバージョン0.35(2014-05-15リリース)は、~/.ideavimrcから設定とキーバインディングを読み取ります。 source ~/.vimrcからのマッピングを含める場合は、そのファイルに~/.vimrcを入れることができます。

0.33および0.34は~/.vimrcを直接読み取ります。

0.33(2014-04-28リリース)は、マッピングなどを含む VIM-288 を実装した最初のバージョンでした jj に ESC。それはうまく機能し、~/.vimrcマッピングとIntellijの間のすべての競合をリストするIDEA設定)に新しいVimエミュレーションセクションがあります。マッピング、およびIDEAまたはIdeaVimのいずれかにキーを割り当てることで競合を解決できます。Twitterの リリースのお知らせ は次のとおりです。

(注:私は作成者ではなく、満足したユーザーです。)

155
jbyler

IdeaVIMの問題#VIM-288(編集、更新: jbyler's answer 、VIM-288の修正を参照)が修正されると、問題が解決するようです。私も、Escキーを使用する代わりに 'jk'が挿入モードを終了する方法を探していました。私はIntelliJプラグインの専門家ではありませんが、「jk」ショートカットがハードコードされるようにIdeaVIMソースコードを変更することができました。その後、プラグインを再展開して、公式バージョンの代わりにそれを使用するだけでした。以下がその方法です。

  1. IdeaVIMソースコードを入手します。

    https://github.com/JetBrains/ideavim

  2. そのページの「開発」の下の指示に従って、プラグインの開発環境をセットアップできます。

  3. IdeaVIMプロジェクトがすべてセットアップされたので、次のファイルを開きます:com.maddyhome.idea.vim.key.RegisterActions.Java

  4. このファイルには、すべてのVisual/Insert/Normalモードコマンドとそれらに対応するキー割り当てが含まれているようです。 「exit insert mode」キーバインドを変更する私の例では、「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ファイルをキーマップフォルダーから保存する必要があるかもしれませんが、わかりません。私は私のものを削除し、IntelliJを再起動したときに作り直されました。

  8. やってみて!終了挿入モードのショートカットとして「jk」を使用できるようになるはずです!

5
gnil

プラグインのリポジトリ内の説明( https://github.com/JetBrains/ideavim )によれば、ファイル「〜 /.ideavimrc "とその内容:

source ~/.vimrc
5

ご存知のとおり、Windowsのホームフォルダーで.vimrcを使用して成功しました。通常はC:\ Users\yourLoginです。それは仕様によるもののようです。 Olegは、IdeaVIMはここでVImコマンドのサブセットを使用していると述べています。

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

Youtrackシステムに関するコメントを表示するには、ログインする必要があるようです。

オレグ・シュピノフ2011年8月15日18:12

IdeaVIMプラグインは、.vimrcファイルから一部の構成データをロードしますが、Vimプラグインのサポートは、IdeaVimプラグイン内のすべてのVIMランタイムを書き換える必要があるため、使用できません。

Windowsを使用している場合は、_vimrcではなく.vimrcという名前を付ける必要があることに注意してください。

で動作します set ignorecase 少なくとも!

4
ruffin

現在、IdeaVim(少なくとも0.35で)は setコマンドの数が制限されている に加えて、マップとそのバリエーションをサポートしています。それらを自動的に入手するには、設定を〜/ .ideavimrcに入れます。

1
maher.cs

Windows 7で動作させるには、C:\ Users [username]に.ideavimrcを作成します

私のために働いた。

1
Itai Noam

昨日これを行う方法を見つけました。次のコマンドを実行して、.vimrcをideavim設定にシンボリックにリンクできました。

ln -s $HOME/.vimrc $HOME/.ideavim
0
Gabriel Atheos