winpos

自分は lines は目一杯で、columns は 80 か 161 にしかしない。なので、こいつを 1key で設定出来るようにする。
まず、関数を作る。

" Resize
function! ToggleWidth()
if &columns > 160
  set columns=80
else
  set columns=161
endif
endfunction
" Snap
function! SnapToScreenEdge(direction)
  if a:direction == 'right'
    if &columns > 160
      winpos 422 32
    else
      winpos 908 32
    endif
  else
    winpos 0 32
  endif
  endfunction

で、これを呼び出す map を定義する。

nmap <silent> <M-m> :call ToggleWidth()<CR>
nmap <silent> <M-l> :call SnapToScreenEdge('right')<CR>
nmap <silent> <M-h> :call SnapToScreenEdge('left')<CR>