"最小化"垂直VIM窗口分割

chu*_*ckg 8 vim

我在VIM中虔诚地使用水平和垂直窗口分割,直到最近,我很享受两个命令的安慰,以有效地隐藏(或最小化)我的水平分割.我设置它们将以下行添加到我的.vimrc文件中:

set winminheight=0
map <C-J> <C-W>j<C-W>_
map <C-K> <C-W>k<C-W>_
Run Code Online (Sandbox Code Playgroud)

通过向上或向下击中Control-jControl-k导航水平分割.我想通过使用Control-Shift-h和显示或隐藏左或右分割来实现垂直分割是一回事Control-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>_
Run Code Online (Sandbox Code Playgroud)

该操作类似于利用Control-w-<Control-w->仅将垂直分割完全移动到左侧或写入,而不是一次只移动一行.

有关如何实现这一目标的任何想法?谢谢.

小智 11

首先,您将无法在代码中使用<SC-(shift + control)(见下文).但是你可以使用'mapleader'作为你的"转移",然后像你想的那样使用<Ch>和<Cl>.像这样:

set winminwidth=0
nmap <Leader><C-h> <C-W>h500<C-W>>             
nmap <Leader><C-l> <C-W>l500<C-W>>               
Run Code Online (Sandbox Code Playgroud)

vim中的常用leader键是逗号和反斜杠:

:let mapleader = ","
Run Code Online (Sandbox Code Playgroud)

但是你会发现这对于要求3次击键来说很烦人,所以你不妨放下控制键击.这样(如果你的领导是逗号)你可以按",h"和",l"去左右分裂:

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

" (FTW) :D
Run Code Online (Sandbox Code Playgroud)

...

一个名叫Tony Chapman的人回答了为什么你不能使用control + shift:

Vim Ctrl+printable_key 根据ASCII 映射其组合.这意味着" Ctrl+lowercase letter"与相应的" Ctrl+uppercase letter" 相同,并且 Ctrl+<key>(其中<key>是可打印的键)仅<key>在范围0x40-0x5F,小写字母或问号时定义.它也意味着Ctrl-[相同 Esc, Ctrl-M相同Enter,Ctrl-I相同 Tab.

所以是的,Ctrl-sCtrl-S(即)Ctrl-sCtrl-Shift-sVim是一样的.这是设计上的,不会改变.