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

news2025/1/24 12:20:06

文章目录

  • 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.coloradmin.cn/o/2281420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《keras 3 内卷神经网络》

keras 3 内卷神经网络 作者&#xff1a;Aritra Roy Gosthipaty 创建日期&#xff1a;2021/07/25 最后修改时间&#xff1a;2021/07/25 描述&#xff1a;深入研究特定于位置和通道无关的“内卷”内核。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub …

Linux 进程环境变量:深入理解与实践指南

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 在 Linux 系统里…

【博客之星】2024年度总结

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

Linux下php8安装phpredis扩展的方法

Linux下php8安装phpredis扩展的方法 下载redis扩展执行安装编辑php.ini文件重启php-fpmphpinfo 查看 下载redis扩展 前提是已经安装好redis服务了 php-redis下载地址 https://github.com/phpredis/phpredis 执行命令 git clone https://github.com/phpredis/phpredis.git执行…

训练大模型所需要的内存计算

计算训练一个7B参数大模型所需的显存&#xff0c;主要涉及以下几个方面&#xff1a; 1. 模型参数 每个参数通常需要4字节&#xff08;32位浮点数&#xff09;&#xff0c;因此7B参数的显存需求为&#xff1a; 2. 优化器状态 常见的优化器如Adam&#xff0c;每个参数需要存…

笋瓜果实的代谢组学和转录组分析-文献精读103

Metabolomics and Transcription Profiling of Pumpkin Fruit Reveals Enhanced Bioactive Flavonoids and Coumarins in Giant Pumpkin (Cucurbita maxima) 笋瓜果实的代谢组学和转录组分析揭示了笋瓜&#xff08;Cucurbita maxima&#xff09;中生物活性黄酮和香豆素的增强 …

Jenkins下载 Maven、Allure 插件并且配置环境

文章目录 Jenkins在插件中心下载 maven、allure插件maven插件下载allure插件下载 配置maven、allure 往期推荐&#xff1a; 最新! 在 Linux上搭建Jenkins环境! Jenkins邮件通知的详细配置含邮件通知模板&#xff01; Jenkin配置企业微信通知 Jenkins在插件中心下载 maven、…

【深度学习】微积分

微积分 在2500年前&#xff0c;古希腊人把一个多边形分成三角形&#xff0c;并把它们的面积相加&#xff0c;才找到计算多边形面积的方法。 为了求出曲线形状&#xff08;比如圆&#xff09;的面积&#xff0c;古希腊人在这样的形状上刻内接多边形。 如图2.4.1所示&#xff0c…

宝塔Linux+docker部署nginx出现403 Forbidden

本文主要讲述了宝塔docker部署nginx出现403 Forbidden的原因&#xff0c;以及成功部署前端的方法步骤。 目录 1、问题描述2、问题检测2.1 检测监听端口是否异常2.2 检测Docker容器是否异常2.2.1 打开宝塔Linux的软件商店&#xff0c;找到Docker管理器&#xff0c;查看前端容器是…

Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作1 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 Tensor 基本操作torch.max默认指定维度 Tensor 基本操作 torch.max torch.max 实现降维运算&#xff0c;基于指定的 d…

[Linux] 进程管理与调度机制

文章目录 一.进程前言1.冯诺依曼体系结构2.操作系统 二.进程相关概念1.PCB2.查看进程标识符3.父与子进程 三.进程状态1.状态类别1).运行2).阻塞3).挂起 2.Linux下的状态1).R(running)2).S(Sleeping)3).D(disk sleeping)4).T(stopped)5).t(tracing stopped)6).Z(僵尸进程)7).孤儿…

复位信号的同步与释放(同步复位、异步复位、异步复位同步释放)

文章目录 背景前言一、复位信号的同步与释放1.1 同步复位1.1.1 综述1.1.2 优缺点 1.2 recovery time和removal time1.3 异步复位1.3.1 综述1.3.2 优缺点 1.4 同步复位 与 异步复位1.5 异步复位、同步释放1.5.1 总述1.5.2 机理1.5.3 复位网络 二、思考与补充2.1 复…

Unity中关于实现 管道水流+瀑布流动+大肠蠕动效果笔记

Unity中关于实现 管道水流瀑布流动大肠蠕动效果笔记 效果展示&#xff1a; 参考资料及链接&#xff1a; 1、如何在 Unity 中创建水效果 - 水弯曲教程 https://www.youtube.com/watch?v3CcWus6d_B8 关于补充个人技能中&#xff1a;顶点噪波影响网格着色器配合粒子实现水特效 …

Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台,也就是一个“云上之云”。

Cloudpods是一个开源的Golang实现的云原生的融合多云/混合云的云平台&#xff0c;也就是一个“云上之云”。Cloudpods不仅可以管理本地的虚拟机和物理机资源&#xff0c;还可以管理多个云平台和云账号。Cloudpods隐藏了这些异构基础设施资源的数据模型和API的差异&#xff0c;对…

【LeetCode】--- MySQL刷题集合

1.组合两个表&#xff08;外连接&#xff09; select p.firstName,p.lastName,a.city,a.state from Person p left join Address a on p.personId a.personId; 以左边表为基准&#xff0c;去连接右边的表。取两表的交集和左表的全集 2.第二高的薪水 &#xff08;子查询、if…

JavaScript学习笔记(3)

一.BOM对象 BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就 是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能&#xff0c;可以通过操作 BOM对象的相关属性或者函数来完成。例如&#xff1a;我们想要将浏览器的地址改为 http:/…

DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)

五、数据处理与 ETL 流程编程实现 5.1 数据抽取与转换(ETL) 在 DRG/DIP 2.0 时代的医院成本管理中,数据抽取与转换(ETL)是将医院各个业务系统中的原始数据转化为可供成本管理分析使用的关键环节。这一过程涉及从医院 HIS 系统中抽取患者诊疗数据,并对其进行格式转换、字…

【玩转全栈】----YOLO8训练自己的模型并应用

继上篇&#xff1a; 【玩转全栈】---基于YOLO8的图片、视频目标检测-CSDN博客 相信大家已经可以训练一些图片和视频了&#xff0c;接下来我将为大家介绍如何训练自己的特定模型&#xff0c;并用其进行检测 目录 准备数据 图片数据 标识数据 配置文件 运行 测试训练结果 存在的问…

简洁实用的wordpress外贸模板

简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。 简洁实用的wordpress外贸模板 - 简站WordPress主题简洁、实用、大气的wordpress外贸模板&#xff0c;适合跨境电商搭建外贸B2B产品展示型网站。https://www.jianzhanpress.com/?p828…

Caesar

Caesar 打开.txt: oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} 根据题目判断是凯撒密码&#xff0c;flag前头是cyberpeace{}&#xff0c;可以得到偏移量是12. 所以&#xff1a; cyberpeace{you_have_learned_caesar_encryption} 下面是我找的关于凯撒密码的解密脚本 c…