• Linux学习 - vi/vim编辑器


    Linux学习 - vi/vim编辑器

    ​ 在Linux的系统中使用文本编辑器来编辑Linux参数配置文件,是一件非常重要的事情。

    ​ 在Linux的世界中,绝大多数的配置文件都是以ASCII的纯文本文件形式存在,因此利用简单的文字编辑软件就能修改设置。

    ubuntu 安装vim

    ​ Linux默认自带vi,一般使用升级版vim。第一次使用需要安装vim

    sudo apt install vim
    
    • 1

    在这里插入图片描述

    vi/vim的重要性

    • 所有的UNIX-like系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在
    • 很多软件的编辑接口都会主动调用vi
    • vim具有程序编辑的能力,可以主动地以字体颜色辨别语法的正确性,方便程序设计
    • 程序简单,编辑速度快

    ​ 我们可以简单地将vim视作vi的高级版本,vim可以用颜色或下划线的方式来显示一些特殊的信息。例如,使用vim去编辑一个C语言程序的文件,或是shell脚本程序时,vim会根据文件的扩展名或是文件内的开头信息,判断该文件的内容而自动调用该程序的语法判断样式,再以颜色来显示程序代码与一般信息

    简而言之,vim是个程序编辑器,甚至一些Linux基础配置文件内的语法,都能够用vim来检查,vim是一个程序开发工具而不是文本处理软件。

    vi的使用

    ​ 基本上vi共分为3种模式,分别是一般命令模式编辑模式命令行模式

    一般命令模式(command mode)

    ​ 以vi打开一个文件就直接进入一般模式了(这是默认的模式,也简称为一般模式)。

    编辑模式(insert mode)

    ​ 在一般命令模式中可以进行删除,复制,粘贴等的操作,但是却无法编辑文件的内容。只有等你按下【i,l,o,O,a,A,r,R】等任何一个字母之后才会进入编辑模式。 需要注意的是,在Linux中,按下这些按键时,在界面的左下方会出现【INSERT】或【REPLACE】的字样,此时才可以进行编辑,而如果要回到一般命令模式时,则必须要按下【Esc】这个按键即可退出编辑模式。

    在这里插入图片描述

    命令行模式(command-line mode)

    在一般模式当中,输入【: / ?】三个中的任何一个按钮,就可以将光标移动到最下面那一行。 在这个模式当中,可以提供你【查询数据】的操作,而读取,保存,批量替换字符,退出vi,显示行号等的操作则是在此模式中完成。

    在这里插入图片描述

    3种模式的关系

    一般命令模式可与编辑模式及命令行模式切换,但编辑模式与命令行模式之间不可互相切换。

    在这里插入图片描述

    按键说明

    vi的三种模式只有一般命令模式可以与编辑,命令行模式切换,编辑模式与命令行模式之间并不能切换。

    第一部分:一般命令模式可用的功能按键说明,光标移动,复制粘贴,查找替换等

    移动光标的方法:

    按键说明
    h或向左箭头键光标向左移动一个字符
    j或向下箭头键光标向下移动一个字符
    k或向上箭头键光标向上移动一个字符
    l或向右箭头键光标向右移动一个字符
    [Ctrl] + [f]屏幕【向下】移动一页,相当于[Page Down]按键(常用)
    [Ctrl] + [b]屏幕【向上】移动一页,相当于[Page Up]按键(常用)
    0或功能键[Home]这是数字【0】:移动到这一行的最前面字符处(常用)
    $或功能键[End]移动到这一行的最后面字符(常用)
    G移动到这个文件的最后一行(常用)
    gg移动到这个文件的第一行,相当于1G(常用)
    n< Enter >n为数字,光标向下移动n行

    查找与替换:

    按键说明
    /word向光标之下寻找一个名称为word的字符串(常用)
    :n1,n2s/word1/word2/gn1与n2为数字,在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2(常用)
    :1,$s/word1/word2/g从第一行到最后一行寻找word1字符串,并将该字符串替换为word2(常用)
    :1,$s/word1/word2/gc从第一行到最后一行寻找word1字符串,并将该字符串替换为word2,并且在替换前显示
    提示字符给用户确认(confirm)是否需要替换(常用)

    删除,复制与粘贴:

    按键说明
    x与X在一行当中,x为向后删除一个字符(相当于[del]按键),X为向前删除一个字符(相当于
    [Backspace]即退格键)(常用)
    dd删除(剪切)光标所在的那一整行(常用)
    nddn为数字,删除(剪切)光标所在的向下n行(常用)
    yy复制光标所在的那一行(常用)
    nyyn为数字,复制光标所在的向下n行(常用)
    p与Pp为将已复制的数据在光标下一行粘贴,P则为贴在光标上一行(常用)
    u恢复前一个操作(常用)
    [Ctrl] + r重做上一个操作(常用)

    第二部分:一般命令模式切换到编辑模式可用的按键说明

    进入插入或替换的编辑模式:

    按键说明
    i与l进入插入模式(Insert mode):
    i为【从目前光标所在处插入】,I为【在目前所在行的第一个非空格符处开始插入】(常用)
    a与A进入插入模式(Insert mode):
    a为【从目前光标所在的下一个字符处开始插入】,A为【从光标所在行的最后一个字符处开始插入】(常用)
    o与O进入插入模式(Insert mode):
    o为【在目前光标所在的下一行插入新的一行】;O为【在目前光标所在处的上一行插入新的一行】(常用)
    r与R进入替换模式(Replace mode):
    r只会替换光标所在的那一个字符一次;R会一直替换光标所在的文字,直到按下Esc为止(常用)
    [Esc]退出编辑模式,回到一般命令模式中(常用)

    第三部分:一般命令模式切换到命令行模式的可用按键说明

    命令行模式的保存,退出等命令:

    按键说明
    :w将编辑的数据写入硬盘文件中(常用)
    :w!若文件属性为【只读】时,强制写入该文件
    :q退出vi(常用)
    :q!若曾修改过文件,又不想保存,使用!为强制退出不保存
    :wq保存后退出,若为:wq!则为强制保存后退出(常用)
    ZZ若文件没有修改,则不保存退出,若文件已经被修改过,则保存后退出
    :w [filename]将编辑的数据保存成另一个文件(类似另存新文件)
    :r [filename]在编辑的数据中,读入另一个文件的数据,亦即将【filename】这个文件内容加到光标所在行后面
    :n1,n2 w [filename]将n1到n2的内容保存为filename这个文件
    :set nu显示行号,设置之后,会在每一行的前缀显示该行的行号
    :set nonu与set nu相反,为取消行号
  • 相关阅读:
    Spring Boot自动加载
    c++千万数据级别正确使用无锁队列,避免内存撕碎(一)
    GraphQL入门与开源的GraphQL引擎Hasura体验
    羚数智能入选 IDC关于中国制造执行系统(MES)的市场2021年度份额报告
    STM32中I2C与EEPROM字写读写实现(硬件方式)
    晋江文学城PHP面试题(!带答案)
    器学习算法(六)基于天气数据集的XGBoost分类预测
    MySQL 行变列
    springboot 连接西门子plc,读取对应的值,并修改到数据库
    关于:Java8新特性函数式编程 - Lambda、Stream流、Optional
  • 原文地址:https://blog.csdn.net/weixin_51958878/article/details/126180745