12

私はゆっくりとvimとその強力な機能を学んでいます。ウィンドウの分割(主に水平分割)に関して質問があります。現在選択されている(フォーカスされている)ウィンドウのサイズを自動的に変更する方法はありますか?たとえば、フォーカスされたウィンドウが常に画面の70%を占めるように設定するとします。

Ctrl-w(number)+/-を毎回使用することは、特にいくつかのファイル間を絶えずジャンプしている場合は、あまり効率的ではありません。

また、水平方向に分割されたウィンドウのみに制限する方法があれば、それはすばらしいことです。

4

3 に答える 3

16

この'winheight'設定により、現在のウィンドウの最小行数が決まります。一部のユーザーは、「Rolodex モード」でこれを 999 に設定しています。以下は、これを 70% に設定します。

:let &winheight = &lines * 7 / 10

WinEnterより手の込んだものとして、 を介してイベントにフックし、を介し:autocmdてウィンドウの高さを N に設定できます:Nwincmd _。愚かな例:

:autocmd WinEnter * execute winnr() * 2 . 'wincmd _'
于 2012-07-24T16:16:58.670 に答える
9

黄金比が必要なようです:黄金比を使用してウィンドウのサイズを自動的に変更します。

黄金比の「自動」部分を無効にできることがわかったら、次の設定で自分で使用し始めました。

" Don't resize automatically.
let g:golden_ratio_autocommand = 0

" Mnemonic: - is next to =, but instead of resizing equally, all windows are
" resized to focus on the current.
nmap <C-w>- <Plug>(golden_ratio_resize)
" Fill screen with current window.
nnoremap <C-w>+ <C-w><Bar><C-w>_
于 2012-07-27T08:02:01.523 に答える
3

分割画面にこれらのマッピングを使用します。

nnoremap <C-j>  <C-w>j
nnoremap <C-k>  <C-w>k
nnoremap <C-h>  <C-w>h
nnoremap <C-l>  <C-w>l
nnoremap c<C-j> :bel sp new<cr>
nnoremap c<C-k> :abo sp new<cr>
nnoremap c<C-h> :lefta vsp new<cr>
nnoremap c<C-l> :rightb vsp new<cr>
nnoremap g<C-j> <C-w>j<C-w>_
nnoremap g<C-k> <C-w>k<C-w>_
nnoremap g<C-h> <C-w>h<C-w>_
nnoremap g<C-l> <C-w>l<C-w>_
nnoremap d<C-j> <C-w>j<C-w>c
nnoremap d<C-k> <C-w>k<C-w>c
nnoremap d<C-h> <C-w>h<C-w>c
nnoremap d<C-l> <C-w>l<C-w>c

このように、スプリット間をジャンプしたい場合は、 を使用できますC-hjkl。分割を「作成」したい場合は、 を使用できますcC-hjkl。分割を最大化したい場合は、 を使用できますgC-hjkl。分割を削除したい場合は、 を使用できますdC-hjkl

使用できる最大化ではなく、具体的に70%が必要な場合

nnoremap g<C-j> <C-w>j:let &winheight = &lines * 7 / 10<cr>

例えば。

于 2012-07-24T16:30:53.563 に答える