【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.mzph.cn/pingmian/68003.shtml

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

相关文章

【算法】经典博弈论问题——巴什博弈 python

目录 前言巴什博弈(Bash Game)小试牛刀PN分析实战检验总结 前言 博弈类问题大致分为&#xff1a; 公平组合游戏、非公平组合游戏&#xff08;绝大多数的棋类游戏&#xff09;和 反常游戏 巴什博弈(Bash Game) 一共有n颗石子&#xff0c;两个人轮流拿&#xff0c;每次可以拿1~m颗…

电脑如何访问手机文件?

手机和电脑已经深深融入了我们的日常生活&#xff0c;无时无刻不在为我们提供服务。除了电脑远程操控电脑外&#xff0c;我们还可以在电脑上轻松地访问Android或iPhone手机上的文件。那么&#xff0c;如何使用电脑远程访问手机上的文件呢&#xff1f; 如何使用电脑访问手机文件…

【设计模式-行为型】状态模式

一、什么是状态模式 什么是状态模式呢&#xff0c;这里我举一个例子来说明&#xff0c;在自动挡汽车中&#xff0c;挡位的切换是根据驾驶条件&#xff08;如车速、油门踏板位置、刹车状态等&#xff09;自动完成的。这种自动切换挡位的过程可以很好地用状态模式来描述。状态模式…

CTF随题思路—简单的base编码

打开是一大段base64编码&#xff0c;多次解码后再用base92解码

顺序表和链表(详解)

线性表 线性表&#xff08; linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。…

C# 解析 HTML 实战指南

在网页开发和数据处理的场景中&#xff0c;经常需要从 HTML 文档里提取有用的信息。C# 作为一门强大的编程语言&#xff0c;提供了丰富的工具和库来实现 HTML 的解析。这篇博客就带你深入了解如何使用 C# 高效地解析 HTML。 一、为什么要在 C# 中解析 HTML 在实际项目中&…

Spring 是如何解决循环依赖问题

Spring 框架通过 三级缓存 机制来解决循环依赖问题。循环依赖是指两个或多个 Bean 相互依赖&#xff0c;形成一个闭环&#xff0c;例如 Bean A 依赖 Bean B&#xff0c;而 Bean B 又依赖 Bean A。Spring 通过提前暴露未完全初始化的 Bean 来解决这个问题。 以下是 Spring 解决…

vxe-table和element表尾合计行

1、vxe-table vxe-table的表尾合计&#xff0c;需要show-footer和footer-method搭配使用。 <vxe-table:data"tableData"ref"vxeRef"border resizable :footer-method"footerMethod":show-footer"true" >…

监控与调试:性能优化的利器 — ShardingSphere

在分布式数据库系统中&#xff0c;监控和调试是确保系统高效运行的关键。ShardingSphere 提供了多种监控和调试工具&#xff0c;帮助开发者实时跟踪和优化性能&#xff0c;识别瓶颈&#xff0c;进行故障排查&#xff0c;从而提升系统的稳定性和响应速度。本文将介绍如何使用 Sh…

上位机知识篇---ROS2命令行命令静态链接库动态链接库

文章目录 前言第一部分&#xff1a;ROS2命令行命令1. 基础命令&#xff08;1&#xff09;ros2 run&#xff08;2&#xff09;ros2 launch&#xff08;3&#xff09;ros2 node&#xff08;4&#xff09;ros2 topic&#xff08;5&#xff09;ros2 service&#xff08;6&#xff0…

Browser-Use WebUI项目启动指南

摘要 此前发布《Browser - Use WebUI 使用体验》博文后&#xff0c;鉴于部分朋友运行时出现问题&#xff0c;重新运行并整理相关内容。本文详细记录 Web UI 项目启动全过程&#xff0c;涵盖 Python 3.11、Chrome 浏览器及 API Keys 等环境要求&#xff0c;Python 环境检查、依赖…

leetcode 面试经典 150 题:有效的括号

链接有效的括号题序号20题型字符串解法栈难度简单熟练度✅✅✅ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须…

Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert

概述 关于Prometheus和Grafana的安装&#xff0c;略过。 写在前面 Dashboard&#xff1a;仪表板&#xff0c;可包含多个PanelPanel&#xff1a;面板&#xff0c;Dashboard中的组件 如有写得不对的地方&#xff0c;烦请指出。 新增仪表板 点击右上角的 选择New dashboard…

使用 Ansys Discovery 对离心风机进行仿真

了解设置模拟并获得有用结果的步骤。 离心风机&#xff1a;基础知识和重要性 离心风机&#xff0c;也称为径流式风机&#xff0c;是旨在通过将动能转化为势能来增加空气或气体的压力和流量的机械装置。它们的工作原理是利用旋转叶轮产生的离心力轴向吸入空气&#xff0c;然后…

客户案例:向导ERP与金蝶云星空集成方案

一、客户背景 该客户公司主要致力于黄金、铂金、金镶玉首饰的研发设计、生产加工、批发及直营加盟业务。公司总部占地面积目前已达6000多平方米&#xff0c;拥有标准生产厂房和现代化生产设施&#xff0c;拥有一支完善的企业管理团队和专业技工队伍。 该企业目前同时采用向导 E…

mac 通过 Homebrew 安装 git 遇到的问题

问题真多啊 &#xff01;&#xff01;&#xff01; 解决方式 见 1. / 2. / 3 . / 4. / 5. remote: Enumerating objects: 290323, done. remote: Counting objects: 100% (473/473), done. remote: Compressing objects: 100% (253/253), done. error: RPC failed; curl 92 H…

springboot 引入 单元测试 @Test

springboot版本 2.6 引入依赖 <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.1</version><scope>test</scope></dependency>写测试类 package com.mv.m…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集&#xff0c;鸢尾花数据集包含了150条鸢尾花信息&#xff0c;每50条取自三个鸢尾花中之一&#xff1a;Versicolour、Setosa…

【豆包MarsCode蛇年编程大作战】花样贪吃蛇

目录 引言 展示效果 prompt提示信息 第一次提示&#xff08;实现基本功能&#xff09; 初次实现效果 第二次提示&#xff08;美化UI&#xff09; 第一次美化后的效果 第二次美化后的效果 代码展示 实现在线体验链接 码上掘金使用教程 体验地址&#xff1a; 花样贪吃蛇…

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 ?3.1.6、综合小案例 3.2、对页面元素进行操作 3…