• Linux(五):Linux的文档编辑器Vi


    什么是Vi

      我们使用Windows的时候,记录或者存储信息,一般都是txt文本编辑,记事本,word文档等等,进行编程的时候,使用idea,eclipse等等,但是在Linux中,就比较直接了,不论你是记录信息,还是编程,它只要一个编辑器就够了!这个编辑器就是Vim,

      Vim 是一个基于文本界面的编辑工具,使用简单且功能强大。更重要的是,Vim 是所有 Linux 发行版本默认的文本编辑器。很多人习惯将 Vim 称为 Vi,其实 Vim 是 Vi 的增强版(在 Vi 的基础上增加了正则表达式的查找、多窗口的编辑等功能),使用 Vim 进行程序开发会更加方便。

    Vi的安装

    众多 Linux 发行版系统,通常都已经默认安装好了 vi 或 Vim 文本编辑器,建议使用 Vim。如果在命令行模式下输入“vim”,输出结果为“Command not found”,则表示此系统中未安装 Vim。

    CentOS 系统中,使用如下命令即可安装 Vim:

    yum install vim

    Vi的三种工作模式

    Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,我们便使用文本编辑器 Vim,使用 Vim 编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和编辑模式,这 3 种工作模式可随意切换

    Vim的命令模式

      使用 Vim 编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替

    换、删除等操作。

    Vim的输入模式

    在输入模式下,Vim 可以对文件执行写操作,类似于在 Windows 系统的文档中输入内容。
    使 Vim 进行输入模式的方式是在命令模式状态下输入 i、I、a、A、o、O 等插入命令(各指令的具体功能如表 3 所示),当编辑文件完成后按 Esc 键即可返回命令模式。

    各插入命令的具体功能
    快捷键 功能描述
    i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
    o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
    a 在当前光标所在位置之后插入随后输入的文本
    A 在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行a命令
     

     

    Vim 的编辑模式

    编辑模式用于对文件中的指定内容执行保存、查找或替换等操作。
    使 Vim 切换到编辑模式的方法是在命令模式状态下按“:”键,此时 Vim 窗口的左下方出现一个“:”符号,这是就可以输入相关指令进行操作了。

    指令执行后 Vim 会自动返回命令模式。如想直接返回命令模式,按 Esc 即可。

    Vi的基本操作

    Vim 打开文件

    使用 Vim 打开文件很简单,例如在命令行模式下打开一个自己编写的文件 /test/vi.test,打开方法如下:

    [root@testuser ~]# vim /test/vi.test

    刚打开文件时 Vim 处于命令模式,此时文件的下方会显示文件的一些信息,包括文件的总行数和字符数,以及当前光标所在的位置等,此时可以使用插入命令(按 i 键)进入输入模式对文件进行编辑,如图 所示。

    除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式:

     Vim 打开文件的快捷方法
    Vi 使用的选项说 明
    vim filename 打开或新建一个文件,并将光标置于第一行的首部
    vim -r filename 恢复上次 vim 打开时崩溃的文件
    vim -R filename 把指定的文件以只读方式放入 Vim 编辑器中
    vim + filename 打开文件,并将光标置于最后一行的首部
    vi +n filename 打开文件,并将光标置于第 n 行的首部
    vi +/pattern filename 打幵文件,并将光标置于第一个与 pattern 匹配的位置
    vi -c command filename 在对文件进行编辑前,先执行指定的命令

     

     

    使用 Vim 进行编辑

    Vim 插入文本

    从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a 等键来完成,使用不同的键,光标所处的位置不同,具体如下图:

     插入文本
    快捷键功能描述
    i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
    I 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
    o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
    O(大写) 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
    a 在当前光标所在位置之后插入随后输入的文本
    A 在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令

     

    Vim 查找文本

     Vim 查找目标文本
    快捷键功能描述
    /abc 从光标所在位置向前查找字符串 abc
    /^abc 查找以 abc 为行首的行
    /abc$ 查找以 abc 为行尾的行
    ?abc 从光标所在为主向后查找字符串 abc
    n 向同一方向重复上次的查找指令
    N 向相反方向重复上次的查找指定

     如果在文件中并没有找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示。

    在查找过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会得到不同的结果。如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。

    Vim 替换文本

     Vim替换文本
    快捷键功能描述
    r 替换光标所在位置的字符
    R 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
    :s/a1/a2/g 将当前光标所在行中的所有 a1 用 a2 替换
    :n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换
    :g/a1/a2/g 将文件中所有的 a1 都用 a2 替换

     例如,要将某文件中所有的 "root" 替换为 "liudehua",则有两种输入命令,分别为:

    :1, $s/root/liudehua/g

    :%s/root/liudehua/g

    Vim删除文本

    Vim 删除文本快捷键
    快捷键 功能描述
    x 删除光标所在位置的字符
    dd 删除光标所在行
    ndd 删除当前行(包括此行)后 n 行文本
    dG 删除光标所在行一直到文件末尾的所有内容
    D 删除光标位置到行尾的内容
    :a1,a2d 函数从 a1 行到 a2 行的文本内容

    注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。

    Vim复制和粘贴文本

     Vim 复制文本
    快捷键 功能描述
    p 将剪贴板中的内容粘贴到光标后
    P(大写) 将剪贴板中的内容粘贴到光标前
    y 复制已选中的文本到剪贴板
    yy 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
    yw 将光标位置的单词复制到剪贴板

     

    Vim 保存退出文本

    Vim 的保存和退出是在编辑模式中进行的(按Esc之后输入下列命令),其常用命令如下表所示:

     Vim 常用保存退出命令
    命令功能描述
    :wq 保存并退出 Vim 编辑器
    :wq! 保存并强制退出 Vim 编辑器
    :q 不保存就退出 Vim 编辑器
    :q! 不保存,且强制退出 Vim 编辑器
    :w 保存但是不退出 Vim 编辑器
    :w! 强制保存文本
    :w filename 另存到 filename 文件
    x! 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令
    ZZ 直接退出 Vim 编辑器

     需要注意的是,"w!" 和 "wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行

  • 相关阅读:
    Educational Codeforces Round 23 D. Imbalanced Array(单调栈)
    hdu 4355 Party All the Time(三分)
    Educational Codeforces Round 21 F. Card Game(网络流之最大点权独立集)
    qscoj Round 1(div 2)
    玲珑杯 ACM Round #10
    hihoCoder #27
    Codeforces Round #396(div 2)
    高数A(下)第九章
    Mutual Training for Wannafly Union #5
    寒假集训补完
  • 原文地址:https://www.cnblogs.com/TheGCC/p/14278364.html
Copyright © 2020-2023  润新知