Linux-7 文本编辑vivim

news2024/11/16 18:09:42

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/134173.html

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

相关文章

一名七年老安卓的 2022 总结

大家好,我是 shixin。一转眼到了 2022 的最后一天,今年发生了很多事,这篇文章来总结一下。长短期目标达成情况和去年一样,我的长期目标是成为具备创业能力的人,包括商业思维和全栈技术能力。总的来说,今年是…

STM32MP157驱动开发——USB设备驱动

STM32MP157驱动开发——USB设备驱动一、简介1.电气属性2.USB OTG3.STM32MP1 USB 接口简介4.Type-C 电气属性二、USB HOST 驱动开发1.USB HOST 驱动编写2.配置 PHY 控制器3.配置usbh_ehci三、USB HOST 测试1.鼠标键盘驱动使能2.U盘驱动四、USB OTG驱动开发1.USB OTG 控制器节点信…

系统设计实战一

文章目录前言一、服务幂等1.防止订单重复下单1.1 场景如下:当用户在提交订单的时候1.2 重复下单解决方案1.3案例一幂等性总结2 防止订单ABA问题2.1 场景如下:当在修改订单用户信息的时候发生服务器或者网络问题导致的重试2.2 ABA问题解决方案2.3 业务ABA…

Mac本地安装Mysql并配置

文章目录一、安装Mysql二、配置Mysql三、启动mysql四、SQL语法初步了解1.创建数据库2.建表3.查看表一、安装Mysql 笔者推荐采用安装包的方法安装Mysql,比较简单,适合新手。 首先在网上搜安装包: baidu按关键字搜即可:mysql mac安…

多兴趣向量重构用户向量

Re4: Learning to Re-contrast, Re-attend, Re-construct for Multi-interest Recommendation 论文地址:https://arxiv.org/pdf/2208.08011.pdf 一般的多兴趣建模过程是对用户序列进行编码,抽取出用户的多个兴趣向量,然后利用这些用户兴趣向…

【Vue中使用Echarts】echarts初体验

文章目录一、echarts简介二、初次体验echarts1.下载2.在vue中引入echarts①全局引入(代码)② 局部引入一、echarts简介 在大数据盛行的今天,数据可视化变得越来越广泛。而在前端工作中,数据可视化用得最多的,可能就是…

Usaco Training 刷怪旅 第三层 第四题 :Combination Lock

一个六年级博主写文章不容易,给个关注呗 (点赞也行啊) 本蒟蒻的bilibili账号 注:这种题当你看不懂的时候是可以把题目复制去洛谷看中文版的 Farmer Johns cows keep escaping from his farm and causing mischief. To try and pre…

如何通过 Python 与 ChatGPT 对话

文章目录简介安装 OpenAI API实例1预备条件: 1. 科学上网; 2. 注册 OpenAI 账号。 简介 ChatGPT 是 GPT-3 语言模型的变体,专为会话语言生成而设计。要在 Python 中使用 ChatGPT,您需要安装 OpenAI API 客户端并获取 API 密钥。当前提你需要…

前端工程师leetcode算法面试必备-二分搜索算法(中)

一、前言 二分搜索算法本身并不是特别复杂,核心点主要集中在: 有序数组:指的是一个递增或者递减的区间(特殊情况如:【852. 山脉数组的峰顶索引】); 中间数:用来确定搜索目标落在左…

Pytorch学习笔记①——anaconda和jupyter环境的安装(小白教程)

一、安装Pytorch 1、首先找到anaconda命令端并点击进入。 2、输入如下命令创建子空间(博主的命名是pytorch1.4.0,使用python3.6版本) conda create -n pytorch1.4.0 python3.6对于下载速度慢的话,首先需要进行换源,换…

FastJson不出网rce

BCEL ClassLoader去哪了 0x01 BCEL从哪里来 首先,BCEL究竟是什么?它为什么会出现在JDK中? BCEL的全名应该是Apache Commons BCEL,属于Apache Commons项目下的一个子项目。Apache Commons大家应该不陌生,反序列化最著…

05 RS485

什么是RS485? RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。 RS-485(目前称为EIA/TIA-485)是通信物理层的…

面试官:React怎么做性能优化

前言 最近一直在学习关于React方面的知识,并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式,将我在学习和开发(React)过程中遇到的问题记录下来。 这两天遇到了关于组件不必要的重复渲染问题,…

2022 年,我身上发生的几件大事

一晃2022互联网寒冬年就要结束了,在今年我的身上发生了好几件人生大事。因为这些事情对我的心态、思绪等产生了不同层次、不同方面的影响,所以很有必要做一次年终复盘。那么,接下来让我用拙略的写作手法,带大家走进我那特别的2022…

别等iPhone14了,苹果iPhone15变化很大

在去年的手机市场当中,苹果可以说是最大的赢家。因为去年iPhone13发布的时间段,恰好是高端旗舰的空档期,小米、OV在高端市场的销量表现一般,华为又没有能力发布新机,三星的Note系列在去年也暂停发布。所以不夸张的说&a…

SpringBoot整合ShardingJdbc实现数据库水平分表实战

(1)添加Maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

因果推断4--Causal ML(个人笔记)

目录 1 安装教程及官方文档 1.1 pip安装 1.2 API文档 1.3 代码仓库 2 Uplift模型与主要方法介绍 2.1 发放代金券 2.2 多treatment 2.3 实验方法 3 causalml.inference.tree module 3.1 UpliftTreeClassifier 3.2 UpliftRandomForestClassifier 3.3 CausalRandomFor…

sec7-可派生和非抽象类型

创建非抽象可派生类型比创建抽象类型更常见。本节介绍如何创建非抽象可派生类型对象。派生类型的例子是string的对象。它是TStr。它的子对象是一个数字字符串对象。数字字符串是表示数字的字符串。例如“0”、“-100”、“123.45”。子对象(数字字符串)将在下一节中解释。 我想…

前端框架搭建(九)搭建页面布局框架【vite】

## 1.创建目录BasicLayout——全局布局 components——布局组件 GlobalContent&#xff1a;全局内容GlobalHeader&#xff1a;全局头部页面 2.处理GlobalHeader 创建HeaderMenu——头部菜单 声明相关类型 在typings目录下创建system.d.ts declare namespace App {/** 全局…

Canadian Coding Competition(CCC) 2021 Junior 题解

目录 Problem J1: Boiling Water Problem J2: Silent Auction Problem J3: Secret Instructions Problem J4: Arranging Books Problem J5/S2: Modern Art Problem J1: Boiling Water Problem Description At sea level, atmospheric pressure is 100 kPa and water begi…