PhpStorm IdeaVimを使用すると、Shift +矢印キーを使用して単語を選択できません
私はIdeaVimプラグインでPhpStorm7.1.2を使用しています。
挿入モードで、Shift + ArrowKey
を使用して単語を選択したい。ただし、このIdeaVimプラグインはそれを妨げているようです。コマンドモードでは、v
キーを使用してのみ単語を強調表示できます。
shift+Home/End/PageDown/PageUp
またはshift+ctrl+arrowKeys
はすべて正しく機能しません。
キーマップ設定でショートカットを変更しようとしましたが(つまり、右に選択=>シフト+右)、機能しませんでした。
この非vimの動作を実現する方法はありますか?
UPDATE 1
彼らの バグ追跡システム で開かれたチケットが修正なしであります。だから私は上で説明したことをすることができないと思います。
UPDATE 2(11/14/2019)
この最後のコメント から、そのバグチケットで、ideaVimはこのshift + arrowKeysの選択をサポートするようになりました。私はこの質問をした数年後にintellijから純粋なvimに移行したので、これを試すことはしませんが、完全を期すためにこの質問を更新したかっただけです。そして、このアップデートを書いた後に@citizenmattの答えを見たので、これの詳細については、以下の@citizenmattの答えを参照してください。
次の行で~/.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>
それは私のコードに同じ方法でテキストを選択させます。
次の行で〜/ .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>
箱から出しては不可能のようです。ただし、ideavimがある限り、プラグインをハックしてShift +矢印キーのハードコードされたvimアクションを削除することは難しくありません。これには、デフォルトの動作を使用させる効果があります。
手順:
- _
git clone https://github.com/JetBrains/ideavim.git
_ - 新しく複製されたプロジェクトをideavimで開きます。
- ファイル/プロジェクト構造でintellijsdk依存関係を設定します(必要な場合)。
- _
ideavim/src/com/maddyhome/idea/vim/RegisterActions.Java
_を編集します。 - Shift +矢印キーを再定義するすべてのキーアクションを削除します):
:s%/^.*KeyEvent.VK_\(KP_\)\?\(LEFT\|RIGHT\|UP\|DOWN\), KeyEvent.SHIFT_MASK.*$//
。 - Antタスク_
clean compile dist
_を使用して再構築します。 - オプション/プラグイン/ディスクからプラグインをインストールしてプラグインを再インストールし、_
ideavim/out/dist/ideavim-xx-dev.Zip
_を見つけます
IdeaVIMを有効/無効にするバインディングがある場合は、IdeaVIMを一時的に無効にしてから、Shift矢印の選択を使用してから、IdeaVIMを再度有効にすることで、Shift矢印を選択できます。
キーマップダイアログのアクションは「Vimエミュレータ」と呼ばれ、「デフォルト」キーマップではアクションがバインドされています ⌃⌥V; 「MacOSX 10.5+」キーマップでは、 ⌥⌘V。
キーマップのショートカットは、[設定] => [キーマップ]ダイアログ、または[ヘルプ] => [アクションの検索...]メニューで検索できます。
(注意: ⌥ 「オプション」または「alt」とも呼ばれます。 ⌘ Macの「コマンド」キーです。)
IdeaVim 0.52以降、 VIM-437 が修正され、'keymodel'
オプションを使用して、シフトキーと選択を使用した特別な動作を有効にできます。 :set keymodel^=startsel
を~/.ideavimrc
に追加すると、Shift +カーソルキーを押すと、ビジュアルモード(または'selectmode'
にkey
が含まれている場合は選択モード)に変わります。残念ながら、現在、これは通常モードでのみ機能し、挿入モードでは機能しないというバグがあるようです。 VIM-1756 を参照してください。
'keymodel'
には便利なオプションが他にもあります。チェックアウト ドキュメント 。
Vimエミュレーターを無効にする2つの方法:
1.- Ctrl+alt+v / Cmd+alt+v
2.- Tools (menu) -> Vim emulator
矢印キーにバインドしないように、IdeaVimの最新バージョンをハッキングしました。 keymodelが私が望んでいたことを完全に実行していないことがわかりました。以前のバージョンでのJoeThomasのハックに慣れすぎて、自分のやり方を変えることができませんでした。
私のハッキングされたバージョンはここで見つけることができます: https://github.com/shaunpatterson/ideavim
これは良い質問ではないかもしれないと私は提案できますか?
Vimを使用する利点は、英数字キーと矢印の間の腕の動きの量を減らすことです。 Shift +矢印を使用すると、この目的が無効になります。
矢印に手を伸ばさずに単語を選択する簡単な方法:
- 選択するテキストの先頭にカーソルを置きます
v
を押してビジュアルモードに入ります(これはshift
キーを押すのと同じです)w
のカーソルを、選択するテキストの末尾に1回以上移動します。 (これは矢印を押すのと同じです)- 必要に応じてカット/コピー