I am using PhpStorm 7.1.2 with IdeaVim plugin.
When in Insert mode, I want to select words using Shift + ArrowKey
. However, this IdeaVim plugin seems to be preventing from doing that. I can only highlight the words in Command mode using v
key.
shift+Home/End/PageDown/PageUp
or shift+ctrl+arrowKeys
all do not work properly.
I tried changing shortcuts (i.e. Select to Right => shift+right) in Keymap setting but did not work.
Is there any way I can achieve this non-vim behavior?
UPDATE 1
There is a ticket opened in their bug tracking system without any fix. So I guess I can't do what I described above.
I would create a ~/.ideavimrc
with the following lines
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>
It makes my code select text in the same way.
create ~/.ideavimrc file with the following lines
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>
It appears to not be possible out of the box. However, it is not hard to hack the plugin to remove the hard-coded vim actions for shift + arrow keys, as long as you have ideavim. This has the effect of letting the default behaviours be used.
Steps:
git clone https://github.com/JetBrains/ideavim.git
- Open the newly cloned project in ideavim.
- Set up the intellij sdk dependency in Files / Project Structure (if necessary).
- Edit
ideavim/src/com/maddyhome/idea/vim/RegisterActions.java
.
- Remove all key actions that redefine shift+arrow key):
:s%/^.*KeyEvent.VK_\(KP_\)\?\(LEFT\|RIGHT\|UP\|DOWN\), KeyEvent.SHIFT_MASK.*$//
.
- Rebuild using the ant tasks
clean compile dist
.
- Reinstall the plugin via Options / Plugins / Install Plugin From Disk and locate
ideavim/out/dist/ideavim-xx-dev.zip
If you have a binding to enable / disable IdeaVIM, you can get shift-arrow selection by temporarily disabling IdeaVIM, then using shift-arrow selection, then re-enabling IdeaVIM.
The action in the Keymap dialog is called "Vim Emulator", and in the "Default" keymap it is bound to ⌃⌥V; in "Mac OS X 10.5+" keymap it is bound to ⌥⌘V.
You can look up shortcuts for your keymap either in the Preferences => Keymap dialog, or with the Help => Find Action... menu.
(Note: ⌥ is also called "option" or "alt"; ⌘ is the "command" key on a Mac.)
Disable Vim emulator
2 ways:
1.- Ctrl+alt+v / Cmd+alt+v
2.- Tools (menu) -> Vim emulator