Hack #159: オプションの値を気にせずsplit, vsplitする
Posted at 2010/07/03ツイート
Vimの標準のコマンドである:split
や:vsplit
、
またはそのマッピング版である<C-w>s
と<C-w>v
は
それぞれ&splitbelow
と&splitright
に依存しており、
自分の思った通りの方向にウインドウを開いてくれない場合があります。
そこで、このようなマッピングを定義します。
nmap spj <SID>(split-to-j)
nmap spk <SID>(split-to-k)
nmap sph <SID>(split-to-h)
nmap spl <SID>(split-to-l)
nnoremap <SID>(split-to-j) :<C-u>execute 'belowright' (v:count == 0 ? '' : v:count) 'split'<CR>
nnoremap <SID>(split-to-k) :<C-u>execute 'aboveleft' (v:count == 0 ? '' : v:count) 'split'<CR>
nnoremap <SID>(split-to-h) :<C-u>execute 'topleft' (v:count == 0 ? '' : v:count) 'vsplit'<CR>
nnoremap <SID>(split-to-l) :<C-u>execute 'botright' (v:count == 0 ? '' : v:count) 'vsplit'<CR>
こうすることでいつでも自分の思った通りの方向にウインドウを開くことができます。
また
nmap spj <SID>(split-to-j)
nmap spk <SID>(split-to-k)
nmap sph <SID>(split-to-h)
nmap spl <SID>(split-to-l)
の部分は自分の好きなように変えてください。
筆者は上のようにそれぞれspj
, spk
, sph
, spl
に割り当てています。
追記: kana氏の指摘によりコードを大幅修正しました。
追記2:
[count]を取れるようにしました。30sphなどとすると30の幅を持つウインドウが左に開きます。
ちなみに現在筆者はマッピングを<Space>sj
, <Space>sk
, <Space>sh
, <Space>sl
に変更しました。
押しやすいマッピングはVimmerの数だけあるので、各人押しやすいマッピングを常に追求しましょう。
ちょっとでも押しにくいと感じたら積極的に他のマッピングを検討すべきです。
もどる
blog comments powered by Disqus