分割に対処するために、私は実際に非常に便利なサブモードプラグインを使用します。これにより、新しいキーバインディングを定義する新しいモード(通常モード、ビジュアルモード、挿入モードなどの「モード」)を作成できます。 。
これにより、Ctrl+wもう使用する必要がなく、新しいモードですべてのキーを自由にバインドできます。「くそー、意味としてまだマップされていないキーの組み合わせが見つかりません」 」
通常のプラグインマネージャーを使用してプラグインをインストールできます。ここにいくつかのインスピレーションを与えるための構成をいくつか示します。
WindowsMode
スプリットを操作するために呼び出した新しいモードを作成しました。
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
これらの行は、でモードに入り、でモードLeaderkを終了することを意味しますLeader。Leaderkすべてのキーを押すと、次のようになります。
- このモードでマッピングを定義していない場合は何もしません
- このモードでそれらをマップすることにしたことを行います(残りの答えを参照)
- ヒットしたら通常モードに戻る Leader
WindowsMode
これらの行に入ったら、次のhjklように分割をナビゲートしますCtrl+whjkl
" Change of windows with hjkl
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j')
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k')
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h')
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l')
これらの行を使用して、ウィンドウを/andで分割しました!。
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
そしてqスプリットを閉じます:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
で分割を移動しますCtrlhjkl:
call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J')
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K')
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H')
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L')
Vimサブモードでは、多くの強力なことができます。詳細については、ドキュメントを参照してください。
編集ウィンドウサブモードの別のアプローチをここで説明します。著者が使用した方法は質問に答えるのにさらに近いと思います:ここでは新しいモードを作成するために使用され<c-w>something
ますが、サブモードで同じキーを使用してすべてのマッピングを使用できます。
" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\ 'n','o','p','q','r','s','t','u','v','w','x','y','z']
" maps lowercase, uppercase and <C-key>
call submode#map('window', 'n', '', key, '<C-w>' . key)
call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor
" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor
この方法では、すべてのマッピング<c-w>lowerCaseKey
、<c-w>upperCaseKey
、<c-w><c-Key>
およびマッピングは<c-w>=_+-<>
接頭辞なしで、すべてのウィンドウモードでアクセスできます<c-w>
wincmd
たとえば、マッピングすることができます::nmap wj :wincmd j<cr>
それは同じ動作CTRL-W j
をします(下のウィンドウに移動):help wincmd