Linux CentOS7 vim多窗口编辑

我们在用vim编辑文件时,有各种需求。如有时需要在多个文件之间来回操作,一会关闭一个文件,一会再打开另外一个文件,这样来回操作显得太笨拙。有时,vim编辑多行的大文件,来回查看、编辑前面一部分及最后一部分,一个窗口也不好编辑。又比如,想对一个文件修改,多次复制粘贴,一个窗口也不方便。

还好,linux提供了多文件多窗口的模式,让我们在多个窗口中打开一个文件,或打开多个文件,可以对照修改与处理。

窗口是可视化的分割区域。Vim打开一个文件就会建立一个缓冲区,其也可以分割成多个窗口。

为了简化讨论的复杂度,不考虑一个窗口打开多个文件的情况。感兴趣的读者可以参考《Linux CentOS7 vim多文件编辑》。

一、创建窗口

我们用vim打开文件时,默认是打开一个文件,一个窗口。我们从简到繁,讨论如何打开多个文件和多个窗口。

1.一次打开多个窗口

在用vim打开文件时,可以添加选项,设置打开多个文件、多个窗口。其中,-on可以指定上下排列n个窗口,而-On可以指定左右排列n个窗口。o是英语单词open的首字母;n是一个整数,指定打开窗口的数量。

a.两个窗口1个文件

基本格式:

        vim  -o2  file1  上下排列

案例:

        vim  -o2  demo.txt

基本格式:

        vim  -O2  file1  左右排列

案例:

        vim  -O2  demo.txt

b. 多个窗口多个文件(文件多)

        vim -o3 file1 file2 file3 file4  上下排列

        vim -O3 file1 file2 file3 file4  左右排列

结果是有一个文件是隐藏的,未显示

c.多个窗口多个文件(窗口多)

        vim  -o4  file1  file2 file3  上下排列

        vim  -O4  file1  file2 file3   左右排列

结果是有一个窗口是空白

2.逐步打开多个窗口

我们先打开一个文件,单一窗口。在底行模式下,添加命令,增加窗口。可以按要求打开任意窗口。

a.先打开一个窗口

        vim  file1        

(此处打开一个文件与打开多个文件影响不大)

案例:

          vim demo.txt

b.再创建一个新窗口

在当前窗口中,创建新窗口,有三大类命令。功能相同,可根据爱好使用。

          (1)sp/vs

        :sp 上方新建一个窗口,仍是打开file1

        :vs  左边新建一个窗口,仍是打开file1

如果命令后添加文件名,新建窗口中打开的将是新文件。

        :sp  file2  上方新建一个窗口,打开文件file2

        :vs  file2  左边新建一个窗口,打开文件file2

sp是split分隔单词的前两个字符;而vs,有时写作vsp,是vertical split的首字母。

        (2)new/vertical new

        :new  上方新建一个窗口,仍是打开file1

        :new file2 上方新建一个窗口,仍是打开file2

         new命令,将在当前窗口的上方创建一个新窗口,有文件名时,新窗口中打开该文件。

        :vnew  左边新建一个窗口,仍是打开file1(v是vertical的简写)

        :vnew file2 左边新建一个窗口,仍是打开file2

        :new+窗口名(保存后就是文件名)

          (3) ctrl+w s/v

前两种方法是在底行模式下,录入命令创建新窗口,本方法是利用快捷键,新建窗口(因方法简单,仅能创建原文件的新窗口)。

        ctrl+w s 水平分割

        ctrl+w v 垂直分割

这里的w是window的意思。快捷键ctrl+w后面会多次用到,再加不同的选项,产生不同的功能与效果。

每个窗口可以继续被无限分割(看屏幕是否足够大)。

c.继续创建新窗口

在前述方法的基础上,可以创建需要的窗口。可以使用:sp/vs,也可以用:new/vnew。通过此方法可以创建三个窗口:可以是上方一个窗口、下方两个窗口,或者是上二下一、一左二右、二左一右。

由此类方法创建的窗口,与一次创建多个窗口不同,各有利弊。

二、窗口位置大小的调整

可以用鼠标先调整xshell会话的窗口大小,再调整vim中各窗口大小。

1.窗口大小变化

        a.均分

        ctrl+w = 使所有窗口等宽、等高

        b.调高

        ctrl+w _ 最大化活动窗口的高度

        [n]ctrl+w _ 把活动窗口的高度设置为n行,如40ctrl+w _

        ctrl+w + 把活动窗口的高度增高1字符

        ctrl+w n+ 把活动窗口的高度增高n字符

        nctrl+w + 把活动窗口的高度增高n字符

        ctrl+w - 把活动窗口的高度减少1字符

        ctrl+w n- 把活动窗口的高度减少n字符

        nctrl+w - 把活动窗口的高度减少n字符

        c.调宽

        ctrl+w | 最大化活动窗口的宽度

        [N]ctrl+w | 把活动窗口的宽度设置为N列

        ctrl+w > 把活动窗口的宽度增宽1字符

        ctrl+w n> 把活动窗口的宽度增宽n字符

        nctrl+w > 把活动窗口的宽度增宽n字符

        ctrl+w < 把活动窗口的宽度减少1字符

        ctrl+w n< 把活动窗口的宽度减少n字符

        nctrl+w < 把活动窗口的宽度减少n字符

(此由可见先按n与先按ctrl+w效果相同)

2.窗口位置调换

窗口位置调换实际上就是把左边的窗口调整到右边或上边的窗口调整到下边等等。

在vim中,hjkl是移动光标的快捷键,与Ctrl+w相结合,可以对多个窗口进行窗口位置调换。

        Ctrl+w+ H[JKL]  多窗口调换

        Ctrl+w+L 当前窗口移动到最右边;+H当前窗口移动到最左边

        Ctrl+w+x 在只有两个窗口的情况下,通过此快捷键可以对调窗口位置

如何把上下排列的两个窗口调整为左右排列?

按Ctrl+w+H,当前窗口将调整为左边,另一窗口为右边排列。其他窗口位置调换可以自行测试。

三、切换当前窗口

光标所在的窗口,称为当前窗口。通过快捷键可以切换到需要的窗口。

1.循环切换窗口

        Ctrl+w + w

按住Ctrl,再按w,就可以切换窗口。再按一次w,从当前窗口切换到下一个窗口(顺时针变化)。

案例:

当前窗口在左边,我们记为窗口中。按一次Ctrl+w + w,光标移动到右上窗口中。如果还想切换,再按一次Ctrl+w + w,光标移动到右下窗口中。

所有的vim文件编辑,都是对当前窗口有效。执行底行命令,也是针对当前窗口。

2.根据方向键切换窗口

        Ctrl+w + ↑↓→←

此方法不受限于顺时针切换窗口,可以从当前窗口切换到另一窗口,未到需要的窗口,可以多次按Ctrl+w +方向键(一次只能按一个方向键)。

3.按字母键切换窗口

        Ctrl+w + h j k l

此方法与上一方法基本相同。在vim中,hjkl就是方向键。

操作简单,不作演示。

四、退出窗口(文件)

文件内容的修改、保存与文件多少、窗口多少关系不大,与单文件单窗口方法相同,不再讨论。

跨文件跨窗口的复制与粘贴,在理解剪切板的情况下,会切换窗口就可以顺利完成操作,此处也不作赘述。

仅讨论如何保存退出、强制退出等案例。

一般地讲,退出文件就是关闭窗口。但有时关闭窗口并不能退出文件编辑。

为了保证文件能正常退出,在编辑完文件后,及时保存。

1.单个文件(窗口)退出

a.退出文件就是关闭窗口

退出文件命令是:

        :wq;:q;:q!;:x;:ZZ

b.关闭窗口就是退出文件

关闭当前窗口的命令是:

        :close

快捷键

        Ctrl+w+q

2.所有文件的退出

所有文件的退出也是所有窗口关闭。

关闭多个窗口可以用:qa!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真正退出。

对于打开文件数与打开窗口数不一致的情况,比较复杂,我们将在vim多文件多窗口编辑的文章中展开讨论。

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

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

相关文章

【Axure】元件库和母版、常见的原型规范、静态原型页面制作

添加现有元件库 点击元件库——载入 当然也可以创建元件库&#xff0c;自己画自己保存 建立京东秒杀母版 静态原型页面的制作 框架 选择以iphone8的界面大小为例&#xff0c;顶部状态栏高度为20 左侧类似于标尺&#xff0c;因为图标、文字离最左侧的间距是不一样的 信…

基于Kylin的数据统计分析平台架构设计与实现

目录 1 前言 2 关键模块 2.1 数据仓库的搭建 2.2 ETL 2.3 Kylin数据分析系统 2.4 数据可视化系统 2.5 报表模块 3 最终成果 4 遇到问题 1 前言 这是在TP-LINK公司云平台部门做的一个项目&#xff0c;总体包括云上数据统计平台的架构设计和组件开发&#xff0c;在此只做…

深入了解 Linux 中的 AWK 命令:文本处理的瑞士军刀

简介 在Linux和Unix操作系统中&#xff0c;文本处理是一个常见的任务。AWK命令是一个强大的文本处理工具&#xff0c;专门进行文本截取和分析&#xff0c;它允许你在文本文件中查找、过滤、处理和格式化数据。本文将深入介绍Linux中的AWK命令&#xff0c;让你了解其基本用法和…

ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装

ElasticSearch第四讲&#xff1a;ES详解&#xff1a;ElasticSearch和Kibana安装 本文是ElasticSearch第四讲&#xff1a;ElasticSearch和Kibana安装&#xff0c;主要介绍ElasticSearch和Kibana的安装。了解完ElasticSearch基础和Elastic Stack生态后&#xff0c;我们便可以开始…

数据库的备份与恢复

数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 数据库备份…

XC5013 马达驱动和充电集成一体的控制芯片 一档输出芯片

XC5013 是一款应用于马达驱动或 LED 驱动的控制芯片&#xff0c;集成了锂电池充电管理系统&#xff0c;设定一档高电平输 出&#xff0c;并带有对不同状态的 LED 指示功能。 XC5013 集成了涓流充电、恒流充电和恒压充电全过程的充电方式&#xff0c;浮充电压精度在全温度范…

了解基于Elasticsearch 的站内搜索,及其替代方案

对于一家公司而言&#xff0c;数据量越来越多&#xff0c;如果快速去查找这些信息是一个很难的问题&#xff0c;在计算机领域有一个专门的领域IR&#xff08;Information Retrival&#xff09;研究如何获取信息&#xff0c;做信息检索。在国内的如百度这样的搜索引擎也属于这个…

二叉树经典例题

前言&#xff1a; 本文主要讲解了关于二叉树的简单经典的例题。 因为二叉树的特性&#xff0c;所以关于二叉树的大部分题目&#xff0c;需要利用分治的思想去递归解决问题。 分治思想&#xff1a; 把大问题化简成小问题&#xff08;根节点、左子树、右子树&#xff09;&…

leetCode 53.最大子数和 图解 + 贪心算法/动态规划+优化

53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入…

VUE3照本宣科——路由与状态管理器

VUE3照本宣科——路由与状态管理器 前言一、路由&#xff08;router&#xff09;1.createRouter2.router-link3.router-view4.useRoute5.useRouter6.路由守卫7.嵌套路由 二、状态管理器&#xff08;Pinia&#xff09;1.定义Store&#xff08;1&#xff09;Option Store&#x…

电气走线——部件、线缆、线号、端子排

目录 1.部件 2.线缆 3.端子排 1.部件 元器件选型 2.线缆 3.端子排

【在凸多边形的图像中查找顶点】估计具有已知顶点数的像素化凸多边形角点研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

SpringCache--缓存框架 ----苍穹外卖day7

目录 简介 ​快速入门 引入依赖 常用注解​ 使用步骤 1.开启缓存注解 2. Cacheable注解 简介 快速入门 引入依赖 常用注解 使用步骤 1.开启缓存注解 2. Cacheable注解 该注解仅用于查询操作&#xff0c…

深度学习(3)---PyTorch中的张量

文章目录 一、张量简介与创建1.1 简介1.2 张量的创建 二、张量的操作2.1 张量的拼接与切分2.2 张量索引 三、张量的数学运算 一、张量简介与创建 1.1 简介 1. 张量是一个多维数组&#xff0c;它是标量、向量、矩阵的高维拓展。 2. 在张量的定义中&#xff0c;方括号用于表示张…

1.3 数据库系统的结构

前言&#xff1a; **前言笔记&#xff1a;数据库系统的结构层次与角度** --- **1. 数据库系统的结构考察**&#xff1a; - 可以从多种层次和不同角度来考察。 - 结构的选择取决于我们查看数据库的角度。 --- **2. 从** **开发人员** **的角度**&#xff1a; - **…

堆--数组中第K大元素

如果对于堆不是太认识&#xff0c;请点击&#xff1a;堆的初步认识-CSDN博客 解题思路&#xff1a; /*** <h3>求数组中第 K 大的元素</h3>* <p>* 解体思路* <ol>* 1.向小顶堆放入前k个元素* 2.剩余元素* 若 < 堆顶元素, 则略过* …

1800_vim的宏录制功能尝试

全部学习信息汇总&#xff1a; GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 最近5年多来&#xff0c;我emacs的编辑器用的还是比较多的。我的配置基本上是一个spacemacs&#xff0c;然后根据自己的需求增加了一丁点儿的其他配置。而…

Spring的AOP开发-基于xml配置的AOP

基于xml配置的AOP xml方式AOP快速入门 在前面我们自己编写的AOP基础代码还存在一些问题&#xff0c;主要是 被增强的范围写死了通知对象的方法在代码中写死了具体文章传送:Spring的AOP开发-AOP简介-CSDN博客 我们可以通过配置文件解决上述问题 配置增强的范围&#xff08;配…

玩转Linux—如何在Linux环境中部署MySQL、Redis和nginx

1、Linux常用命令 Linux学习之路&#xff1a; VMware虚拟机安装Linux系统(详解版) 查看当前文件目录&#xff1a;ls查看目录中文件详细信息&#xff1a;ll输出当前所处的目文件目录&#xff1a;pwdLinux查看当前IP地址&#xff1a;ifconfigWindows查看当前IP地址&#xff1…

想要精通算法和SQL的成长之路 - 岛屿数量和岛屿的最大面积

想要精通算法和SQL的成长之路 - 岛屿数量和岛屿的最大面积 前言一. 岛屿数量1.1 并查集数据结构构造1.2 使用并查集编码 二. 岛屿的最大面积 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 岛屿数量 原题链接 从这个题目的特性来看&#xff0c;它适合用并查集…