2014-02-11 3 views
15

Я использую PhpStorm 7.1.2 с плагином IdeaVim.Использование PhpStorm IdeaVim, я не могу использовать клавиши shift +, чтобы выбрать слова

В режиме Вставки, я хочу выбрать слова, используя Shift + ArrowKey. Однако этот плагин IdeaVim, похоже, не позволяет это делать. Я могу выделить только слова в командном режиме, используя ключ v.

shift+Home/End/PageDown/PageUp или shift+ctrl+arrowKeys все не работают должным образом.

Я попытался изменить ярлыки (т. Е. Выбрать вправо => сдвиг + вправо) в настройках клавиатуры, но не работал.

Есть ли способ достичь этого поведения, не связанного с vim?

UPDATE 1

Существует билет вскрыта в их bug tracking system без каких-либо исправить. Поэтому, я думаю, я не могу делать то, что я описал выше.

+0

почему вам нужно это плагин? Наверное, вам нравится редактировать в vim. если да, спросите себя, если это возможно сделать в чистом vim. Как вы делаете эти изменения в vim? – Kent

+0

@Kent Несмотря на то, что мне нравится, как vim реализует функции перемещения и редактирования, есть некоторые случаи, когда я хотел бы использовать обычные функции клавиш переключения в режиме Insert. Это не вопрос, где я могу делать операции смены в чистом Vim. Скорее, я спрашиваю: «Могу ли я делать операции переключения в PhpStorm с помощью плагина IdeaVim или нет» – kidonchu

+0

У вас, похоже, уже есть свой ответ. – romainl

ответ

3

Если у вас есть привязка для включения/выключения IdeaVIM, вы можете получить выбор стрелки-стрелки, временно отключив IdeaVIM, а затем выбрав shift-стрелку, а затем снова включив IdeaVIM.

Действие в диалоге раскладка называется «Вим Emulator», и в «Default» раскладке клавиатуры он связан с ^V; в "Mac OS X 10.5+", она привязана к V.

Вы можете найти ярлыки для своей раскладки клавиатуры либо в диалоговом окне «Настройки»> «Диалоговое окно», либо в меню «Справка»> «Найти действие ...».

(Примечание: также называется «вариант» или «альт», ключ «команда» на Mac.)

10

Это, как представляется, не представляется возможным из коробки. Однако, нетрудно взломать плагин, чтобы удалить жестко закодированные действия vim для клавиш shift + стрелки, если у вас есть ideavim. Это позволяет использовать поведение по умолчанию.

Шаги:

  1. git clone https://github.com/JetBrains/ideavim.git
  2. Открыть недавно клонировали проект в ideavim.
  3. Настройте зависимость intdij sdk в файлах/структуре проекта (при необходимости).
  4. Редактировать ideavim/src/com/maddyhome/idea/vim/RegisterActions.java.
  5. Удалите все ключевые действия, которые переопределяют shift + стрелку): :s%/^.*KeyEvent.VK_\(KP_\)\?\(LEFT\|RIGHT\|UP\|DOWN\), KeyEvent.SHIFT_MASK.*$//.
  6. Реконструкция с использованием задач муравьев clean compile dist.
  7. Установите плагин с помощью параметров/Plugins/Установка подключаемого модуля с диска и найдите ideavim/out/dist/ideavim-xx-dev.zip
+0

Спасибо за подсказку Джо! Я создал ветку со всеми внесенными изменениями и современными инструкциями по установке здесь: https://github.com/epegzz/ideavim – epegzz

+0

Да, это определенно должно быть своего рода вариантом в плагине. – Shaun

17

Я хотел бы создать ~/.ideavimrc со следующими линиями

nmap <S-Up> v<Up> 
nmap <S-Down> v<Down> 
nmap <S-Left> v<Left> 
nmap <S-Right> v<Right> 
vmap <S-Up> <Up> 
vmap <S-Down> <Down> 
vmap <S-Left> <Left> 
vmap <S-Right> <Right> 
imap <S-Up> <Esc>v<Up> 
imap <S-Down> <Esc>v<Down> 
imap <S-Left> <Esc>v<Left> 
imap <S-Right> <Esc>v<Right> 

Это делает мой код, выберите текст, таким же образом, ,

+2

Спасибо за это. –

+0

Просто комментарий: ответ @jbyler оказывается более практичным в том смысле, что он временно отключает ideavim, чтобы он не мешал другим функциям IntelliJ. Например, когда мне нужно использовать несколько курсоров, я отключу ideavim, использую несколько курсоров для редактирования того, что я хочу, а затем вернусь обратно в vim. – thalesmello

2

создать ~/.ideavimrc файл, содержащий следующие строки

nnoremap <S-Left> :action EditorLeftWithSelection<CR> 
nnoremap <S-Right> :action EditorRightWithSelection<CR> 
nnoremap <S-Up> :action EditorUpWithSelection<CR> 
nnoremap <S-Down> :action EditorDownWithSelection<CR> 

inoremap <S-Left> <C-O>:action EditorLeftWithSelection<CR> 
inoremap <S-Right> <C-O>:action EditorRightWithSelection<CR> 
inoremap <S-Up> <C-O>:action EditorUpWithSelection<CR> 
inoremap <S-Down> <C-O>:action EditorDownWithSelection<CR> 
+0

Это сработало отлично. Это должен быть принятый ответ. –