我正在慢慢学习 vim 及其强大的功能。我有一个关于拆分窗口(主要是水平拆分)的问题。有没有办法自动调整当前选定(聚焦)窗口的大小?比方说,例如,一个设置使焦点窗口始终占据屏幕的 70%。
每次使用Ctrl-w(number) +/并不是很有效,尤其是当我不断在几个文件之间跳转时。-
如果有办法将其限制为仅水平分割的窗口,那将是很酷的。
我正在慢慢学习 vim 及其强大的功能。我有一个关于拆分窗口(主要是水平拆分)的问题。有没有办法自动调整当前选定(聚焦)窗口的大小?比方说,例如,一个设置使焦点窗口始终占据屏幕的 70%。
每次使用Ctrl-w(number) +/并不是很有效,尤其是当我不断在几个文件之间跳转时。-
如果有办法将其限制为仅水平分割的窗口,那将是很酷的。
该'winheight'
设置确定当前窗口的最小行数。一些用户将“Rolodex 模式”设置为 999。以下将其设置为 70%:
:let &winheight = &lines * 7 / 10
对于任何更高级的东西,您可以通过 连接到WinEnter
事件:autocmd
,然后通过 将窗口高度设置为:Nwincmd _
N。愚蠢的例子:
:autocmd WinEnter * execute winnr() * 2 . 'wincmd _'
一旦我发现你可以禁用黄金比例的“自动”部分,我就开始自己使用这些设置:
" 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>_
我将这些映射用于分屏:
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>
例如。