使用键盘映射在vim中调整窗口大小

5

我正在尝试将 +_ 键设置为在 vim 中增加或减小窗格大小。以下是我在 .vimrc 文件中的代码:

 nnoremap + :res +5
 nnoremap _ :res -5

然而它似乎不起作用。在vim中映射调整大小的窗格的正确方法是什么?此外,是否有一种方法可以在输入命令后自动按下[enter]键以便自动执行命令?

2个回答

14
:res 命令很好,但您需要将 <CR>(回车符)附加到映射上才能在按下 + _ 时实际执行它们。 因此,您的映射应该像这样:
nnoremap + :res +5<CR>
nnoremap _ :res -5<CR>

需要注意的是,Vim内置了快捷键来增加和减少窗口的高度和宽度,其中默认值为1:
- 增加高度(1个单位):Ctrl-W + - 减少高度(1个单位):Ctrl-W - - 增加宽度(1个单位):Ctrl-W > - 减少宽度(1个单位):Ctrl-W < 要在以上快捷键中使用其他值,只需将该值添加到快捷键之前即可:
- 增加5个单位的高度:5 Ctrl-W +

2
如果想要同时改变垂直大小,命令是 :vertical res +10,相当简单,但为了完整起见。 - DrGregoryHouse

0

另一种选择是使用“模式”,在该模式下,普通箭头键可以调整当前窗口的大小。 将其映射到+:call ToggleResizeMode()

"
" + toggle remap arrow keys to resize windows
"
nnoremap + :call ToggleResizeMode()<CR>

let s:KeyResizeEnabled = 0

function! ToggleResizeMode()
  if s:KeyResizeEnabled
    call NormalArrowKeys()
    let s:KeyResizeEnabled = 0
  else
    call ResizeArrowKeys()
    let s:KeyResizeEnabled = 1
  endif
endfunction

function! NormalArrowKeys()
  " unmap arrow keys
  echo 'normal arrow keys'
  nunmap <Up>
  nunmap <Down>
  nunmap <Left>
  nunmap <Right>
endfunction

function! ResizeArrowKeys()
  " Remap arrow keys to resize window
  echo 'Resize window with arrow keys'
  nnoremap <Up>    :resize +2<CR>
  nnoremap <Down>  :resize -2<CR>
  nnoremap <Left>  :vertical resize -2<CR>
  nnoremap <Right> :vertical resize +2<CR>
endfunction

或者更好的是:有人已经实现了窗口子模式,可能在某个插件中可以找到。 https://ddrscott.github.io/blog/2016/making-a-window-submode/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接