当前位置: 首页 > news >正文

Linux CentOS7 vim多文件与多窗口操作

窗口是可视化的分割区域。Windows中窗口的概念与linux中基本相同。连接xshell就是在Windows中新建一个窗口。而vim打开一个文件默认创建一个窗口。同时,Vim打开一个文件也就会建立一个缓冲区,打开多个文件就会创建多个缓冲区。

本文讨论vim中打开多个文件与多个窗口情况下,如何操作。

对于vim多文件的编辑与操作,可以参考《Linux CentOS7 vim多文件编辑》。

对于vim多窗口编辑,可以参考《Linux CentOS7 vim多窗口编辑》。

一、创建多个窗口

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

1.一次打开多个窗口

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

a.多个窗口与一个文件

基本格式

        vim -on file  上下排列

        vim -On file  左右排列

案例

        vim -o3 create_win

效果

打开上下排列的三个窗口,只有一个窗口中打开一个文件

b.窗口数与文件数一致

基本格式

        vim  -on  file1 file2…filen  上下排列

        vim  -On  file1 file2…filen  左右排列

案例

        vim  -o3  demo.txt demo_1 demo1.txt

效果

打开上下排列的三个窗口,每个窗口中打开一个文件

案例

        vim  -O4  demo.txt demo_1 test1.txt test2.txt

效果

打开左右排列的三个窗口,每个窗口中打开一个文件

c.文件多于窗口数

一般格式

        vim -o3 file1 file2 file3 file4  上下排列

        vim -O3 file1 file2 file3 file4  左右排列

案例

        vim -O3 demo.txt demo_1 test1.txt test2.txt

效果

打开三个窗口,每个窗口有一个文件;因为命令是打开4个文件,故有一个文件隐藏,不能显示

d.窗口多于文件数

一般格式

        vim  -o4  file1  file2 file3  上下排列

        vim  -O4  file1  file2 file3  左右排列

案例

        vim  -o4 demo.txt demo_1 test1.txt

效果

打开四个窗口,前3个窗口都有一个文件;因为命令是打开四个窗口,故多出一个窗口,是空白,没有打开文件

2.逐步打开多个窗口

我们先打开一个文件(或多个文件),单一窗口。在底行模式下,运用命令增加窗口。可以多次重复操作打开任意多窗口。

操作目标

打开三个文件,分布在三个窗口中!

a.先打开一个窗口

        vim file1 file2 file3

案例

          vim demo.txt for1.sh test1.sh

效果

打开窗口后,利用命令buffers查看打开文件列表

b.再创建一个新窗口

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

        sp/vs [files]

        new/vnew [files]

        ctrl+w+s/v

案例

我们应用:vs for1.sh命令在当前窗口的左侧新建一个窗口,且打开文件for1.sh

c.继续创建新窗口

在前述方法的基础上,可以创建需要的窗口。

案例

使用new test1.sh 在当前窗口的上方再创建一个新窗口,同时打开文件test1.sh

由此类方法创建的窗口,与一次创建多个窗口不同,可以设计多个窗口的排列位置。

二、窗口内文件处理

关于窗口大小的调整及位置的变化,我们不作讨论,可以参考前述文章《Linux CentOS7 vim多窗口编辑》。

我们关注在当前窗口中,如何添加文件、切换文件、查看文件等操作。后续讨论窗口间的文件复制与粘贴。

1.添加文件

在窗口中再添加新的文件,或打开文件,有多种方法。可根据习惯选择合适的。

a.o[pen]

底行模式下,录入命令

  :o file

后跟文件名,将打开该文件。如果该文件在当前目录下存在,将打开;如果文件不存在,将新建该文件。(如o后面不加文件名,将会打开当前文件,相当于没有变化)。

b.e[dit]

底行模式下,录入命令

  :e file

后跟文件名,将打开该文件。如果该文件在当前目录下存在,将打开;如果文件不存在,将新建该文件。

前两个添加或打开文件的命令,是打开后即可以编辑。

c.badd

底行模式下,录入命令

  :badd file

后跟文件名,将打开该文件。如果该文件在当前目录下存在,将打开;如果文件不存在,将新建该文件。

该命令是添加一个文件到缓冲区内,并不进行编辑。与前两个添加或打开文件的命令完全不同。

如果该命令添加的文件在其他窗口中打开,执行该命令将没有效果。

利用ls命令查看缓冲区存在的文件

2.查看文件

在当前窗口的底行模式下,可以用命令查看缓冲区存在的文件,也可以用快捷键循环查看存在的文件。

a.命令查看

底行模式下,可以用命令ls、files和buffers任意一个查看缓冲区存在的文件。如下图:

在文件列表中,第一列,是文件编号,可以在底行模式下使用该编号。如果有文件被删除,编号将会不连续。

第二列,有多种符号同,代表不同的含义,其中最常用的是%a表示正在编辑的文件;#是前一个编辑的文件。

第三列,是文件名。

第四列,表示光标所处的行数。如是第0行,表示文件未被编辑过。

b.快捷键循环查看

底行模式下,可以用命令:b 再按Tab键,循环查看缓冲区存在的文件。如下图:

再按一次Tab键,显示2号文件for1.sh…

如果显示某一文件后,按回车确认键,将在当前窗口中打开此文件。

在使用b命令时,如果b后没有空格,直接按Tab键,将浏览以b开头的命令:

如:bNext badd ball…

如果显示某一命令后,按回车确认键,将执行该命令。

如执行ball,将按文件数打开窗口,每个窗口一个文件:

c.隐藏文件

底行模式下,录入命令

  :hide

该文件将隐藏,同时,在多窗口情况下,将关闭该窗口。

3.切换文件

        :b+next b+n n [n];激活列表中的下一个文件,n后面有文件名时,激活该文件

        :b+previous b+p;激活列表中的前一个文件

        :b+f  b+l 激活列表中的第一个和最后一个文件

        :b+# 激活最近访问的文件

        :bulffer+编号;:b+编号;:buffer+文件名;:b+文件名;激活相应编号的文件

给窗口重命名也是一种重新打开文件的方式:

        :f file

如果文件存在,将打开文件;文件不存在,将新建文件。

4.删除文件

删除文件是在当前窗口中的底行模式下,利用bd命令删除缓冲区的文件。

:bd[elete] 删除当前正在编辑的文件

        :bd n/file

d是delete的首字母,执行bdelete与bd命令一样。

n是缓冲区文件的编号,如:bd 2 将删除2号文件;

file是缓冲区的文件名,如:bd demo.txt 将删除demo.txt文件。

5.关闭文件

关闭窗口不是退出缓冲区的文件,而是不在当前窗口显示。如退出某一窗口的文件,该窗口将自动关闭。

有4种关闭窗口的方式,分别是:离开(quit)、关闭(close)、隐藏(hide)、关闭其他窗口。

        ^代表Ctrl键

        ^Wq  离开当前窗口

        ^Wc  关闭当前的窗口

        ^Wo  关闭当前窗口以外的所有窗口

        quit  离开当前窗口

        exit  退出当前窗口

        q 或close  #关闭当前窗口

        only #保留当前窗口,关闭其它所有窗口

        qall(qa)  #退出所有窗口

        wall  #保存所有窗口

6.浏览文件

在多窗口情况下,可以执行命令浏览当前目录下的所有文件。此功能不常用,仅供参考。

        :ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择

        :Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器,此命令与前述ex基本一样。S是split的首字母,水平分隔窗口。

        :Vex 垂直分割当前窗口,并在窗口中开启目录浏览器

三、窗口间文件操作

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

1.当前窗口命令模式下的复制

命令模式下:

        yy  复制当前行

        dd  删除当前行

切换窗口,仍在命令模式下:

        p 在当前行后粘贴

        P在当前行前粘贴

2.当前窗口编辑模式下的复制

可用鼠标选择多行内容或字符,按ctrl+insert复制

切换窗口,仍在编辑模式下:

按shift+insert复制

3.当前窗口底行模式下的删除或复制

在当前窗口底行模式下,录入:

2,4d  #将删除2-4行内容,内容存入无名寄存器

切换窗口,仍在底行模式下:

录入:

        put

无名寄存器内容将粘贴到当前行的后面

切换到命令模式下:

按p,无名寄存器内容将粘贴到当前行的后面

按P,无名寄存器内容将粘贴到当前行的前面

相关文章:

Linux CentOS7 vim多文件与多窗口操作

窗口是可视化的分割区域。Windows中窗口的概念与linux中基本相同。连接xshell就是在Windows中新建一个窗口。而vim打开一个文件默认创建一个窗口。同时,Vim打开一个文件也就会建立一个缓冲区,打开多个文件就会创建多个缓冲区。 本文讨论vim中打开多个文…...

SPI 通信协议

1. SPI通信 1. 什么是SPI通信协议 2. SPI的通信过程 在一开始会先把发送缓冲器的数据(8位)。一次性放到移位寄存器里。 移位寄存器会一位一位发送出去。但是要先放到锁存器里。然后从机来读取。从机的过程也一样。当移位寄存器的数据全部发送完。其实…...

【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

5个适合初学者的初级网络安全工作,网络安全就业必看

前言 网络安全涉及保护计算机系统、网络和数据免受未经授权的访问、破坏和盗窃 - 防止数字活动和数据访问的中断 - 同时也保护用户的资产和隐私。鉴于公共事业、医疗保健、金融以及联邦政府等行业的网络犯罪攻击不断升级,对网络专业人员的需求很高,这并…...

Kafka核心原理

1、Topic的分片和副本机制 分片作用: 解决单台节点容量有限的问题,节点多,效率提升,吞吐量提升。通过分片,将一个大的容器分解为多个小的容器,分布在不同的节点上,从而实现分布式存储。 分片…...

探秘前后端开发世界:猫头虎带你穿梭编程的繁忙街区,解锁全栈之路

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

洛谷_分支循环

p2433 问题 5 甲列火车长 260 米,每秒行 12 米;乙列火车长220 米,每秒行 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。 计算方式:两车车…...

MySQL数据库入门到精通——进阶篇(3)

黑马程序员 MySQL数据库入门到精通——进阶篇(3) 1. 锁1.1 锁-介绍1.2 锁-全局锁1.3 锁-表级锁1.3.1 表级锁-表锁1.3.2 表级锁元数据锁( meta data lock,MDL)1.3.3 表级锁-意向锁1.3.4 表级锁意向锁测试 1.4 锁-行级锁1.4.1 行级锁-行锁1.4.2…...

Mind Map:大语言模型中的知识图谱提示激发思维图10.1+10.2

知识图谱提示激发思维图 摘要介绍相关工作方法第一步:证据图挖掘第二步:证据图聚合第三步:LLM Mind Map推理 实验实验设置医学问答长对话问题使用KG的部分知识生成深入分析 总结 摘要 LLM通常在吸收新知识的能力、generation of hallucinati…...

[引擎开发] 杂谈ue4中的Vulkan

接触Vulkan大概也有大半年,概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质,带有严重的主观认知,因此并没有那么严谨。 使用Vulkan会带来什么呢?简单来说就是对底层更好的控制。这意味着我们能够有更多的手段…...

docker--redis容器部署及地理空间API的使用示例-II

文章目录 Redis 地理位置类型API命令操作示例JAVA使用示例导入依赖RedisTemplate 操作GeoData示例CityInfo实体类Geo操作接口类Geo操作接口实现类SpringBoot测试类RedissonClient 操作GeoData示例docker–redis容器部署及与SpringBoot整合 docker–redis容器部署及地理空间API的…...

Vue中如何进行文件浏览与文件管理

Vue中的文件浏览与文件管理 文件浏览与文件管理是许多Web应用程序中常见的功能之一。在Vue.js中,您可以轻松地实现文件浏览和管理功能,使您的应用程序更具交互性和可用性。本文将向您展示如何使用Vue.js构建文件浏览器和文件管理功能,以及如…...

jenkins利用插件Active Choices Plug-in达到联动显示或隐藏参数,且参数值可修改

1. 添加组件 Active Choices Plug-in 如jenkins无法联网,可在以下两个地址中下载插件,然后放到/home/jenkins/.jenkins/plugin下面重启jenkins即可 Active Choices Active Choices | Jenkins plugin 2. 效果如下: sharding为空时&#xf…...

香蕉叶病害数据集

1.数据集 第一个文件夹为数据增强(旋转平移裁剪等操作)后的数据集 第二个文件夹为原始数据集 2.原始数据集 Cordana文件夹(162张照片) healthy文件夹(129张) Pestalotiopsis文件夹(173张照片&…...

天地无用 - 修改朋友圈的定位: 高德地图 + 爱思助手

1,电脑上打开高德地图网页版 高德地图 (amap.com) 2,网页最下一栏,点击“开放平台” 高德开放平台 | 高德地图API (amap.com) 3,在新网页中,需要登录高德账户才能操作。 可以使用手机号和验证码登录。 4&#xff0c…...

AtCoder Beginner Contest 232(A-G)

A - QQ solver (atcoder.jp)直接按题意模拟即可。 B - Caesar Cipher (atcoder.jp)按题意模拟即可 C - Graph Isomorphism (atcoder.jp)按题意模拟即可 D - Weak Takahashi (atcoder.jp) 一个非常套路的网格dp E - Rook Path (atcoder.jp) (1)题意 有…...

计算机网络(第8版)-第5章 运输层

5.1 运输层协议概述 5.1.1 进程之间的通信 图5-1 中两个运输层之间有一个深色双向粗箭头,写明“运输层提供应用进程间的逻辑通信”。 图5-1 运输层为相互通信的应用进程提供了逻辑通信 5.1.2 运输层的两个主要协议 5.1.3 运输层的端口 请注意,这种…...

AtCoder Beginner Contest 231(D-F,H)

D - Neighbors (atcoder.jp) (1)题意 给出M组关系,问是否有一个排列,能表示A[i]和B[i]相邻 (2)思路 考虑如果有环,显然不能满足排列,因为排列中度数最多为2,若有超过2的显…...

【Python】map

map()函数是Python内置函数之一,它的主要作用是将一个函数应用于可迭代对象中的每个元素,并返回一个包含结果的迭代器。 map()函数的语法如下: map(function, iterable)function参数是一个函数,表示要应用于可迭代对象每个元素的…...

Swift 5.9 与 SwiftUI 5.0 中新 Observation 框架应用之深入浅出

0. 概览 Swift 5.9 一声炮响为我们带来全新的宏(Macro)机制,也同时带来了干霄凌云的 Observation 框架。 Observation 框架可以增强通用场景下的使用,也可以搭配 SwiftUI 5.0 而获得双剑合璧的更强威力。 在本篇博文&#xff0c…...

【已解决】在 Vite 项目中使用 eslint-config-ali 时遇到的解析错误

错误还原 搭建 Vite 项目 pnpm create vite my-vue-app --template vue-ts安装 eslint-config-ali pnpm i -D eslint-config-ali typescript-eslint/parser typescript-eslint/eslint-plugin eslint-plugin-import eslint-import-resolver-typescript vue-eslint-parser esl…...

蓝桥杯每日一题2023.10.5

3420. 括号序列 - AcWing题库 题目描述 题目分析 对于这一我们需要有前缀知识完全背包 完全背包的朴素写法&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1010; int n, m, v[N], w[N], f[N][N]; int main() {cin >> n >> m;fo…...

PyTorch实例:简单线性回归的训练和反向传播解析

文章目录 &#x1f966;引言&#x1f966;什么是反向传播&#xff1f;&#x1f966;反向传播的实现&#xff08;代码&#xff09;&#x1f966;反向传播在深度学习中的应用&#x1f966;链式求导法则&#x1f966;总结 &#x1f966;引言 在神经网络中&#xff0c;反向传播算法…...

Arcgis提取玉米种植地分布,并以此为掩膜提取遥感影像

Arcgis提取玉米种植地分布上&#xff0c;并以此为掩膜提取遥感影像 一、问题描述 因为之前反演是整个研究区&#xff0c;然而土地利用类型有很多类&#xff0c;只在农田或者植被上进行反演&#xff0c;需要去除水体、建筑等其他类型&#xff0c;如何处理得到下图中只有耕地类…...

软件工程与计算总结(四)项目管理基础

目录 一.项目和项目管理 二.团队组织与管理 三.软件质量保障 四.软件配置管理 五.项目实践 一.项目和项目管理 1.软件开发远不是纯粹的编程&#xff0c;随着软件规模的增长&#xff0c;软件开发活动也变得越来越复杂~ 2.软件项目就是要将所有的软件开发活动组织起来&#…...

【Python】datetime 库

# timedelta(days, seconds, microseconds,milliseconds, minutes, hours, weeks) 默认按顺序传递参数 # 主要介绍 datetime.datetime 类 # 引入 from datetime import datetime today datetime.now() # 获取当前时间 2023-10-05 15:58:03.218651 today1 datetime.utcnow() #…...

从0开始python学习-28.selenium 需要图片验证的登录

url https://test.com/login driver.get(url) # 获取登录页面需要输入账号密码进行模拟登录操作 user driver.find_element(By.XPATH,//*[id"login"]/div[2]/div/form[2]/div[2]/div/div/input).send_keys(username) pwd driver.find_element(By.XPATH,//*[id&qu…...

Nginx搭建Rtmp流媒体服务,并使用Ffmpeg推流

文章目录 1.rtmp流媒体服务框架图2.nginx配置3.配置nginx4.使用ffmpeg推流5.实时推摄像头流 本项目在开发板上使用nginx搭建流媒体服务&#xff0c;利用ffmpeg进行推流&#xff0c;在pc上使用vlc media进行拉流播放。 1.rtmp流媒体服务框架图 2.nginx配置 下载&#xff1a;wge…...

IDEA 将一个普通Java工程转化为maven工程

打开IntelliJ IDEA并打开Java工程。 在项目窗口中&#xff0c;右键单击项目名称&#xff0c;选择“Add Framework Support”。 在弹出的窗口中&#xff0c;选择“Maven”。 在“Maven Information”窗口中&#xff0c;填写Group Id、Artifact Id和Version等基本信息。 点击…...

linux下的永久保存行号

linux下的永久保存行号 1.首先 这里是引用 输入命令&#xff1a;vi ~/.vimrc 其次 这里是引用 输入命令 set number...

视频制作哪里可以学/seo推广一个月见效

在Configuration类中&#xff0c;我们通过add方法添加一个映射&#xff0c;而add方法又把这个任务交给了Binder类的bindrooR方法。 protectedvoidadd(org.dom4j.Document doc) throws Exception { try { Binder.bindRoot( doc, createMappings() ); } catch (MappingExce…...

辽宁建设工程信息网 大连市政府采购网/seo咨询

开篇章先是提到了软件测试方向的内容&#xff1a;软件程序软件工程&#xff0c;几乎所有的程序猿都知道这句名言&#xff0c;而且我们在学习软件工程时老师也向我们强调了这点&#xff0c;老师还说过软件程序数据文档。 软件学科现在已经成为比较独立的一个专业学科&#xff0c…...

湖州哪里做网站/大数据营销系统多少钱

一、SQL Server联机丛书中关于事务的定义事务事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性&#xff0c;称为 ACID(原子性、一致性、隔离性和持久性)属性&#xff0c;只有这样才能成为一个事务&#xff1a;原子性事务必须是原子工作单元&#x…...

网站建设流程服务/电商运营培训班多少钱

简介 一个很方便的用来在JS中控制元素类的方法&#xff0c;完全可以取代jQuery中对class的操作 classList属性返回元素的类名&#xff0c;作为DOMTokenList对象。该属性用于在元素中添加&#xff0c;移除及切换 CSS 类。 classList属性是只读的&#xff0c;但你可以使用add(…...

wordpress 免费中文模板下载地址/长沙百度公司

//用定时器T0查询方式P0口8位控制LED闪烁T1查询方式P1口8位控制LED闪烁#include<reg52.h> // 包含52单片机寄存器定义的头文件#define uchar unsigned char#define uint unsigned int/**************************************************************函数功能&…...

深圳市做网站有哪些公司/培训心得总结

在学习完 paxos , zab , 协议后&#xff0c;我们接下来对 比较火的 分布式一致性广播协议&#xff0c; Raft 协议了解一下。 这篇文章讲解的非常好&#xff0c;我就没有自己再写一篇文章&#xff0c;直接摘录过来了。 原文地址&#xff1a;https://www.sohu.com/a/198360462_7…...