screenのウィンドウ分割とVimのウィンドウ分割を和解させる(半分)
screen便利。Vimの中でシェルは使えないよ(:he design-not)、使いたいならscreenとか試してみるといいよ、ってどこかで見たんで最近使いはじめたけど、screenで分割したウィンドウの中でVim使ってるとついついCtrl-W jとかで移動しようとしてしまう。そこでこんな風に設定してみた。
if &term =~ 'screen'
nmap <C-W>k :call <SID>MoveToWindowAbove()<CR>
nmap <C-W>j :call <SID>MoveToWindowBelow()<CR>
function! s:MoveToWindowAbove()
if winnr() == 1
silent !screen -X focus up
else
wincmd k
endif
endfunction
function! s:MoveToWindowBelow()
let current_winnr = winnr()
wincmd b
let bottom_winnr = winnr()
if current_winnr == bottom_winnr
silent !screen -X focus down
else
wincmd p
wincmd j
endif
endfunction
endif
こうするとVimの中でウィンドウ移動してるつもりでCtrl-W jとかやってもうまいことウィンドウ間を移動してくれる。でももちろんVimから移動する場合だけで、screenからは無理(だから半分)。Ctrl-Wとかよく使うから下手に設定できないし、どうすればいいのか分からないなぁ。



