Переход к ярлыкам IntelliJ IDEA из IdeaVim

Я привык к горячим клавишам vim и IntelliJ по умолчанию. Я бы не хотел менять ни один из них - я бы предпочел иметь возможность использовать конфликтующие привязки IntelliJ, например, CTRL-P, после какой-либо клавиши escape.

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

Есть ли решение моей проблемы?


person Thirteenth Seeker    schedule 12.08.2015    source источник


Ответы (5)


Я просто выключаю плагин VIM, выполняю нажатие клавиши, а затем снова включаю его. Для этого у меня есть ^Z, связанный с командой эмулятора VIM, и мне этого достаточно. Чтобы настроить это, перейдите в «Настройки...» => «Раскладка клавиатуры», найдите «эмулятор vim» и щелкните правой кнопкой мыши имя команды, чтобы назначить ярлык.

Но если у вас есть ограниченный набор команд IntelliJ, которые вы хотите использовать с ключом префикса, вы можете выбрать ключ префикса, убедиться, что он не связан в IntelliJ, а затем использовать его в своем ~/.ideavimrc вместе с исходной привязкой, которую вы хотите вызвать. .

Например, ^D в VIM — это «Прокрутить окно вниз», а в IntelliJ (с раскладкой «Mac OS X 10.5+») — «Отладка». Если вы хотите иметь возможность использовать оба:

  • выберите ключ префикса, который не привязан к IntelliJ, скажем, ^Z
  • в Other Settings => Vim Emulation найдите ярлык ^D и установите обработчик на Vim.
  • В ~/.ideavimrc добавьте следующее сопоставление:

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

Теперь вы можете ввести ^D для прокрутки действия Vim или ^Z^D для действия IntelliJ Debug, фактически не отключая IdeaVIM. Вам, конечно, придется добавить сопоставление в файл ~/.ideavimrc для каждой команды IntelliJ, которую вы хотите выполнить таким образом, но если у вас их ограниченное количество, вы можете настроить их один раз и покончить с этим.

person jbyler    schedule 13.08.2015
comment
Это начало интересной идеи. Я предполагаю, что можно проанализировать файлы раскладок IntelliJ и IdeaVim, а затем создать .ideavimrc, который содержит привязки для всех конфликтующих сопоставлений. Я мог бы сделать это и вписаться в ваш ответ, а затем принять его; Мне еще только предстоит найти соответствующие файлы (я нашел только пользовательский файл IDEA keymap .xml, а по умолчанию пока нет). - person Thirteenth Seeker; 17.08.2015
comment
Как вы настроили vimemulator с помощью ^Z? Я не могу этого сделать. - person Onewildgamer; 14.07.2018
comment
@Onewildgamer Я второй. Я просто выключаю плагин VIM, выполняю нажатие клавиши, а затем снова включаю его. Для этого у меня есть привязка ^Z к команде эмулятора VIM, и мне этого достаточно. -- Как ты это сделал? - person Code Wiget; 24.11.2019
comment
@ Райан, я только что отредактировал ответ, чтобы добавить инструкции. - person jbyler; 28.11.2019
comment
Чтобы найти все действия, введите :actionlist. Вот что я сделал для привязки действия VCS/Commit: 1) В IdeaVim/Settings установил Ctrl+K Commit... в обработчик IDE; 2) перечислить все действия с командой :actionlist; 3) нашел там C-K и скопировал название действия - CheckinProject; 4) В IdeaVim/Настройки установите Ctrl+K Commit... на обработчик Vim; 5) добавить карту в ~/.ideavimrc - nnoremap <C-z><C-k>:action CheckinProject<CR>; 6) :source ~/.ideavimrc. - person Dimon; 23.04.2020

Я создал .ideavimrc, который содержит привязки для всех конфликтующих сопоставления. Может кому пригодится.

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 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>
person melihovv    schedule 29.11.2015
comment
Круто ‹3 Круто ‹3 Круто ‹3 - person AME; 02.09.2016
comment
Спас мой день - теперь у меня есть куча вещей, чтобы добавить туда :) - person x1a0; 14.09.2016
comment
Я пробовал, но MethodHierarchy.OverrideMethodAction не работает. - person sunhang; 06.04.2017
comment
Я обновил ответ. Вы можете использовать команду :actionlist, чтобы увидеть все интеллектуальные действия для настройки этих сопоставлений. - person melihovv; 06.04.2017
comment
В моей системе (Win7 x64, PyCharm 2017.1.3) мне нужно было заменить map на nnoremap, чтобы получить эту работу. Хотя идея отличная, спасибо большое! - person Hope; 02.06.2017
comment
По какой-то причине мне не удается <leader>r открыть окно замены в визуальном режиме, даже если в этом сопоставлении используются noremap или vnoremap. - person Hope; 02.06.2017
comment
Можете ли вы сделать ‹лидер›pf ? - person Justin Thomas; 08.06.2017
comment
что такое лидер? - person Ted; 13.10.2017
comment
Ключ лидера @Ted - это то, что вы определяете, если вы внимательно прочитали, есть строка с надписью let mapleader = " ", которая делает «пробел» клавишей лидера, например, <space>+b переводится в :goto declaration - person old-monk; 18.08.2018
comment
Чтобы IdeaVim прочитал ваши изменения в .ideavimrc, используйте :source ~/.ideavimrc - person ARX; 08.04.2019

В дополнение к отличному ответу @melihovv я добавил действия «Выполнить», «Отладить» и «Выбрать конфигурацию» в свой файл ~/.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>
person John Slavick    schedule 04.01.2019

карта клавиш без каких-либо привязок здесь: для использования, чтобы можно было начать с чистого листа, настроив .ideavimrc

person animaacija    schedule 28.09.2017

Простым вариантом также может быть использование режима вставки для привязок клавиш IntelliJ. Я только начинаю работать с ideavim, и пока мне кажется, что это мне подходит.

person alex0ptr    schedule 29.11.2018