Linux操作系统 ------(3.文本编译器Vim)

目录

1.前言

2.本章学习目标

3.vim的三种工作模式

3.1一般模式‌

3.2编辑模式‌

3.3命令行模式‌

4.运行vim

[5.vim 不同工作模式下的常见命令](#5.vim 不同工作模式下的常见命令)

6.一般模式下的功能键

6.1移动光标类

6.2删除、复制和粘贴类

6.3查找替换类

7.从一般模式进入编辑模式

8.命令行模式下的功能键

9.文件救援和高级功能

10.文件救援

11.多窗口编辑

11.1单个文件分屏编辑

11.2多个文件分屏编辑

11.3关闭分屏

12.多文件编辑

[13.块选择(Visual Block)](#13.块选择(Visual Block))

14.总结


1.前言

上篇博客我们介绍了Shell的常用命令,这次博客我们接着继续学习下一个章节:3.文本编译器Vim


2.本章学习目标

掌握vim的三种工作模式。

掌握一般模式下的快捷键。

掌握命令行模式下的快捷键。

熟悉Linux的文件救援和高级功能


Vim是一种命令行界面下的文本编辑器。在早期的Unix操作系统中都是使用vi作为系统默认的编辑器的。vim‌就是vi的升级版,vim和vi的区别在于,当我们在编辑一个文本的时候,文本内容在vi中显示为黑白色,而在vim中会显示彩色。此外,vim还能够进行诸如shell脚本,C语言源程序,JAVA等程序编辑功能,使用vim能帮助程序员更容易找出源程序中的语法错误,因此可以将vim视为一种程序编辑器。默认情况下,openEuler 22.03 LTS SP3(是一种国产的操作系统,它的下载和虚拟机的配置详见这个博主的文章 Linux系统应用之知识补充------OpenEuler(欧拉)的安装和基础配置-CSDN博客)支持vi和vim命令。

那么vim到底是怎么工作的呢?首先来了解一下vim的工作模式。vim的工作模式有三种,分别是一般模式(也称指令模式)、编辑模式和命令行模式。


3.vim的三种工作模式

3.1一般模式‌

一般模式有时也称为指令模式。当使用一条命令 vim filename 打开一个文件时,进入该文件就是一般模式了。

3.2编辑模式‌

在一般模式下,不可以修改文档字符,只能进入编辑模式后,才可以进行修改操作。那么,如何从一般模式切换到编辑模式呢?

可以按下"i、I、a、A、o、O"这6个键中的任意一个。此时,屏幕的最后一行会出现"-- 插入 --"字样,即进入了编辑模式。如果只需要进行替换操作,则可以按下"r"或者"R"键,此时屏幕的最后一行会出现"-- 替换 --"字样。

修改完毕,从编辑模式返回到一般模式,按一下键盘左上方的Esc键即可。

3.3命令行模式‌

在一般模式下,当输入 ":"(冒号),就进入了命令行模式。

vim 三种工作模式之间的转换关系如图3-1所示。

图3-1vim三种工作模式的转换关系图

4.运行vim

在终端中输入vim filename命令,然后按回车键,就进入vim的一般模式了。如果当前目录中存在这个文件,则打开该文件;如果不存在这个文件,则新建文件,因此,该命令无论什么时候都不会报错。

上面讲解了vim的3种工作模式以及它们之间的转换关系。下面举个简单的例子让大家加深印象,要求是使用vim命令创建一个文本文件test.txt,并在其中写入一段文字,然后进行保存,最后退出vim。


5.vim 不同工作模式下的常见命令

1到4只是讲解了vim的基本操作,但其实 vim 是全键盘式操作的编辑器,在各个模式下都有很多的功能键,只有掌握好了这些功能键,你才能成为真正的vim高手。下面将对3种模式下的功能键一一进行详细的讲解。

6.一般模式下的功能键

在一般模式下可以使用的功能键最多,可以分为三类:移动光标类,删除、复制和粘贴类,查找替换类

6.1移动光标类

一般模式下的移动光标类快捷键如图3-2所示。

6.2删除、复制和粘贴类

一般模式下的删除、复制和粘贴类快捷键如图3-3所示。

6.3查找替换类

一般模式下的查找和替换类快捷键如图3-4所示。

7.从一般模式进入编辑模式

从一般模式进入编辑模式,可以按下i,I,a,A,o,O, r,R这8个键中的任意一个,这8个键的意义是不一样的。其中,按下i,I,a,A,o,O时,窗口最下方将会出现"-- 插入 --"字样,按下R时,窗口最下方将会出现"-- 替换 --"字样。

从一般模式进入编辑模式的8个键的作用如图3-5所示。

8.命令行模式下的功能键

在一般模式下,输入":"将进入命令行模式。命令行模式下支持的功能有:保存文件,退出vim,读入外部文件,设置行号等。

命令行模式下的功能键如图3-6所示。

9.文件救援和高级功能

下边介绍vim中的文件救援‌和一些高级功能,诸如多窗口编辑‌、多文件编辑‌和块选择‌等。

10.文件救援

在使用vim编辑文件时,vim会在被编辑的文件所处的目录下,建立一个名称为.filename.swp的隐藏文件。如果系统突然断电,导致编辑的文件没有及时保存,这个时候.filename.swp就能够发挥救援的功能了。当再次使用命令vim filename打开文件时,将会弹出发现交换文件.filename.swp的警告信息。

本例在使用vim test.txt命令编辑文件后没有保存就退出了终端,再次使用vim test.txt命令时就弹出了如图3-7所示的警告信息。

在警告信息的界面下方,系统为用户提供了六个可用选项,各选项的说明如下。

  • [O]pen Read-Only 以只读方式打开

  • (E)dit anyway 直接编辑

  • (R)ecover 恢复

  • (D)elete it 删除交换文件

  • (Q)uit 退出

  • (A)bort 中止

如果需要救援未保存的文件,先按下R,再按下回车键,test.txt文件就恢复出来了。

但需要注意的是,文件.filename.swp需要用户手动删除。否则下次打开文件时,还会弹出同样的警告画面。

11.多窗口编辑

11.1单个文件分屏编辑

在使用vim test.txt编辑文件时,在一般模式下,输入":sp",然后按下回车键,会将该文件显示在两个窗口中,实现水平分屏的功能,如图3-8所示。

在使用vim test.txt编辑文件时,在一般模式下,输入":sp /etc/profile",然后按下回车键,会将文件profile显示在第一个窗口中,test.txt显示在第二个窗口中,实现不同文件水平分屏的功能,如图3-9所示。

11.2多个文件分屏编辑

多文件分屏编辑的命令格式及说明如下。

格式:

vim -On [FILE_1] [FILE_2] ...

vim -on [FILE_1] [FILE_2] ...

说明:

-O:垂直分割(vertical),不同窗口切换:【Ctrl】+w+←或者【Ctrl】+w+→

-o:水平分割(默认horizontal):【Ctrl】+w+ ↓或者【Ctrl】+w+ ↑

n:表示分几个屏,可缺省,默认按后面要分割的文件数来决定分几个屏

[FILE_1] [FILE_2] ...:需要分屏打开的文件

如果只打开2个文件,则重复按两次 【Ctrl】+w组合键即可切换窗口。

图3-10所示为使用vim --O test.txt /etc/passwd /etc/profile命令打开3个文件垂直分屏的界面。

11.3关闭分屏

要关闭其他的分屏时可以使用下面的命令。

(1)取消其他分屏,只保留当前分屏。

:only 或者 【Ctrl】+ w + o

(2)退出当前所在分屏。

:q

12.多文件编辑

在进行多文件编辑时,可以使用的命令如下。

格式: vim file1 file2 file3 ....

:n 编辑下一个文件(右侧)

:N 编辑上一个文件(左侧)

:files 列出目前vim 开启的所有文件

使用命令vim /etc/profile /etc/passwd /etc/hosts,在vim后面同时接3个文件来开启多文件同时编辑的功能,如图3-11所示。

13.块选择(Visual Block)

在使用vim编辑文件的时候,还可以选择某些字符、某些行或者以长方形的方式选择文件内容,然后将选中的文本删除或者复制。选择文本时可以使用的按键及说明如下。

  • v:字符选择,会将光标经过的地方反白选择。

  • V:行选择,会将光标经过的行反白选择。

  • [Ctrl]+v:区块选择,可以用长方形的方式选择资料。

  • y:将反白的地方复制起来。

  • d:将反白的地方删除掉。

  • p:将复制的内容粘贴。

打开/etc/hosts文件,按下【Ctrl】+v键,选择的长方形区域如图3-12所示。


14.总结

以上便是本篇博客的全部内容,希望对大家的学习有所帮助,当然还有很多的命令博主没有进行详细的实操和呈现,需要大家下边自己操作,当然值得一提的是博主暂时是依据学校的课本作为参考,后边博主再进行深入学习之后,会对博客进行优化和修改!请敬请期待!我们下一篇博客再见!

相关推荐
Cachel wood8 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Youkiup16 分钟前
【linux 常用命令】
linux·运维·服务器
qq_2975046120 分钟前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
weixin_4373982133 分钟前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~35 分钟前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程42 分钟前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
炫彩@之星1 小时前
Windows和Linux安全配置和加固
linux·windows·安全·系统安全配置和加固
hhhhhhh_hhhhhh_1 小时前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu
冷心笑看丽美人1 小时前
探秘 DNS 服务器:揭开域名解析的神秘面纱
linux·运维·服务器·dns
冬天vs不冷2 小时前
Linux用户与权限管理详解
linux·运维·chrome