Linux-7 文本编辑vi/vim

news2024/12/22 23:06:24

Linux-7 文本编辑vi/vim

vim介绍

  1. 什么是vim?

    vi和vim是Linux下的一个文本编辑工具。(可以李姐为Windows的记事本或word文档)

  2. 为什么要使用vim?

    因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置(其实就是修改文件内容)。

    也就是说如果没有vi/vim,我们很多工作都无法完成。

    vim是学习Linux的最重要的命令之一。

  3. vi和vim有什么区别?

    vi和vim都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其他编辑功能几乎无差别,所以使用vi还是vim取决于个人习惯。(相当于Windows系统下的文本编辑软件记事本和notepad++的区别)

    因为前期最小化安装CentOS系统,所以默认情况下没有vim命令,但可以使用yum install vim -y安装

  4. 如何使用VIM编辑器?

    再使用vim之前,我们需要先介绍下vim的三种模式:普通模式、编辑模式、末行模式,每种模式分别支持多种不同的快捷键,要想高效率的操作文本,就必须先搞清这三种模式的操作区别,以及模式之间的切换方法。

    image-20230102151149694
  5. VIM模式三种模式介绍:

    1. 普通模式

      主要是控制光标的移动,可对文本进行复制,粘贴,删除等工作。使用vim filename编辑一个文件时,一进入该文件就是普通模式了。在这个模式下,可以进行光标移动,复制,删除,粘贴等操作

    2. 编辑模式

      主要进行文本内容编辑和修改。从普通模式进入编辑模式,只需你按一个键即可(i、I、a、A、o、O)。当进入编辑模式时,会再屏幕的最下一行出现“INSERT”标记;从编辑模式回到普通模式只需要按键盘左上方的ESC键即可。

    3. 末行模式

      主要用于保存或退出文本。在普通模式下,输入“:”或者 “/” 即可进入末行模式。在命令模式下,可进行的操作有,显示行号、搜索、替换、保存、退出。

    4. 小结:vim编辑打开文件整体流程如下:

      1. 默认打开文件处于普通模式
      2. 从普通模式切换编辑模式需要使用i、a、o
      3. 编辑模式修改完毕后需要先使用ESC返回普通模式
      4. 在普通模式输入“:”或者 “/” 进入末行模式,可实现文件的保存与退出。
      5. 在vim中,无法直接从编辑模式切换到末行模式

vim模式使用

  1. 普通模式

    #1.命令光标跳转
    G	#光标跳转至末端
    gg	#光标跳至顶端
    Ngg	#光标跳转至当前文件内的N行
    $	#光标跳转至当前光标所在行的尾部
    ^|0	#光标跳转至当前光标所在行的首部
    ----------------------------------
    #2.文件内容较多
    ctrl+f	#往下翻页(行比较多)
    ctrl+b	#网上翻页
    ----------------------------------
    #3.复制与粘贴
    yy	#复制当前光标所在的行
    5yy	#复制当前光标以及光标向下4行
    p(小写)	#粘贴至当前光标下一行
    p(大写)	#粘贴至当前光标上一行
    -----------------------------------
    #4.删除,粘贴,撤销
    dd	#删除当前光标所在的行
    4dd	#删除当前光标所在的行以及往下的3行
    dG	#删除当前光标以后的所有行
    D	#删除当前光标及光标以后的内容
    x	#删除当前光标标记往后的字符
    X	#删除当前光标标记往前的字符
    dd & p	#剪贴,先删除dd(number dd),后粘贴p
    u	#撤销上一次的操作
    ------------------------------------
    #5.替换
    r	#替换当前光标标记的单个字符
    R	#进入REPLACE模式,连续替换,ESC结束
    
  2. 编辑模式(从普通模式进入到编辑模式)

    i	#进入编辑模式,光标不做任何操作
    a	#进入编辑模式,将当前光标往后一位
    o	#进入编辑模式,并在当前光标下添加一行空白内容
    ---------------------------------------
    I	#进入编辑模式,并且光标会跳转至本行的头部
    A	#进入编辑模式,将光标移动至本行的尾部
    O	#进入编辑模式,并在当前光标上添加一行空白内容
    
  3. 末行模式:主要用于搜索、保存、退出文件

    #1.文件保存与退出
    :w	#保存当前状态
    :w!	#强制保存当前状态
    :q	#退出当前文档(文档必须保存才能退出)
    :q!	#强制退出文档不会修改当前内容
    :wq	#先保存,再退出
    :wq!#强制保存并退出
    :x	#先保存,再退出
    ZZ	#保存退出,shift+zz
    :number	#跳转至对应的行号
    ----------------------------------
    #2.文件内容查找
    /string	#需要搜索的内容(查找)
    n	#按搜索到的内容依次往下进行查找
    N	#按搜索到的内容依次往上进行查找
    ----------------------------------
    #3.文件内容替换
    :1 5s#sbin#test#g`	#替换1-5行中包含sbin的内容为test
    :%s#sbin#test#g		#替换整个文本文件中包含sbin的替换为test
    :%s#sbin#test#gc	#替换内容时提示是否需要替换
    ----------------------------------
    #4.文件内容另存
    :w /root/test.txt	#将所有内容另存为/root/test.txt文件中
    ----------------------------------
    #5.文件内容读入
    :r /etc/hosts	#读入/etc/hosts文件至当前光标下面
    :5r /etc/hosts	#指定插入/etc/hosts文件至当前文件的第五行下面
    
  4. 视图模式(从普通模式进入视图模式),主要进行批量操作

    ctrl+v	进入可视块模式,选中需要注释的行
    	1.插入:按shift+i进入编辑模式,输入#,结束按ESC键
    	2.删除:选中内容后,按x或者d键删除
    	3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容
    ---------------------------------------------------------
    shift+v 进入可视行模式,选中整行内容
    	1.复制:选中行内容后按y键即可复制
    	2.删除:选中行内容后按d键删除
    

VIM扩展知识

  1. 环境变量临时生效

    :set nu					#显示行号
    :set ic					#忽略大小写,在搜索的时候有用
    :set ai					#自动缩进
    :set list				#显示制表符(空行、tab键)
    :set no[nu|ic|ai...]	#取消临时设定的变量
    
  2. 环境变量永久生效。~/.vimrc 个人环境变量(优先级高) /etc/vimrc 全局环境变量

    # vim ~/.vimrc  #当下次再打开文件自动显示行号并忽略大小写
    set nu
    set ic
    
    #如果个人vim环境没有配置,则使用全局vim环境变量配置
    #如果个人vim环境和全局环境变量产生冲突,优先使用个人vim环境变量
    
  3. 如何同时编辑多个文件

    vim -o file1 file2	#水平分割
    vim -O file1 file2	#垂直分割
    
    #ctrl+w	文件间切换
    
  4. 相同文件之间差异对比,通常用于对比修改前后差异

    # diff	#文件对比
    # vimdiff	#以vim方式打开两个文件对比,高亮显示不同的内容
    
  5. 如果VIM非正常退出(ctrl+z)挂起或强制退出终端没关闭VIM后

    #假设打开filename文件被意外关闭,需要删除同文件名的.swp文件即可解决
    #rm -f .filename.swap
    

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

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

相关文章

网络安全——投票系统缺陷(靶场实战)

我们需要利用漏洞来把投票信息刷到第一位 我们可以利用 HTTP_X_FORWARDED_FOR 来进行获取伪造 我们再次进行投票的时候,我们抓取数据包的格式 我们采用上述方法进行伪造 增加变量,我们采用多IP攻击 选中247点击send to Intruder 选中247和1点击 add&…

基于Xlinx的时序分析与约束(8)----关于时序路径、时钟悲观度和建立时间/保持时间的一些问题

写在前面 最近研究vivado里的时序分析路径时,发现了3个很有意思的问题。经过一番查找资料后,总算把问题搞明白了,在这里分享给大家。 1、为什么同一条时序路径在报表里的值不一样? 在如下文件建立的工程中: module te…

Window10下配置Maxim SDK

参考网址: 微信(中文):【嵌入式AI开发&Maxim篇一】美信Maxim78000Evaluation Kit AI部署流程初探 GitHub:MaximAI_Documentation/MAX78000_Feather at master MaximIntegratedAI/MaximAI_Documentation 下载地址…

【回答问题】ChatGPT上线了!如何安装python-ipopt?python-ipopt有哪些用法?

如何安装python-ipopt? 要安装 python-ipopt,你需要先安装 Ipopt 库。这个库是用 C 编写的,所以你还需要安装一些 C 编译器。 在 Linux 系统上,你可以使用下面的命令来安装 Ipopt 和相关的依赖项: 复制 sudo apt-g…

excel成本统计:如何进行区域筛选,多条件求和?

最近有位小伙伴被一个计算产品成本的问题难住了,要求是根据配件成本核算出成品的成本。这个问题看上去似乎有点复杂,感觉一下子想不出好的解决办法,实际上,却非常简单,而且仅用常见的求和函数,就能轻松解决…

Mybatis源码分析(四)Mapper文件的解析

目录一 Mapper的使用二 MapperElement的解析三 解析cache-ref节点四 解析Cache节点五 解析ParameterMap节点六 解析ResultMap节点七 解析Sql节点八 处理各个数据库操作语句官网:mybatis – MyBatis 3 | 简介 参考书籍:《通用源码阅读指导书:M…

【每日一题】【LeetCode】【第一天】三数之和

三数之和的解决之路 题干表述 测试案列(部分) 第一次思路 这种其实是最暴力的,也是我脑海里第一个想到的最简单的方法了。 思路就是三个循环,一个循环去一个数,然后当三个下标不同,且对应的三个数相加为…

FPGA设计CPU书籍

一直以来CPU内部是绝大多数IT工程师难以触及的领域。纵使学习过计算机架构相关课程,自己动手实现CPU也始终遥不可及,因为这涉及计算机系统的最底层——芯片设计。 而近年来FPGA芯片产品的发展与普及打破了这一阻碍,利用内部电路可重编程的FPG…

【C++进阶】IO流

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

Docker进阶(中)

docker 进阶(中)docker提交镜像等命令docker 镜像原理docker 私有库&推送到私有库容器数据卷docker 安装常规软件docker提交镜像等命令 再这个谈这个docker 提交这个镜像之前我们先补充一下上一篇博客没有谈到的命令。再这里说一下。我们之前谈到的…

代码随想录算法训练营第六天 java :242.有效的字母异位词 349. 两个数组的交集 ,1. 两数之和

文章目录哈希表理论基础哈希碰撞: 拉链法和线性探测法线性探测法Leetcode242.有效的字母异位词题目链接思路AC代码Leetcode349. 两个数组的交集题目链接思路AC代码Leetcode 1. 两数之和题目链接思路与难点AC代码收获今日收获哈希表理论基础 哈希函数如下图所示&…

【C++】string (上)(string类的常用接口 string类对象的容量操作 string类对象的访问及遍历操作 string类对象的修改操作)

文章目录string标准库中的string类string类的常用接口string类对象的容量操作string类对象的访问及遍历操作string类对象的修改操作string string是一个专门管理字符数组的类。 标准库中的string类 string是表示字符串的字符串类该类的接口与常规容器的接口基本相同&#xff0…

计算机二级python考前复习笔记

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言程序设计风格:清晰第一,效率第二。结构化程序设计原则:自顶向下,逐步求精,模块化,限制使用goto语句(Python无 goto 语句&#xf…

【回答问题】ChatGPT上线了!SLAM有哪些模型实现代码/案例/github源码?推荐10个以上比较好的SLAM深度学习模型?

目录SLAM有哪些模型实现代码?SLAM有哪些模型实现案例?SLAM有哪些模型的github源码?推荐10个以上比较好的SLAM深度学习模型?推荐10个以上比较好的SLAM深度学习模型github源码?SLAM有哪些模型实现代码? SLAM…

阿里云云数据库RDS的基本使用(二十三)

文章目录1.查看RDS数据库的基本信息2.查看RDS数据库的连接地址3.创建数据库账号并配置白名单3.1.创建数据库连接账号3.2.将ECS服务器添加到RDS白名单3.3.在ECS中登陆RDS数据库4.查看RDS数据库的监控5.查看RDS服务可用性6.查看RDS数据库的日志在RDS实例列表中点击管理即可跳转到…

ubuntu20驱动双屏问题总结

一、环境 设备:拯救者R7000P 显卡:NVIDA GeForce RTX 2060 系统:windows10ubuntu20的双系统下 显示器:笔记本显示器arzopa便携式显示器(使用的type-c接口) 驱动:nvidia-driver-520 二、问题…

【GO】K8s 管理系统项目[API部分--Service]

K8s 管理系统项目[API部分–Service] 1. 接口实现 service/dataselector.go // service type serviceCell corev1.Servicefunc(s serviceCell) GetCreation() time.Time {return s.CreationTimestamp.Time }func(s serviceCell) GetName() string {return s.Name }2. servic…

【C++】-- 海量数据处理

目录 位图 位图概念的引入 位图的实现 实现功能 开辟bit空间 数据输入set 数据删除reset 数据确认test 代码汇总 容器位图的衍生使用 布隆过滤器 布隆过滤器提出 布隆过滤器概念 ​布隆过滤器的实现 布隆过滤器的删除 布隆过滤器的特点 ​布隆过滤器的误判率 …

【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)

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

计算机组成原理复习:计算机系统概述

1. 计算机系统概述 1.1 计算机系统的层次结构 (1) 硬件上,计算机系统可以分为五大功能部件: 运算器、控制器、存储器、输入设备、输出设备 将围绕其工作原理、逻辑实现、设计方法以及相互连接构成整机的方法展开 在典型的冯诺…