Vim中的窗口管理
Vim中的窗口管理大部分是
ctrl + w + 其他的快捷键的组合的方式,当然也有类似:sp这样的命令的方式
新建窗口
ctrl + w + v:在当前窗口的右侧新建分屏窗口(垂直分割,对应左右切分)ctrl + w + s:在当前窗口的下方新建分屏窗口(水平分割,对应上下切分)
窗口切换
ctrl + w + h/j/k/l:以当前光标所在的窗口为基准,切换到对应上下左右方向的窗口ctrl + w + w:打开多个窗口的时候,再不同的窗口之间进行循环切换
关闭窗口
ctrl + w + c:关闭当前窗口ctrl + w + o:保留当前光标所在窗口,关闭其他窗口
扩展阅读(了解)
:new:创建空白分屏:vsplit/:vsp [filename]:垂直分屏,与ctrl + w + v效果一样:split/:sp [filename]:水平分屏,和ctrl + w + s效果一样- 两个命令后面都可以选择跟上文件路径,比如我要垂直分屏的情况下打开
test文件夹下的test.txt文件,对应的命令就是:vsp text/text.txt,并且这里路径和文件名都需要写完整。
- 两个命令后面都可以选择跟上文件路径,比如我要垂直分屏的情况下打开
:only:这个命令对应的是 保留当前光标所在窗口,关闭其他窗口 这个功能,对应的快捷键为ctrl + w + o- 调整分屏尺寸:
ctrl + w+<:左ctrl + w+>:右ctrl + w++:上ctrl + w+-:下ctrl + w+=:全部恢复均等大小
Vscode中的窗口管理
补充:这块的内容可能根据你使用系统会有一定的差异,比如因为Vscode的更新,同样的功能对应的快捷键会有变化,所以推荐自己到Vscode的按键设定界面,手动确认下对应功能的快捷键组合。
看完Vim中的窗口管理,如果觉得Vim的窗口管理快捷键比较繁琐,也可以考虑使用自己配置+vscode内置快捷键的组合进行改建的方案,下面就先来介绍下Vscode中的窗口管理方式吧!
新建窗口
ctrl + \:在当前窗口的右侧新建分屏窗口(垂直分割)ctrl + k , ctrl + \(当前版本Vscode的默认配置,个人推荐改键):在当前窗口的下方新建分屏窗口(水平分割)
考虑到不同系统,可能不一样推荐在Vscode里的按键设置里面查看对应的功能,下面是我在Vscode中确认到的配置选项:
个人推荐将 在当前窗口的下方新建分屏窗口(水平分割) 这个功能的快捷键功能改成ctrl + shift + \
关闭分组
比如当前处于normal模式下,现在打开了两个分组:
如果现在使用ctrl + w + c这个快捷键组合(当前光标在第一分组的ch07这个文件中),你可以发现对应的会触发关闭第一分组ch07这个文件窗口,并不能关闭整个第一分组,如果要关闭整个第一分组,推荐的方式是使用Vscode中自带的快捷键ctrl + k , w来关闭当前光标所在的分组:
推荐的方案
下面是我个人的配置方案:
- 新建窗口:
ctrl + \ctrl + shift + \
- 关闭窗口:
-
如果是mac平台,使用
command + w -
如果是windows平台,可能会遇到 vscode 的
ctrl + w和 vim 的ctrl + w冲突的问题,对应的解决方案- 方案1: 在配置文件
setting.json中加入关闭窗口的处理即可
"vim.normalModeKeyBindingsNonRecursive": [ { "before": ["<C-i>"], // 这里的 <C-i> 你可以随意的替换 "commands" : ["workbench.action.closeActiveEditor"], } ]- 方案2:在配置文件中,通过
easymotion插件来处理关闭窗口
"vim.normalModeKeyBindingsNonRecursive": [ // 关闭当前窗口 { "before": ["<leader>", "w"], // 这里的 w 你可以随意的替换 "commands": ["workbench.action.closeActiveEditor"] }, ]- 方案3:这个方案的思路是主动呼出把
ctrl + w的功能还给Vscode处理,使用方式为按下Alt后再按ctrl + w,通过按下Alt激活菜单栏上的快捷键,这个时候的快捷键都会变成Vscode处理,而不是vim插件处理,所以这个时候能正常触发Vscode中关闭当前窗口的这个行为。
- 方案1: 在配置文件
-
关闭分组:
ctrl + k , w -
关闭其他窗口,保留当前光标所在窗口:
ctrl + w + o
-
窗口切换:
- 多窗口多快速切换,修改
keybindings.json:
// shift + ctrl + hjkl 进行窗口快速切换 { "key": "shift+ctrl+h", "command": "vim.remap", "when": "vim.mode == 'Normal'", "args": { "after": ["<c-w>", "h"] } }, { "key": "shift+ctrl+l", "command": "vim.remap", "when": "vim.mode == 'Normal'", "args": { "after": ["<c-w>", "l"] } }, { "key": "shift+ctrl+k", "command": "vim.remap", "when": "vim.mode == 'Normal'", "args": { "after": ["<c-w>", "k"] } }, { "key": "shift+ctrl+j", "command": "vim.remap", "when": "vim.mode == 'Normal'", "args": { "after": ["<c-w>", "j"] } },- 单个分组中的tab快速切换,修改
keybindings.json:
// 切换到上一个选项卡 { "key": "ctrl+alt+,", "command": "workbench.action.previousEditor" }, // 切换到下一个选项卡 { "key": "ctrl+alt+.", "command": "workbench.action.nextEditor" }, - 多窗口多快速切换,修改
-