06_vim编辑器

为什么要使用vi和vim

vi和vim是最常用的文本编辑工具,就像Windows上的笔记本一样。在linux中修改任何文件,不管是nginx配置还是系统配置文件,都会用到vi和vim命令。

很多软件的编辑接口实际上调用的是vi。

vim是vi的高级版,操作更流畅还可以显示颜色等。linux默认可以使用vi,vim可能需要额外安装。

使用vi命令

使用vi + 文件名,就可以编辑一个文件了。vi命令有以下三个模式

  • 一般命令模式 command mode

    打开文件时默认进入的模式,可以进行光标移动、复制粘贴等

  • 编辑模式 insert mode

    摁下i,就进入编辑模式,可以进行修改和编辑;摁下esc,退出编辑模式回到一般命令模式

  • 命令行模式 command-line mode

    摁下: 就进入命令行模式,一般是执行保存

举例说明

# vi + 文件名进行编辑;如果文件不存在,就创建一个新文件
[root@node4 ~]# vi hello.txt

默认进入的是一般命令模式:

在这里插入图片描述

点击i进行输入,左下角有INSERT说明可以输入

在这里插入图片描述

摁下esc,然后输入:wq回车,进行保存

在这里插入图片描述

常用快捷键

在vi和vim命令中可用的快捷键非常多,以下只挑选几个常用的进行说明

  • 一般命令模式

    移动光标

    G移动到文件最后一行
    -向上移动到非空格的上一行
    数字+空格输入20然后空格,会移动到该行第20个字符处
    0移动到该行最左边
    end移动到这一行的最后
    gg移动到这个文件的第一行

    查找和替换:

    /keyword向后查找一个字符串
    ?keyword向上查找一个字符串
    :n1,ni2s/word1/word2/g在第n1行和n2行之间查找word1替换为word2

    复制黏贴:

    dd删除(剪切)光标所在的那一整行
    数字+dd删除(剪切)光标往下n行
    yy复制光标所在的一行
    数字+yy复制光标往下n行
    p和P小p是粘贴到光标所在的下一行;P则是上一行
    u恢复上一个操作
  • 编辑模式

    编辑模式没啥好说的,就是一般的编辑和修改。

  • 命令行模式

    :w保存
    :w!强制保存
    :q退出
    :wq!强制保存后退出,这是最常用的命令了
  • vim中的追加命令

    :set nu显示行号
    :set nonu取消行号显示

vim的缓存和恢复

使用vim时,会在当前目录建立一个filename.swp的文件。如果系统在此时意外关机了,那么借由这个swp文件,就可以恢复还未保存的内容。我们来模拟一下这个操作

# 编辑hello.txt文件
[root@node4 ~]# vim hello.txt 
# 按下ctrl + z ,此时vim会在后台继续执行
[1]+  已停止               vim hello.txt

接下来模拟系统中断

[root@node4 ~]# ls -al
总用量 88
-rw-r--r--   1 root root     7 48 20:10 hello.txt
-rw-r--r--   1 root root 12288 48 20:46 .hello.txt.swp
# 通过kill命令强行终止vim
[root@node4 ~]# kill -9 %1

[1]+  已停止               vim hello.txt
# 此时可以看到swp文件还是存在的
[root@node4 ~]# ls -al
总用量 88
-rw-r--r--   1 root root     7 48 20:10 hello.txt
-rw-r--r--   1 root root 12288 48 20:46 .hello.txt.swp

此时如果用vim继续编辑,就会有如下警告

E325: 注意
发现交换文件 ".hello.txt.swp"
            所有者: root    日期: Mon Apr  8 20:46:40 2024
            文件名: ~root/hello.txt
            修改过: 否
            用户名: root      主机名: node4
           进程 ID: 3619
正在打开文件 "hello.txt"
              日期: Mon Apr  8 20:10:50 2024

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    如果是这样,请用 ":recover""vim -r hello.txt"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".hello.txt.swp"
    以避免再看到此消息。

交换文件 ".hello.txt.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):

分别解释一下各个选项的意思

  1. 如果是多人在编辑同一个文件,让其他人退出,然后再操作
  2. 只读取文件内容不进行编辑的话,输入o
  3. 使用R恢复文件,然后需要手动删除swp文件,否则每次编辑都会有这个警告
  4. 如果确定不需要恢复,这个缓存时没用的,那么就按下D,删除缓存文件

vim的额外功能

如果你的系统还不能使用vim命令,可以使用如下命令进行安装

yum install vim

vim会对系统文件进行颜色显示,可以通过如下命令打开系统文件看下

vim /etc/profile

也可以试试输入:set nu显示行号

多文件编辑、多窗口

这些感觉不太常用所以略过

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot中注册Bean的方式汇总

文章目录 ComponentScan Componet相关注解BeanImportspring.factories总结Configuration和Component的主要区别?Bean是不是必须和Configuration一起使用?Import导入配置类有意义?出现异常:java.lang.NoClassDefFoundError: Could…

Scrapy框架spider类异常处理

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、捕获Request所有网络相关异常 在spider类中,我们构造Request对象或FormRequest对象时,可传递参数errback回调…

小米强硬表态!敦促智己公司立即道歉 不接受个人轻描淡写的非正式道歉

快科技4月9日消息,在智己L6的发布会上,小米SU7成了“主角”之一,方方面面进行了对标和暗讽。 甚至官方还将智己L6和小米SU7 Max的各项参数与价格直接对比,引起了不小关注。 小米强硬表态!敦促智己公司立即道歉 不接受…

electron打包Vue前端

Electron-Forge 打包Vue项目 效果:electronforge可将前端静态页面打包成.exe、.deb和.rpm等,能适配各种平台 示例:Windows环境下将前端 Vue 项目打包成exe文件 打包后的 exe 文件 运行 exe 文件 一、项目准备 开源项目 RouYi 下载 本…

【分布式事务与分库分表】

文章目录 🔊博主介绍🥤本文内容分布式事务介绍分布式事务解决方案1. 2PC(Two Phase Commit)方案2. JTA/XA规范实现3. Seata AT模式实现4. TCC实现使用hmily实现TCC Spring Cloud Alibaba项目中整合Seata来实现分布式事务管理1. **…

C语言面试题之环路检测

环路检测 实例要求 1、给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点;2、若环不存在,请返回NULL;3、如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在…

Java项目:基于Springboot+vue实现的中国陕西民俗前后台管理系统设计与实现(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue实现的中国陕西民俗管理系统设计与实现设 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界…

Docker 搭建私有镜像仓库

一、镜像仓库简介 Docker的镜像仓库是一个用于存储和管理Docker镜像的中央位置。镜像仓库的主要作用是提供一个集中的地方,让用户可以上传、下载、删除和共享Docker镜像。镜像仓库又可以分为公共镜像仓库和私有仓库镜像仓库: 公共镜像仓库 Docker Hub 是…

20240326-2-LightGBM面试题

LightGBM面试题 1. 简单介绍一下LightGBM? LightGBM是一个梯度 boosting 框架,使用基于学习算法的决策树。 它可以说是分布式的,高效的。 从 LightGBM 名字我们可以看出其是轻量级(Light)的梯度提升机(G…

从0到1实现RPC | 07a 更新pom依赖方式

当前工程目录进行编译时 mvn clean install,会报错。原因是 rpc-core和rpc-demo-api不是一个spring boot项目,没有启动类。 默认在根pom文件中引入了spring的parent,导致子模块都是web项目,所以需要更新pom文件。 在根目录的pom文…

直播系统的短视频直播源码,带有多功能后台系统的直播短视频平台 APP 源码。

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 此源码是一个直播系统,集直播、短视频等功能,根据市场趋势开发并推出思乐直播APP,APP功能丰富且可在后台管理系统进行配置,做到按需求来…

UE5、CesiumForUnreal实现建筑白模生长动画效果

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 具体代码2.3 应用测试3.参考资料1.实现目标 在上篇文章加载本地建筑轮廓GeoJson数据生成建筑白模的基础上,本文通过材质“顶点偏移”实现建筑白模生长效果,GIF动图如下所示: 2.实现过程 常用的实现建筑生长效果的方式有两种,…

随机潮流应对不确定性?计及分布式发电的配电系统随机潮流计算程序代码!

前言 随着分布式电源在电力系统中所占比例的不断扩大,研究分布式发电对系统稳态运行的影响势在必行。带分布式发电的潮流计算常常用来评估其并网后对系统的影响,同时它也是分析分布式发电对电网稳定性的影响等其他理论研究工作的基础。然而,许多分布式发…

Feature Pyramid Networks for object detection

FPN 总述1.引言2.相关工作3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 4. 应用用于 RPN用于 Fast R-CNN 核心代码复现FPN网络结构ResNet Bottleneck完整代码 总述 下图中,蓝色边框表示的是特征图,边框越粗表…

视频号带货真的能成为2024年赚钱的新风口吗?

随着互联网技术的飞速发展和消费者购物习惯的不断转变,视频号带货这一新兴商业模式逐渐走进大众视野。在短视频平台日益火爆的今天,很多人都在思考,视频号带货是否会成为2024年赚钱的新风口? 首先,视频号带货具备成为新风口的潜力…

【项目】棋海争锋

🎥 个人主页:Dikz12📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 项目介绍 WebSocket介绍 使用 项目创建 数据库设计 用户模块 登录接口 注册接口 获取用户信息接口 匹配模块 …

4.9学习总结

一.File类 (一).概述: File 类的对象代表操作系统的文件(文件、文件夹),File 类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功…

安卓四大组件——Service篇

1.作用 长时间位于后台(无界面)完成用户指定操作 1.1两类状态 (a)started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于sta…

7-15 计算圆周率

题目链接&#xff1a;7-15 计算圆周率 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <stdio.h>// 分子&#xff1a;阶乘 static unsigned long long int JieCheng (unsigned int n) {if (n 1) {return 1;} else {return n * JieCheng(n…

spring-cloud微服务负载均衡器ribbon

注意&#xff1a;2020年前SpringCloud是采用Ribbon作为负载均衡实现&#xff0c;但是在2020后采用了LoadBalancer替代&#xff0c;所以要查看springboot&#xff0c;springcloud&#xff0c;sprincloudalibaba的版本链接对应&#xff0c;Ribbon负载均衡都是在springboot版本2.4…