web-dev-qa-db-fra.com

Existe-t-il un moyen d’obliger IdeaVIM à respecter les mappages de mon fichier .vimrc?

Je me suis récemment lancé (encore une fois) dans vim, et j’ai maintenant une tonne de personnalisation dans mon fichier .vimrc. Je réalise que tout ce qui s'y trouve n’aurait pas de sens dans le contexte d’un plug-in IDEA, mais j’aimerais vraiment l’aimer si des éléments comme le remappage de jj à Esc étaient repris et respectés. Y-a-t-il un moyen de faire ça? Sans avoir besoin de modifier manuellement tout ce qui se trouve dans le keymap d'IDEA, c'est-à-dire.

Merci.

55
Hank Gay

Mise à jour: oui! Voir la réponse ci-dessous .

Réponse courte: non. 

J'ai aussi essayé de le faire, surtout parce que j'ai un .vimrc assez complexe auquel je suis habitué au fil des ans. 

Quoi qu'il en soit, il existe une solution de contournement (en quelque sorte). Les paramètres IdeaVim sont stockés dans un fichier appelé vim.xml dans le dossier .IntelliJIdea10/config/keymaps de votre dossier personnel (C:\Users\<user_name> sous Windows). Vous pouvez éditer le XML pour ajouter des choses que vous voulez. Par exemple, j'ai ajouté les lignes suivantes pour enregistrer un fichier en tapant F2 au lieu de taper :w!

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

Cependant, je ne vois pas comment nous pourrions ajouter des éléments tels que des fonctions ou des paramètres vim (ce pour quoi j'utiliserais typiquement un .vimrc).

P.S. Cela pourrait expliquer pourquoi un .vimrc n'est pas utilisé (c'est moi qui souligne):

Pour les curieux, le plugin est en cours écrit sans aucune référence au VIM code source (sauf pour le traitement des expressions régulières .__). Je suis essentiellement en utilisant l'excellent VIM documentation et VIM lui-même en tant que référence pour vérifier le comportement correct.
Source: http://ideavim.sourceforge.net/

23

Réponse mise à jour: IdeaVim version 0.35 (publiée le 2014-05-15) lit les paramètres et les liaisons de clé à partir de ~/.ideavimrc. Vous pouvez mettre source ~/.vimrc dans ce fichier si vous souhaitez inclure des mappages à partir de ~/.vimrc.

0.33 et 0.34 lisent ~/.vimrc directement.

0.33 (publiée le 2014-04-28) était la première version à implémenter VIM-288 , y compris des éléments tels que la cartographie jj à ESC. Cela fonctionne très bien, et il y a une nouvelle section Vim Emulation dans les préférences IDEA qui répertorie tous les conflits entre les mappages ~/.vimrc et les mappages Intellij et vous permet de résoudre les conflits en attribuant les clés à IDEA ou à IdeaVim. Voici le annonce de sortie sur Twitter.

(Remarque: je ne suis pas l'auteur, mais un utilisateur satisfait.)

150
jbyler

Il semble que le problème IdeaVIM n ° VIM-288 (édition, mise à jour: voir la réponse de jbyler , VIM-288 maintenant corrigé) résoudra votre problème une fois le problème résolu. Moi aussi, je cherchais un moyen de quitter jk le mode insertion au lieu d'utiliser la touche Échap. Je ne suis pas un expert des plugins IntelliJ, mais j'ai réussi à modifier le code source d'IdeaVIM afin que le raccourci 'jk' soit codé en dur. Tout ce que je devais faire alors était de redéployer le plugin et de l'utiliser à la place de la version officielle. Voici comment je l'ai fait:

  1. Prenez le code source IdeaVIM. 

    https://github.com/JetBrains/ideavim

  2. Vous pouvez suivre les instructions sous "Développement" sur cette page pour configurer votre environnement de développement pour le plug-in.

  3. Maintenant que votre projet IdeaVIM est entièrement configuré, ouvrez ce fichier: Com.maddyhome.idea.vim.key.RegisterActions.Java

  4. Il semble que ce fichier contient toutes les commandes du mode Visual/Insert/Normal et leurs raccourcis clavier correspondants. Pour mon exemple de modification de la liaison de clé "exit insert mode", recherchez "VimInsertExitMode". Vous devrez ajouter une ligne à ce bloc de code pour votre nouveau raccourci.

  5. Voici comment la section de code s'est occupée après l'avoir modifiée:

    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. Maintenant, déployez le projet (créez un fichier .jar) et ajoutez-le à votre dossier plugins; J'ai suivi ces instructions pour référence:

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

  7. Vous devrez peut-être enregistrer votre fichier Vim.xml à partir de votre dossier keymaps, je ne suis pas sûr. J'ai supprimé le mien, puis il a été refait lorsque j'ai redémarré IntelliJ.

  8. Essayer! Devrait pouvoir utiliser «jk» comme raccourci de mode insertion, maintenant! 

5
gnil

Vous savez, j'ai eu un certain succès avec .vimrc dans mon dossier personnel sous Windows, donc typiquement C:\Utilisateurs\votreLogin. Il semblerait que ce soit intentionnel. Oleg mentionne qu'IdeaVIM utilise ici un sous-ensemble de commandes VIm.

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

On dirait que vous devez être connecté pour voir les commentaires sur le système youtrack.

Oleg Shpynov 15 août 2011 18:12

Le plug-in IdeaVIM charge certaines données de configuration à partir d'un fichier .vimrc, mais les plug-ins vim prennent en charge n'est pas et ne sera pas disponible, car il faut réécrire tout le runtime VIM dans Plugin IdeaVim.

Notez que vous devez nommer le fichier .vimrc, et non _vimrc, si vous êtes sous Windows et que vous pouvez vous attendre à ce dernier.

Fonctionne avec set ignorecase au moins!

4
ruffin

Selon la description dans le référentiel du plugin ( https://github.com/JetBrains/ideavim ), vous pouvez y parvenir en créant un fichier "~/.ideavimrc" avec son contenu:

source ~/.vimrc
4
Alan Zhiliang Feng

IdeaVim supporte maintenant (au moins dès 0,35) un nombre limité de commandes, , ainsi que map et ses variantes. Pour les rechercher automatiquement, placez vos paramètres dans ~/.ideavimrc.

1
maher.cs

Pour que cela fonctionne avec Windows 7, créez .ideavimrc dans C:\Users [nom d'utilisateur]

Travaillé pour moi.

1
Itai Noam

Je viens de comprendre comment faire cela hier. J'ai pu lier symboliquement mon fichier .vimrc à mes paramètres ideavim en exécutant la commande suivante:

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