"Minimizing" 垂直 VIM 窗口分割

8

我在VIM中经常使用水平和垂直窗口分割,一直以来,我都很喜欢使用两个命令来有效地隐藏(或最小化)我的水平分割。我通过将以下行添加到我的.vimrc文件来设置它们:

set winminheight=0
map <C-J> <C-W>j<C-W>_
map <C-K> <C-W>k<C-W>_

按下Control-jControl-k可以上下导航水平窗格。 我想通过使用Control-Shift-hControl-Shift-l显示或隐藏左侧或右侧窗格来实现垂直分割的相同效果; h 向左移动,l向右移动。我尝试了以下方法,但几乎没有成功:

set winminwidth=0
map <S-C-L> 500<C-W>h<C-W>_
map <S-C-H> 500<C-W>l<C-W>_

这个操作类似于使用Control-w-<Control-w->,只不过是将竖直分屏完全向左或向右移动,而不仅仅是一行。您有实现此操作的任何想法吗?谢谢。
3个回答

12

首先,你无法在代码中使用<S-C- (shift + control)。但是你可以使用‘mapleader’作为你的“shift”,然后像你想要的那样使用<C-h> 和 <C-l>。像这样:

set winminwidth=0
nmap <Leader><C-h> <C-W>h500<C-W>>             
nmap <Leader><C-l> <C-W>l500<C-W>>               

在 Vim 中常用的前导键是逗号和反斜杠:

:let mapleader = ","

但你会发现这样要求输入三个按键太麻烦了,所以你最好省略掉control键。这样(如果你的Leader键是逗号),你只需按“,h”和“,l”就可以到达左右两个拆分屏:

set winminwidth=0
nmap <Leader>h <C-W>h500<C-W>>             
nmap <Leader>l <C-W>l500<C-W>>       

" (FTW) :D

一位名叫Tony Chapman的人解释了为什么不能使用control + shift:

Vim根据ASCII映射其Ctrl+可打印字符键组合。这意味着“Ctrl+小写字母”与相应的“Ctrl+大写字母”相同,而Ctrl+<key>(其中<key>是可打印的键)仅在<key>的范围内定义为0x40-0x5F、小写字母或问号时才有效。这也意味着Ctrl-[Esc相同, Ctrl-MEnter相同,Ctrl-ITab相同。

因此,是的,Ctrl-sCtrl-S(即Ctrl-sCtrl-Shift-s)对于Vim来说是相同的。这是设计上的,不会改变。


2

尝试

set winminwidth=0
map <S-C-L> <C-W>h<C-W>|
map <S-C-H> <C-W>l<C-W>|

这个命令并不能完全将窗口移动到左边或右边(那是 <C-W>H<C-W>L),它只是将光标移动到左侧(或右侧)的窗口,并使该窗口水平最大化。

更多信息请参见:help CTRL-W_bar


你提到的帮助在我的 Vim 8.2 版本上无法使用。 - Burak Kaymakci

1
将当前窗口最小化的 Vim 快捷键是 Crl-w 1 |。保留 HTML,不做解释。

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