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

news2025/2/25 17:17:55

窗口是可视化的分割区域。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,无名寄存器内容将粘贴到当前行的前面

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

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

相关文章

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口)

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口) 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件,点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口…

王道考研操作系统——I/O管理

I/O设备的基本概念 键盘:输入设备(把设备准备好的数据读入计算机当中); 显示器:输出设备(把计算机中准备好的数据写出到设备上); 移动硬盘:既是输入又是输出 中断驱动…

近三年3D点云顶会论文及源码合集,含2023最新

目前2D图像识别技术早已成熟,但2D的图像信息只有XY两个维度,而3D点云能够提供三维世界的信息,因此在自动驾驶、机器人和增强现实等各种领域都得到了广泛的应用。 近年来随着深度学习的发展,作为计算机视觉新兴研究热点的3D点云技…

python利用matplotlib绘图,对于中文和负号不显示,显示方框“口口”完美解决办法!!

文章目录 一、问题展示二、问题分析三、解决办法四、结果展示 一、问题展示 二、问题分析 可以发现对中文,以及负号不显示。 三、解决办法 import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [usimHei] # 显示中文 plt.rcParams[axes.unicode_mi…

Task1:

""" 重置root管理员密码 """ step1: 在shell界面输入重启命令; step2: 重启过程中出现此界面,快速按键盘‘e’, 进入系统内核程序; step3: 在系统系统内核程序内,移动光标至Linux 参数这…

10.0 探索API调试事件原理

本章笔者将通过Windows平台下自带的调试API接口实现对特定进程的动态转存功能,首先简单介绍一下关于调试事件的相关信息,调试事件的建立需要依赖于DEBUG_EVENT这个特有的数据结构,该结构用于向调试器报告调试事件。当一个程序发生异常事件或者…

栈的应用场景(二)

有效的括号匹配 1.题目2.图分析3.代码实现 1.题目 2.图分析 3.代码实现 class Solution {public boolean isValid(String s) {//创建一个栈,来放左括号.Stack<Character> stack new Stack<>();//遍历字符串,左括号放进栈for(int i 0 ; i < s.length(); i){ch…

趋势列表上又多了两个漏洞!

CVE-2023-24955 和 CVE-2023-29360 来自微软产品 5 月和 6 月的安全补丁报告。它们之所以特别危险&#xff0c;是因为出现了公开漏洞利用。 以下是详细信息。 第一个漏洞 CVE-2023-24955存在于 Microsoft SharePoint Server 中。它可导致远程代码执行。 它与覆盖随后由服务器执…

postgresql-备份与恢复

postgresql-备份与恢复 基本概念备份类型物理备份与逻辑备份在线备份与离线备份全量备份与增量备份 备份恢复工具备份与恢复逻辑备份与还原备份单个数据库psqlpg_dumppg_store 备份整个集群 基本概念 服务器系统错误、硬件故障或者人为失误都可能导致数据的丢失或损坏。因此&am…

Ai项目十四:基于 LeNet5 的手写数字识别及训练

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 pytorch复现lenet5模型&#xff0c;并检测自己手写的数字图片。 利用torch框架搭建模型相对比较简单&#xff0c;但是也会遇到很多问题&#xff0c;网上资料很多&#xff0c;搭建模型的方法大同小异&#xff0c;…

匿名上位机V7波形显示教程-简单能用

匿名上位机V7波形显示教程-简单能用 匿名上位机V7下位机数据格式根据匿名上位机V7的手册说明文档&#xff0c;编写对应的指令在主函数中初始化ANDmessage驱动连接匿名上位机V7 匿名上位机V7下位机数据格式 DATA区域内容&#xff1a; 举例说明DATA区域格式&#xff0c;例如上文&…

Altium Designer 批量添加元器件后缀

Altium Designer 批量添加元器件后缀 方法一方法二可能出现的问题要注意 方法一 您可以使用 Altium Designer 中的“批量修改元器件名称”功能来批量添加元器件后缀。具体步骤如下&#xff1a; 1.为了方便显示 操作流程&#xff0c;我这里复制了几个原理图的文件&#xff0c;粘…

【漏洞复现】用友GPR-U8 slbmbygr SQL注入漏洞

文章目录 一、漏洞描述二、网络空间搜索引擎搜索三、漏洞利用 一、漏洞描述 用友GRP-U8是面向政府及行政事业单位的财政管理应用。北京用友政务软件有限公司GRP-U8 SQL注入漏洞。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe260ff4d6d14abeb0e576e4bbf3c385.png 二…

计算机组成原理期末复习

第一章 上机前的准备&#xff1a;建立数学模型、确定计算方法和编制解题程序n位操作码有 2 n 2^n 2n种不同操作主储存器&#xff08;主存/内存&#xff09;包括存储体M、各种逻辑部件及控制电路。储存体有多个储存单元&#xff0c;储存单元有多个储存元件&#xff0c;每个存储…

SDL2绘制ffmpeg解析的mp4文件

文章目录 1.FFMPEG利用命令行将mp4转yuv4202.ffmpeg将mp4解析为yuv数据2.1 核心api: 3.SDL2进行yuv绘制到屏幕3.1 核心api 4.完整代码5.效果展示 本项目采用生产者消费者模型&#xff0c;生产者线程&#xff1a;使用ffmpeg将mp4格式数据解析为yuv的帧&#xff0c;消费者线程&am…

latex表格内容换行

问题描述&#xff1a; 在用latex表格中编写公式时&#xff0c;可能出现公式太长&#xff0c;表格中后面的内容不能在文档中呈现&#xff0c;如下图1&#xff0c;故要进行行内内容的换行&#xff0c;使内容呈现完全而传统的\换行后,换行内容会顶格&#xff0c;如图2。 解决方…

PE文件之导入表

1. 导入表 2. 显示导入表信息的例子 ; 作用: 将RVA地址转成FOA即文件偏移 ; 参数: _pFileHdr 指向读到内存中文件的基址指针 ; _dwRVA 目标RVA地址 ; 返回: 目标RVA转成文件偏移的值 RVA2FOA PROC USES esi edi edx, _pFileHdr:PTR BYTE, _dwRVA:DWORDmov esi, _pFil…

饲料微生物检验 采样.

声明 本文是学习GB-T 42959-2023 饲料微生物检验 采样. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了以微生物检验为目的的采样原则、采样人员、设备和材料、采样方案、采样步骤和采样 报告。 本文件适用于以微生物检验为目的…

Can‘t pickle <class ‘__main__.Test‘>: it‘s not the same object as __main__.Test

目录 原因1 类名重复了 案例1 变量名和类名重复 原因1 类名重复了 检查项目代码&#xff0c;是不是其他地方有同名类。 案例1 变量名和类名重复 转自&#xff1a;python3报错Cant pickle <class __main__.Test>: its not the same object as __main__.Test解决 - 知乎…

接口日志,统一记录(AOP+自定义注解)

需求 指定接口&#xff0c;记录请求的日志。 接口日志的核心内容包括&#xff1a;请求方法&#xff0c;接口路径&#xff0c;请求参数等。 方案 采用的方案是&#xff1a;AOP 自定义注解 说明&#xff1a; 在需要记录日志的接口上&#xff0c;加上自定义注解ApiLog&…