vim:“扩展”窗口进入下一个窗口

时间:2015-09-19 14:13:16

标签: vim window

假设我在vim中有这个布局:

+-----+-----+-----+
|     |     |     |
|  a  |     |     |
|     |     |     |
+-----+  c  |  d  |
|     |     |     |
|  b  |     |     |
|     |     |     |
+-----+-----+-----+

是否有可能以这种布局结束:

+-----+-----+-----+
|     |     |     |
|  a  |  c  |     |
|     |     |     |
+-----+-----+  d  |
|           |     |
|     b     |     |
|           |     |
+-----+-----+-----+

喜欢“向右扩展”命令吗?

PS。不要告诉我在 b 上使用ctrl-w J,然后在 d 上使用ctrl-w L,我的布局实际上比这更复杂。我真的在寻找“扩展权限”命令(如果它存在)。

2 个答案:

答案 0 :(得分:1)

这很难实现作为一项功能,因为可能会考虑很多边缘情况,也就是为什么vim本身没有这样做。

如果您不想在 b 上使用ctrl-w J,那么在 d 上使用ctrl-w L,那么最简单的方法就是关闭 c 拆分,然后在 a 上打开一个新的垂直拆分,并在其中打开所需的缓冲区/文件。

答案 1 :(得分:0)

这很脆弱,但可能比什么都好!

function! ExtendRight()
    let l:start=winnr()
    exe "normal \<c-w>l"
    let l:shrink=bufnr('%')
    close
    exe "normal " . l:start . "\<c-w>w"
    exe "normal \<c-w>k"
    vsplit
    exe "b " . l:shrink
endfunction

您可以使用nnoremap <c-w>e :call ExtendRight()<CR>映射它。