kid*_*chu 31 vim intellij-idea phpstorm ideavim
我正在使用带有IdeaVim插件的PhpStorm 7.1.2.
在插入模式下,我想使用选择单词Shift + ArrowKey.但是,这个IdeaVim插件似乎阻止了这样做.我只能使用v键突出显示命令模式中的单词.
shift+Home/End/PageDown/PageUp或者shift+ctrl+arrowKeys都没有正常工作.
我尝试在Keymap设置中更改快捷方式(即Select to Right => shift + right)但不起作用.
有什么方法可以实现这种非vim行为吗?
更新1
在他们的错误跟踪系统中打开了一张票,没有任何修复.所以我想我不能做我上面所描述的.
tha*_*llo 30
我会~/.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>
Run Code Online (Sandbox Code Playgroud)
它使我的代码以相同的方式选择文本.
小智 26
使用以下行创建〜/ .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>
Run Code Online (Sandbox Code Playgroud)
小智 10
似乎不可能开箱即用.但是,只要你有ideavim,就不难破解插件去除shift +箭头键的硬编码vim动作.这具有允许使用默认行为的效果.
脚步:
git clone https://github.com/JetBrains/ideavim.gitideavim/src/com/maddyhome/idea/vim/RegisterActions.java.:s%/^.*KeyEvent.VK_\(KP_\)\?\(LEFT\|RIGHT\|UP\|DOWN\), KeyEvent.SHIFT_MASK.*$//.clean compile dist.ideavim/out/dist/ideavim-xx-dev.zip其他答案对我来说仍然有问题,选择不能准确工作,或者不能在视觉模式下工作。
@citizenmatt 在评论中提到使用“set keymodel=startsel”,但我对此有很多问题。即使松开 Shift 后它仍会继续选择,并且选择的开始位置有时会移动一个字符。
如果要撤消“set keymodel=startsel”,请使用默认值“set keymodel=startsel,stopsel”
将其添加到您的 ~/.ideavimrc 中:
nmap <S-Left> <Action>(EditorLeftWithSelection)
nmap <S-Right> <Action>(EditorRightWithSelection)
nmap <S-Up> <Action>(EditorUpWithSelection)
nmap <S-Down> <Action>(EditorDownWithSelection)
imap <S-Left> <Action>(EditorLeftWithSelection)
imap <S-Right> <Action>(EditorRightWithSelection)
imap <S-Up> <Action>(EditorUpWithSelection)
imap <S-Down> <Action>(EditorDownWithSelection)
vmap <S-Left> <Action>(EditorLeftWithSelection)
vmap <S-Right> <Action>(EditorRightWithSelection)
vmap <S-Up> <Action>(EditorUpWithSelection)
vmap <S-Down> <Action>(EditorDownWithSelection)
Run Code Online (Sandbox Code Playgroud)
这使用新的<Action>语法,因此您不必担心使用<C-O>递归映射或冲突。你永远不会离开原来的模式。
如果您有启用/禁用 IdeaVIM 的绑定,您可以通过暂时禁用 IdeaVIM,然后使用移位箭头选择,然后重新启用 IdeaVIM 来获得移位箭头选择。
Keymap 对话框中的操作称为“Vim Emulator”,在“Default”键盘映射中它绑定到??V;在“Mac OS X 10.5+”键盘映射中,它绑定到??V.
您可以在 Preferences => Keymap 对话框或 Help => Find Action... 菜单中查找您的键盘映射的快捷方式。
(注意:?也称为“选项”或“alt”;?是 Mac 上的“命令”键。)