web-dev-qa-db-fra.com

Échapper à IntelliJ IDEA raccourcis d'IdeaVim

Je suis habitué aux touches de raccourci par défaut vim et IntelliJ. J'aimerais ne pas avoir à en changer, je préférerais pouvoir utiliser des liaisons IntelliJ en conflit, comme CTRL-P par exemple, après une sorte de touche d'échappement.

Le ballon de conflit et mes recherches ne m'ont pas été d'une grande aide. La seule chose que j’ai trouvée, c’est que je peux désactiver le plug-in vim avec un raccourci clavier, puis le rallumer une fois que j’ai terminé, mais je dois me rappeler de l’activer à chaque fois.

Y a-t-il une solution à mon problème?

20
Thirteenth Seeker

Je viens de désactiver le plug-in VIM, d'exécuter la frappe au clavier, puis de le réactiver. j'ai ^Z lié à la commande VIM Emulator à cette fin et cela me suffit.

Toutefois, si vous souhaitez utiliser un ensemble limité de commandes IntelliJ avec une clé de préfixe, vous pouvez choisir la clé de préfixe, assurez-vous qu'elle est non liée dans IntelliJ, puis utilisez-la dans votre ~/.ideavimrc avec la liaison d'origine que vous souhaitez invoquer. .

Par exemple, ^D dans VIM est "Faire défiler la fenêtre vers le bas" et dans IntelliJ (avec le keymap "Mac OS X 10.5+") est "Debug". Si vous voulez pouvoir utiliser les deux:

  • choisissez un préfixe non lié à IntelliJ, par exemple ^Z
  • dans Autres paramètres => Émulation Vim, trouver un raccourci ^D et définissez le gestionnaire sur Vim.
  • Dans votre ~/.ideavimrc, ajoutez le mappage suivant:

    nnoremap <C-Z><C-D> :action Debug<CR>

Maintenant, vous pouvez taper ^D pour l'action Vim, faites défiler vers le bas, ou ^Z^D pour l’action IntelliJ Debug, sans désactiver IdeaVIM. Vous devrez bien sûr ajouter un mappage à votre ~/.ideavimrc pour chaque commande IntelliJ que vous souhaitez exécuter de cette façon, mais si vous avez un nombre limité, vous pouvez les configurer une fois et en finir avec celle-ci.

16
jbyler

J'ai créé .ideavimrc qui contient des liaisons pour tous les mappages en conflit. Peut-être que ça va être utile à quelqu'un.

imap jj <Esc>

let mapleader = " "
map <leader>a :action $SelectAll<CR>
map <leader>b :action GotoDeclaration<CR>
map <leader>c :action $Copy<CR>
map <leader>d :action EditorDuplicate<CR>
map <leader>e :action RecentFiles<CR>
map <leader>f :action Find<CR>
map <leader>g :action GotoLine<CR>
map <leader>h :action TypeHierarchy<CR>
map <leader>i :action ImplementMethods<CR>
map <leader>m :action EditorScrollToCenter<CR>
map <leader>n :action FileChooser.NewFolder<CR>
map <leader>o :action OverrideMethods<CR>
map <leader>p :action ParameterInfo<CR>
map <leader>q :action GuiDesigner.QuickJavadoc<CR>
map <leader>r :action Replace<CR>
map <leader>s :action SaveAll<CR>
map <leader>t :action Vcs.UpdateProject<CR>
map <leader>u :action GotoSuperMethod<CR>
map <leader>v :action $Paste<CR>
map <leader>w :action EditorSelectWord<CR>
map <leader>x :action $Cut<CR>
map <leader>y :action EditorDeleteLine<CR>
map <leader>[ :action EditorCodeBlockStart<CR>
map <leader>] :action EditorCodeBlockEnd<CR>
36
melihovv

Un keymap sans aucune liaison ici: à utiliser, donc on pourrait partir de la table rase pour configurer le .ideavimrc

1
animaacija

Une option simple peut également consister à utiliser le mode insertion pour IntelliJ Keybindings. Je commence juste avec ideavim et cela semble le faire pour moi, pour l'instant ..

0
alex0ptr

Ajoutant à l'excellente réponse de @melihovv, j'ai ajouté les actions Exécuter, Déboguer et Choisir une configuration à mon ~/.ideavimrc.

map <leader>dd :action Debug<CR>
map <leader>cd :action ChooseDebugConfiguration<CR>
map <leader>rr :action Run<CR>
map <leader>cr :action ChooseRunConfiguration<CR>
0
John Slavick