【Vim Masterclass 笔记25】S10L45:Vim 多窗口的常用操作方法及相关注意事项

文章目录

  • S10L45 Working with Multiple Windows
    • 1 水平分割窗口
    • 2 在水平分割的新窗口中显示其它文件内容
    • 3 垂直分割窗口
    • 4 窗口的关闭
    • 5 在同一窗口水平拆分出多个窗口
    • 6 关闭其余窗口
    • 7 让四个文件呈田字形排列
    • 8 光标在多窗口中的定位
    • 9 调节子窗口的尺寸大小
    • 10 变换子窗口的位置
    • 11 将光标所在的子窗口分别靠进某一边
    • 12 将所有缓冲区加载到当前窗口
    • 13 对所有子窗口批量执行命令
    • 14 关于窗口组合键的按键细节

写在前面
本篇为第十章的最后一节内容。继介绍完 Vim 缓冲区的相关知识后,本节进一步深入探讨了多窗口环境下的各类常见操作。想当年我就是直接先学了这一节内容,成功利用远程服务器的 Vim 界面完成了八个服务器节点的手动配置,要是没有多窗口这个功能,只靠缓冲区频繁切换,遇到需要同时监控某些性能指标时就傻眼了(当然这类问题有更专业的工具,这里只是举例)。今天将这些知识点完整梳理出来,以后就方便多了。


S10L45 Working with Multiple Windows

本节演示文件:vimclass/buf-{ant,bed,cat,dad}.txtvimclass/nav.txt

1 水平分割窗口

默认情况下,Vim 一个窗口只会加载一个编辑界面。即便在学习 Vim 缓冲区的概念时,也只涉及单一窗口下的各类操作;多窗口环境只在第四章介绍帮助系统时提到过,并可通过 Ctrl + WW 让光标在两个窗口间切换、用 :q + Enter 命令关闭某个窗口,仅此而已。

其实,Vim 还支持通过 :sp:split 命令实现窗口的 水平分割

例如,用 vim buf* 批量打开多个以 buf 开头的演示文件后,输入 :sp + Enter 将得到两个上下分布的相同窗口:

图 45-1:用 sp 命令实现窗口的水平分割

【图 45-1:用 sp 命令实现窗口的水平分割】

由于显示的是同一个缓冲区,在其中任一窗口修改内容都会同步影响到另一个窗口。

:sp 命令还可以等效替换为 CtrlW + S(即按住 Ctrl 的同时敲 W 键、然后放开 Ctrl 后再敲 S 键)

2 在水平分割的新窗口中显示其它文件内容

执行命令 :sp <file_name> + Enter 即可。

例如,让新开窗口加载 buf-bed.txt 中的内容,需输入::sp buf-bed.txt + Enter

图 45-2:在水平分割窗口时在新窗口显示指定的文件内容(buf-bed.txt)

【图 45-2:在水平分割窗口时在新窗口显示指定的文件内容(buf-bed.txt)】

3 垂直分割窗口

使用 :vs + Enter:vsplit + Enter

同理,也可以使用组合键 CtrlW + V 作等效替换:

图 45-3:使用 vs 命令实现窗口的垂直分割

【图 45-3:使用 vs 命令实现窗口的垂直分割】

同理,执行命令 :vs <file_name> + Enter 可指定新窗口加载的文件内容。

4 窗口的关闭

使用命令 :q + Enter 或者组合键 CtrlW + Q

5 在同一窗口水平拆分出多个窗口

多次执行 :sp <file_name> 命令即可:

图 45-4:利用 “sp + 文件名” 的方式依次水平打开不同的文件内容

【图 45-4:利用 “sp + 文件名” 的方式依次水平打开不同的文件内容】

6 关闭其余窗口

两种方式:

  1. 输入 :on + Enter:only + Enter
  2. 使用组合键 CtrlW + O

7 让四个文件呈田字形排列

即纵横分割窗口,先后使用水平、垂直分割(无关顺序):

  1. 先加载 buf-dad.txt 文件,然后执行水平分割::sp buf-bed.txt + Enter
  2. 再输入 :vs buf-ant.txt + Enter 垂直分割上半部分窗口;
  3. 按两次【CtrlW + W】将光标切到下方窗口(即 buf-dad.txt);
  4. 输入 :vs buf-cat.txt 完成下半部分的垂直分割。

最终实测效果:

图 45-5:用水平垂直分割实现四个文件呈田字形分布实测效果截图

【图 45-5:用水平垂直分割实现四个文件呈田字形分布实测效果截图】

8 光标在多窗口中的定位

除了用 CtrlW + W 逐一切换光标位置,还可以使用导航键实现上下左右移动:

  • CtrlW + H:光标左移;
  • CtrlW + J:光标下移;
  • CtrlW + K:光标上移;
  • CtrlW + L:光标右移;

注意到涉及窗口操作的组合键都有相同的前缀 CtrlW。为方便后续操作,也可以使用 map 命令重新指定快捷键并写入 vimrc 配置文件:

  • map <C-h> <C-w>h
  • map <C-j> <C-w>j
  • map <C-k> <C-w>k
  • map <C-l> <C-w>l

或者利用 Leader 键重写快捷键:

  • map <leader>h <C-w>h
  • map <leader>j <C-w>j
  • map <leader>k <C-w>k
  • map <leader>l <C-w>l

如果是在图形界面下操作,还可以直接用鼠标单击快速定位。

9 调节子窗口的尺寸大小

两种方式:

  • 图形界面:鼠标拖拽窗口边缘即可调整;
  • 键盘操作:
    • 增加高度:CtrlW + +
    • 减少高度:CtrlW + -
    • 增加宽度:CtrlW + >
    • 减少宽度:CtrlW + <
    • 高度最大化:CtrlW + _
    • 宽度最大化:CtrlW + |
    • 设置等宽等高:CtrlW + =

10 变换子窗口的位置

使用 CtrlW + R 可将当前水平排列的窗口依次 往右 挪动一格,最右边的窗口则挪到 最左边 位置;若子窗口均为垂直堆叠分布,则依次 往下 挪动一格,同时最下方窗口挪到 最上方 位置。

使用 CtrlW + ShiftR 则刚好反向操作:水平排列的子窗口 向左 移动、垂直堆叠的则 向上 移动。

注意:组合键中的 R 代表 Right,向右;ShiftR 则表示反向。

11 将光标所在的子窗口分别靠进某一边

通过组合键 CtrlW + 大写的导航键,还可以分别令光标所在的子窗口分别靠近大窗口的上、下、左、右侧。

例如,在刚才的田字形排列的多窗口界面,再使用 :vs nav.txt 垂直分割出第五个子窗口:

图 45-6:在田字形多窗口界面引入第五个子窗口(左上角)

【图 45-6:在田字形多窗口界面引入第五个子窗口(左上角)】

CtrlW + ShiftH 实现靠左显示:

图 45-7:让子窗口(nav.txt)靠左显示后的效果图

【图 45-7:让子窗口(nav.txt)靠左显示后的效果图】

CtrlW + ShiftL 实现靠右显示:

图 45-8:让子窗口(nav.txt)靠右显示后的效果图

【图 45-8:让子窗口(nav.txt)靠右显示后的效果图】

CtrlW + ShiftK 实现靠上显示:

图 45-9:让子窗口(nav.txt)靠上显示后的效果图

【图 45-9:让子窗口(nav.txt)靠上显示后的效果图】

CtrlW + ShiftJ 实现靠下显示:

图 45-10:让子窗口(nav.txt)靠下显示后的效果图

【图 45-10:让子窗口(nav.txt)靠下显示后的效果图】

12 将所有缓冲区加载到当前窗口

使用命令 :ball + Enter:ba + Enter

此时 Vim 默认通过水平分割的方式加载每个子窗口:

图 45-11:使用 ba 命令一次性加载所有缓冲区的实测效果图

【图 45-11:使用 ba 命令一次性加载所有缓冲区的实测效果图】

13 对所有子窗口批量执行命令

与缓冲区的 :bufdo 命令类似,多窗口也支持批量执行命令 :windo

例如,在垂直排列的子窗口 buf-ant.txtbuf-bed.txt 中,批量执行替换命令,将文件中的 # 全部替换为 @,则相应的批量替换命令为::windo %s/#/@/g + Enter

图 45-12:对所有子窗口批量执行替换命令后的效果图

【图 45-12:对所有子窗口批量执行替换命令后的效果图】

注意

值得注意的是,:windo 命令只对打开的子窗口生效,未打开的子窗口则不受影响 ;而 :bufdo 命令则会对所有缓冲区生效,无论它是不是隐藏缓冲区都会执行命令。本例可以通过 :ls + Enter 命令加以佐证:

图 45-13:用 ls 命令查看缓冲区列表,可以看到本例中的批量替换命令 windo 只对打开的子窗口生效

【图 45-13:用 ls 命令查看缓冲区列表,可以看到本例中的批量替换命令 windo 只对打开的子窗口生效】

14 关于窗口组合键的按键细节

本课涉及大量组合键,对于 CtrlW + <KEY> 的操作,既可以放开 Ctrl 键后再按后面的 <KEY> 键,也可以一直按住 Ctrl 键不放、并依次按 W 键和 <KEY> 键。

查看帮助文档 :h ctrl-w + Enter 可以获得更多操作说明:

图 45-14:查看 ctrl-w 帮助文档了解组合键的更多细节说明

【图 45-14:查看 ctrl-w 帮助文档了解组合键的更多细节说明】

需要注意的是,按住 Ctrl + S 在某些命令行中可能会引发冲突(例如暂停屏幕刷新),此时使用 Ctrl + WS 来水平拆分窗口就会失效;同理,Ctrl + WQ 也可能因为 CtrlQ 被占用而导致窗口拆分失败。不过具体问题具体分析,遇到组合键冲突,最好通过帮助文档寻求解决方案。

想了解更多关于 Vim 窗口的用法细节,可以查看 Vim 内置的帮助文档::h windows + Enter

后记
从本节课开始,讲师不再提供专门的同步练习环节。因为这些内容大部分在讲解过程中就能同步操练。想要真正用好 Vim,还得自己多花心思学以致用,方为上策。切莫过分依赖课程本身,丧失了自学的主观能动性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5202.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux TCP 之 RTT 采集与 RTO 计算

我们来看看 Linux TCP 采集 RTT 的函数 tcp_rtt_estimator&#xff0c;看注释&#xff0c;充满了胶着。 但在那个谨慎的年代&#xff0c;这些意味着什么&#xff1f; RTT 最初仅用于 RTO 的计算而不是用于调速&#xff0c;RTO 的计算存在两个问题&#xff0c;如果过估&#x…

如何使用CRM数据分析优化销售和客户关系?

嘿&#xff0c;大家好&#xff01;你有没有想过为什么有些公司在市场上如鱼得水&#xff0c;而另一些却在苦苦挣扎&#xff1f;答案可能就藏在他们的销售策略和客户关系管理&#xff08;CRM&#xff09;系统里。今天我们要聊的就是如何通过有效的 CRM 数据分析来提升你的销售额…

《Effective Java》学习笔记——第2部分 对象通用方法最佳实践

文章目录 第2部分 所有对象通用方法一、前言二、最佳实践内容1. equals()方法2. hashCode()方法3. toString() 方法4. clone() 方法5. finalize() 方法6. compareTo()方法&#xff08;实现 Comparable 接口&#xff09; 三、小结 第2部分 所有对象通用方法 一、前言 《Effect…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝&#xff0c;2024年已经来临&#xff0c;回顾过去一年&#xff0c;科技的迅猛进步简直让人目不暇接。 在人工智能&#xff08;AI&#xff09;越来越强大的今天&#xff0c;我们不再停留在幻想阶段&#xff0c;量子计算的雏形开始展示它的无穷潜力&#xff0c;Web …

图的基本概念

一、图 二、顶点的度 三、图的同构 ​​​​​​​​​​​ 四、完全图 五、子图 六、补图

【游戏设计原理】75 - 最小最大化

一、理解与分析 最小/最大化的核心是玩家在角色扮演类游戏中使用的一种策略&#xff0c;旨在通过把角色的某些不利特性最小化、而有利特性最大化来增强角色在特定领域的优势。这种策略通常表现为以下几种形式&#xff1a; 角色单一化&#xff1a;玩家通过极端优化角色的某一项…

【K8S系列】K8s 领域深度剖析:年度技术、工具与实战总结

引言 Kubernetes作为容器编排领域的行业标准&#xff0c;在过去一年里持续进化&#xff0c;深刻推动着云原生应用开发与部署模式的革新。本文我将深入总结在使用K8s特定技术领域的进展&#xff0c;分享在过去一年中相关技术工具及平台的使用体会&#xff0c;并展示基于K8s的技术…

PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10

1.环境搭建 硬件环境&#xff1a;CANoe、待测设备&#xff08;包含UDS诊断模块&#xff09; 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…

mybatis(19/134)

大致了解了一下工具类&#xff0c;自己手敲了一边&#xff0c;java的封装还是真的省去了很多麻烦&#xff0c;封装成一个工具类就可以不用写很多重复的步骤&#xff0c;一个工厂对应一个数据库一个environment就好了。 mybatis中调用sql中的delete占位符里面需要有字符&#xf…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

本文验证基于请求头中传递token信息的认证方式&#xff0c;webapi项目的控制器类中新建如下函数&#xff0c;仅通过验证的客户端能调用&#xff0c;需要客户端请求在Header中添加’Authorization’: Bearer token’的键值对且通过token验证后才能调用。 [Authorize] [HttpGet]…

Linux:进程(三)

1. 进程创建补充 fork之后父子两个执行流分别执行&#xff0c;fork之后谁谁先执行由调度器来决定。 一般&#xff0c;父子代码共享。当父子不再写入时&#xff0c;数据也是共享的&#xff0c;但是当有一方要写入&#xff0c;就触发写时拷贝。 fork调用失败的原因 1. 系统中有…

一、vue智能Ai对话(高仿通义千问)普通版。

如需源码&#xff1a;请私信。 普通版视频地址&#xff1a;普通版视频 流式进阶版视频地址&#xff1a;流式进阶版视频 流式进阶版&#xff1a;流式进阶版源码 html结构和js方法&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta …

Taro+Vue实现图片裁剪组件

cropper-image-taro-vue3 组件库 介绍 cropper-image-taro-vue3 是一个基于 Vue 3 和 Taro 开发的裁剪工具组件&#xff0c;支持图片裁剪、裁剪框拖动、缩放和输出裁剪后的图片。该组件适用于 Vue 3 和 Taro 环境&#xff0c;可以在网页、小程序等平台中使用。 源码 https:…

【winRAR】windows11右键直接打开winRAR

总览 目前能够完成的操作不能像 win10 那样全面&#xff0c;需要做一些取舍&#xff0c;这两种解决后的样子任选其一&#xff1a; 1.右键之后&#xff0c;直接显示 “解压到当前文件夹” 2.右键之后&#xff0c;直接出现 winRAR 的母菜单&#xff0c;在鼠标 hover 到上面的时…

云计算、AI与国产化浪潮下DBA职业之路风云变幻,如何谋破局启新途?

引言 在近日举办的一场「云和恩墨大讲堂」直播栏目中&#xff0c;云和恩墨联合创始人李轶楠、副总经理熊军和欧冶云商数据库首席薛晓刚共同探讨了DBA的现状与未来发展。三位专家从云计算、人工智能、国产化替代等多个角度进行了深入的分析和探讨&#xff0c;为从业者提供了宝贵…

STM32 FreeRTOS 任务挂起和恢复---实验

实验目标 学会vTaskSuspend( )、vTaskResume( ) 任务挂起与恢复相关API函数使用&#xff1a; start_task:用来创建其他的三个任务。 task1&#xff1a;实现LED1每500ms闪烁一次。 task2&#xff1a;实现LED2每500ms闪烁一次。 task3&#xff1a;判断按键按下逻辑&#xff0c;KE…

2025年PHP面试宝典,技术总结。

面试是进入职场的第一道坎&#xff0c;因为我本身学校太一般的问题在面试中遇到了各种不爽&#xff0c;和那些高学历的相比自己真是信心大跌。我面试的方向是php开发工程师&#xff0c;主要做网站后台、APP接口等。下面是我这段时间总结的面试方面的常考常问的知识点&#xff0…

Python运算符

1、算术运算符 加 减— 乘* 除/ 整除// 取余% 幂运算** 优先级&#xff1a; 第1级&#xff1a;** 第2级&#xff1a;* &#xff0c; / &#xff0c; % &#xff0c;// 第3级&#xff1b; &#xff0c; - print("加", 1 4) print("减",8 - 19) p…

RTMP|RTSP播放器只解码视频关键帧功能探讨

技术背景 我们在做RTMP|RTSP直播播放器的时候&#xff0c;遇到过这样的技术诉求&#xff0c;在一些特定的应用场景中&#xff0c;可能只需要关键帧的信息&#xff0c;例如视频内容分析系统&#xff0c;可能只对关键帧进行分析&#xff0c;以提取特征、检测对象或场景变化。鉴于…

2024年度总结-CSDN

2024年CSDN年度总结 Author&#xff1a;OnceDay Date&#xff1a;2025年1月21日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 文章目录 2024年CSDN年度总结1. 整体回顾2…