Linux CentOS7 vim多窗口编辑

news2024/11/27 7:21:48

我们在用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.coloradmin.cn/o/1056079.html

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

相关文章

《从零开始的Java世界》03面向对象(进阶)

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…

竞赛 机器学习股票大数据量化分析与预测系统 - python 竞赛

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…

使用 ClassFinal 对 java class 文件进行加密防止反编译

ClassFinal 是一款 java class文件安全加密工具&#xff0c;支持直接加密 jar 包或 war 包&#xff0c;无需修改任何项目代码&#xff0c;兼容 spring-framework&#xff1b;可避免源码泄漏或字节码被反编译 特点 无需修改原项目代码&#xff0c;只要把编译好的jar/war包用本工…

媒体梦工厂AI智聊:轻松提升工作效率的智能助手

在信息爆炸的时代&#xff0c;如何快速、准确地获取和处理信息&#xff0c;成为提高工作效率的关键。媒体梦工厂最新推出的AI智聊功能&#xff0c;为您提供了全新的解决方案&#xff0c;让您在工作和生活中轻松提升效率。 首先&#xff0c;我们要进入好简单批量智剪的主页面&am…

643. 子数组最大平均数I(滑动窗口)

目录 一、题目 二、代码 一、题目 643. 子数组最大平均数 I - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:double findMaxAverage(vector<int>& nums, int k) {double Average INT_MIN;double sum nums[0];int left 0, right 0…

2023年10月报价:腾讯云服务器租用价格表_轻量_CVM_GPU

阿里云服务器10月报价表来了&#xff0c;和9月份价格差不多&#xff0c;再等一个月就到腾讯云双十一优惠活动了&#xff0c;腾讯云百科先来说说10月腾讯云服务器优惠价格表&#xff1a;轻量应用服务器2核2G3M带宽95元一年、2核4G5M带宽218元一年、2核2G4M带宽三年价540元一年、…

绘制李萨如图,数据保存excel,txt

前置 看到网络上绘制的这么漂亮的数学图形&#xff0c;觉得能够用一个代码绘制全部的这些图形&#xff0c;就能提高不少效率&#xff0c;所以于是就心血来潮&#xff1a; 这是一个绘制李萨如图并保存数据的Python代码示例。下面是每行注释的详细解释&#xff1a; import os …

面试5g通信工程师对方要看芝麻信用分靠谱吗

大家好&#xff0c;我是网络工程师成长日记实验室的郑老师&#xff0c;您现在正在查看的是网络工程师成长日记专栏&#xff0c;记录网络工程师日常生活的点点滴滴 有个大兄弟说&#xff0c;他在深圳龙岗去面试5G网络优化工程师。对方说刚入职多少钱&#xff0c;工作一段时间多少…

内网信息收集

1.内网基本步骤 2.收集本机信息 3.查询当前用户 4.判断域存在不 看域名和ip是不是一个内网 5.查看域内主机 6.扫描域内主机端口 7.收集域内基本信息 8.查找域控 9.查看域内用户和管理员信息 10.定位域管理员 11.查看域管理进程 12.域管理员方法 13.利用powershell收集…

SpringCloud Alibaba - 基于 FeignClient 整合 Sentinel,实现“线程隔离”和“熔断降级”

目录 一、FeignClient 整合 Sentinel 1.1、整合原因 1.2、实现步骤 1.2.1、修改 OrderService 中的 application.yml 文件 1.2.2、给 FeignClient 编写失败后的降级逻辑 二、线程隔离 2.1、线程隔离的两种方式 2.1.1、线程池隔离 2.1.2、信号量隔离&#xff08;Sentin…

c#设计模式-结构型模式 之 享元模式

&#x1f680;简介 享元模式&#xff08;Flyweight Pattern&#xff09;是一种用于性能优化的模式&#xff0c;其核心是运用共享技术来有效支持大量细粒度的对象。享元模式可以避免大量非常相似类的开销。在程序设计中&#xff0c;有时需要生成大量细粒度的类实例来表示数据。…

FPGA行业应用二:通用仪器行业

通用仪器指的是电子测试技术中涉及的仪器仪表&#xff0c;如&#xff1a;万用表&#xff0c;示波器&#xff0c;信号发生器&#xff0c;波形发生器&#xff0c;频谱分析仪&#xff0c;功率计&#xff0c;电源&#xff0c;等…… 用于测量&#xff0c;测试&#xff0c;控制&…

C语言编译与链接过程详解

C语言编译与链接过程详解 源文件 main.c #include <stdio.h>extern int data; extern int add(int a,int b);int a1; int a2 0; int a3 10;static int b1; static int b2 0; static int b3 20;int main() {int c1;int c2 0;int c3 30;static int d1;static int …

QQ通信协议

不管UDP还是TCP&#xff0c;最终登陆成功之后&#xff0c;QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80&#xff0c;采用UDP方式登陆的时候&#xff0c;端口是8000。因此&#xff0c;假如你所在的网络开放了80端口&#xff08;80端口是最常用端口。。就是…

轻松掌握二叉树和堆(保姆级详解,小白必看系列)

目录 一、前言 二、二叉树的概念和结构 &#x1f34e;二叉树的概念 &#x1f350;特殊的二叉树&#xff08;重点&#xff09; &#x1f349;二叉树的性质 &#xff08;超重点------面试做题会用&#xff09; &#x1f353;二叉树的概念选择题 &#x1f34c;二叉树的存储…

三、逻辑代数基础

1.简介 在数字电路中&#xff0c;我们用两种数码1和0来表示一个信号的两种不同的逻辑状态。 例如&#xff1a;用1表示开关闭合&#xff0c;电路导通&#xff1b;用0表示开关打开&#xff0c;电路断开。 这两种对立的逻辑关系就称之为二值逻辑。 当两种数码表示不同的逻辑状态…

Acwing 845. 八数码

Acwing 845. 八数码 知识点题目描述思路讲解代码展示 知识点 BFS 题目描述 思路讲解 分析一下y总的思路&#xff0c;也相当于做个课堂笔记吧&#xff08;这也太巧妙了吧&#xff0c;讲解视频不到20分钟&#xff0c;我愣是半天没想出来 1、题目的目标 2、移动情况 移动方式…

基于Java的城市天然气费管理系统的设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

S5PV210裸机(一):裸机基础,arm指令,210启动刷机

本文主要探讨s5pv210裸机基础知识&#xff0c;arm指令&#xff0c;以及210启动刷机相关知识。 Soc与cpu Soc是cpu与其他外设的集合即SoC<>cpuDDRflashutral...... 地址总线与数据总线 cpu通过地址总线寻址即传输DDR或flash等地址,通过数据总线与外设进…

【算法优选】双指针专题——贰

文章目录 &#x1f60e;前言&#x1f332;[快乐数](https://leetcode.cn/problems/happy-number/)&#x1f6a9;题目描述&#x1f6a9;题⽬分析&#xff1a;&#x1f6a9;算法思路&#xff1a;&#x1f6a9;代码实现&#xff1a; &#x1f38b;[盛水最多的容器](https://leetco…