使用PhpStorm IdeaVim,我不能使用shift +箭头键来选择单词

时间:2014-02-11 19:47:20

标签: intellij-idea vim phpstorm ideavim

我正在使用带有IdeaVim插件的PhpStorm 7.1.2。

在插入模式下,我想使用Shift + ArrowKey选择单词。但是,这个IdeaVim插件似乎阻止了这样做。我只能使用v键在命令模式下突出显示单词。

shift+Home/End/PageDown/PageUpshift+ctrl+arrowKeys都无效。

我尝试在Keymap设置中更改快捷方式(即选择向右=> shift +向右)但不起作用。

有什么方法可以实现这种非vim行为吗?

更新1

在他们的bug tracking system中打开了一张没有任何修复的故障单。所以我想我不能做我上面描述的事情。

8 个答案:

答案 0 :(得分:25)

我会使用以下行创建~/.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>

它使我的代码以相同的方式选择文本。

答案 1 :(得分:21)

使用以下行创建〜/ .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>

答案 2 :(得分:10)

似乎无法开箱即用。但是,只要你有ideavim,就不难破解插件去除shift +箭头键的硬编码vim动作。这具有允许使用默认行为的效果。

步骤:

  1. git clone https://github.com/JetBrains/ideavim.git
  2. 在ideavim中打开新克隆的项目。
  3. 在文件/项目结构中设置intellij sdk依赖项(如有必要)。
  4. 修改ideavim/src/com/maddyhome/idea/vim/RegisterActions.java
  5. 删除重新定义shift + arrow键的所有关键操作::s%/^.*KeyEvent.VK_\(KP_\)\?\(LEFT\|RIGHT\|UP\|DOWN\), KeyEvent.SHIFT_MASK.*$//
  6. 使用ant任务clean compile dist重建。
  7. 通过选项/插件/从磁盘安装插件重新安装插件并找到ideavim/out/dist/ideavim-xx-dev.zip

答案 3 :(得分:4)

如果您有启用/禁用IdeaVIM的绑定,您可以通过暂时禁用IdeaVIM,然后使用移位箭头选择,然后重新启用IdeaVIM来获得移位箭头选择。

Keymap对话框中的操作称为&#34; Vim Emulator&#34;,以及&#34;默认&#34; keymap绑定到 ^ V ;在&#34; Mac OS X 10.5 +&#34;键映射它绑定到 V

您可以在Preferences =&gt;中查找键盘映射的快捷方式。 Keymap对话框,或Help =&gt;查找操作...菜单。

(注意:也称为&#34;选项&#34;或&#34; alt&#34 ;; 是&#34;命令& #34;在Mac上键。)

答案 4 :(得分:1)

从IdeaVim 0.52开始,VIM-437已得到修复,您可以使用'keymodel'选项启用键和选择键移位的特殊行为。如果将:set keymodel^=startsel添加到~/.ideavimrc中,则shift +光标键会将您切换到可视模式(如果'selectmode'包含key,则将选择可视模式)。不幸的是,当前似乎存在一个错误,这意味着该错误仅在正常模式下有效,而在插入模式下无效。参见VIM-1756

'keymodel'的更多选项可能有用。检出the docs

答案 5 :(得分:0)

禁用Vim仿真器 2种方式:

1.- Ctrl+alt+v / Cmd+alt+v
2.- Tools (menu) -> Vim emulator

答案 6 :(得分:0)

我破解了IdeaVim的最新版本,以不绑定到箭头键。我发现keymodel并没有完全满足我的要求。在以前的版本中,我已经习惯于乔·托马斯(Joe Thomas)的hack,无法改变自己的方式。

我的被黑版本可以在这里找到:https://github.com/shaunpatterson/ideavim

答案 7 :(得分:0)

我可以建议这不是一个好问题吗?

使用vim的一个优点是减少了字母数字键和箭头之间的手臂移动量。使用shift + arrow不能达到这个目的。

一种无需伸手就可以选择单词的简单方法:

  1. 将光标置于要选择的文本的开头
  2. v进入可视模式(相当于按shift键)
  3. 使用w将光标移至要选择的文本的末尾一次或多次。 (这等效于按箭头)
  4. 根据需要剪切/复制