• vi编辑器常用命令


      vi编辑器是Linux系统都会内置的文本编辑器,使用广泛。掌握vi编辑器的常见操作是使用Linux必备技能。

    vi工作模式

      vi包含三种模式,分别是命令模式、插入模式、命令行模式。这三种模式的作用分别是:

      命令模式:可以使用上、下左右按键来移动光标,可以删除字符或删除整行来处理文件内容,也可以使用复制、粘贴来处理文件数据。通常vi打开文件就直接进入入一般模式。

      插入模式:主要是编辑文件内容。

      命令行模式:主要是提供查找字符串、替换字符串、显示行号、保存或取消文件修改等操作。

      三种模式有不同的作用,他们是之间的切换关系如下:

      命令模式 <-> 插入模式:命令模式下输入i, I, o, O, a, A, r, R等任何一个字母后进入插入模式。按Esc返回命令模式

      命令模式 <-> 命令行模式:一把模式下输入:、/、?三个中的任何一个字符进入命令行模式。按Esc返回命令模式。

      插入模式 <-> 命令行模式:不能互转。只能通过切换到命令模式再进行切换。

      说明:命令模式可以和插入模式及命令行模式切换, 但插入模式与命令行模式间不能相互切换,只能通过命令模式中转切换。图示如下:

       命令模式切换到插入模式不同插入字符的区别:

    i 从目前光标所在处插入
    I 目前所在行的第一个非空格符处开始插入
    a 从光标所在的下一个字符处开始插入
    A 从光标所在行的最后一个字符处开始插入
    o 光标所在行的下一行插入新的一行。
    O 光标所在行的上一行插入新的一行。
    r 替换光标所在的那个字符一次
    R 一直替换光标所在的文字,直到按下Esc键为止。

    vi常用命令

      移动光标命令

    h或向左键(←) 光标向左移劢一个字符
    j或向下键(↓) 光标向下移劢一个字符
    k或向上键(↑) 光标向上移劢一个字符
    l或向右键(→) 光标向右移劢一个字符
    Ctrl+f 向下翻一页
    Ctrl+b 向上翻一页
    n<space> 按下数字n后再按空格键,光标向右移动这一行n个字符
    0 移动到这一行的最前面字符处
    $ 移动到这一行的最后面字符处
    G 移动到文件最后一行
    nG 移动到文件第n行
    gg 移动到文件第一行,相当于1G
    n<Enter> 向下移动n行

      查找字符串命令

    /word 向下查找字符串word。输入n,继续向下查找字符串word。输入N,向上查找字符串word(常用)
    ?word 向上查找字符串word。输入n,继续向上查找字符串word。输入N,向下查找字符串word(常用)

      替换字符串命令

    :n1,n2s/word1/word2/g 在第 n1和n2行之间查找word1字符串,并将该字符串替换为word2(常用)
    :1,$s/word1/word2/g 从第一行到最后一行查找找 word1 字符串,并将该字符串替换为word2(常用)
    :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串替换为word2,且在替换前显示提示字符给用户确认是否需要替换

      删除、复制与粘贴字符串命令

    x,X x为向后删除一个字符,X为向前删除一个字符(常用)
    nx n为数字,向后连续删除n个字符。
    dd  删除游标所在的那一整行(常用)
    ndd n为数字,删除光标所在的向下n行
    d1G  删除光标所在到第一行的所有数据
    dG  删除光标所在到最后一行的所有数据
    d$  删除游标所在处,到该行的最后一个字符
    d0  那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
    yy  复制游标所在的那一行(常用)
    nyy n 为数字。复制光标所在的向下n行
    y1G  复制光标所在行到第一行的所有数据
    yG  复制光标所在行到最后一行的所有数据
    y0  复制光标所在的那个字符到该行行首的所有数据
    y$  复制光标所在的那个字符到该行行尾的所有数据
    p, P p为将已复制的数据在光标下一行粘贴,P则为粘贴在游标上一行!
    J  将光标所在行与下一行癿数据结合成同一行
    u  复原前一个劢作(常用)

      显示行号命令

    :set nu  显示行号,设定后,会在每一行的前缀显示该行的行号
    :set nonu  取消行号显示

      保存或取消文件修改命令

    :wq  保存修改文件后退出(常用)
    :wq! 强制保存修改文件后退出,常用于文件为只读情况。
    :q  不保存文件退出(常用)
    :q!  强制退出不保存文件,常用于若修改过文件但又不想保存情况

    案例操作练习

      测试题目

    1、在/tmp目录下建立一个名为vitest的目录;
    2、迚入 vitest 这个目录当中;
    3、将 /etc/man.config 复制到本目录下
    4、使用vi打开man.config文件
    5、在vi中设定一下行号
    6、移动到第 58 行,向右移动 40 个字符
    7、移动到第一行,并且向下搜寻一下bzip2字符串
    8、接着下来,我要将 50100 行之间癿小写man字符串改为大写MAN字符串,并且一个一个挑选是否需要修改,如何操作?
    9、修改完后,突然反悔了,要全部复原,有哪些方法?
    10、我要复制 6573 这九行的内容,并且贴到最后一行之后
    11、第21到42行之间的开头为 # 符号的批注数据我不要了,要如何删除?
    12、移动到第27行,并且删除15个字符
    13、在第一行新增一行,该行内容输入I am a student
    14、保存文件修改后退出

      答案

    中括号中的内容为要操作的命令:
    1、[cd /tmp;mkdir vitest]
    2、[cd vitest]
    3、[cp /etc/man.config] .
    4、[vi man.config]
    5、输入[:set nu]
    6、按[Esc]切换到命令模式,先输入[58G]再输入[40→]
    7、先输入[1G]或[gg]后,再输入[/bzip2]
    8、输入[:50,100s/man/MAN/gc]
    9、(1)可以一直按[u]回复到原始状态,(2)使用不保存离开[:q!]后,再重新打开文件
    10、输入[65G]移动到第65行, 然后再输入[9yy]之后最后一行会出现复制九行的说明字样。按下[G]到最后一行,再按[p]粘贴!
    11、输入[21G]移动到第21行,再输入[22d]就删除22行
    12、输入[27G]移动到第27行,再输入[15x]即可删除15个字符
    13、输入[1G]移动第一行,然后输入大写字母[O]便新增一行且在插入模式;开始输入[I am a student]
    14、按下[Esc]切花到命令模式,输入[:wq]保存文件退出

    练习题

    1、vi打开文件后,要在第34行向右移动15个字符,如何操作?
    2、vi打开文件后,如何去到文件的页首或页尾?
    3、vi打开文件后,如何在光标所在行中,移动到行首或行尾?
    4、如何切换一般模式、命令行模式、编辑模式?
    5、如何删除一行、n 行,如何删除一个字符?
    6、如何复制一行、n 行并加以粘贴?
    7、如何查找string这个字符串?
    8、如何替换文件中所有的word1字符串成为word2?
    9、如何保存、退出、保存后退出、强制保存后退出文件?
    10、vi编辑文件做了很多修改后,如何还原成原来的文件内容?
    11、vi打开文件后,如何显示行号和取消行号?

     参考资料

      1、鸟哥Linux私房菜基础学习篇<第三版>,鸟哥 著

  • 相关阅读:
    Head of a Gang
    如何实现可以获取最小值的栈?
    多项式函数的极值点与拐点判别及个数公式
    解决Windows10下小娜无法搜索本地应用的问题
    Oracle中常用的语句
    [HTML]在页面中输出空格的几种方式
    [JavaScript]JS中的变量声明与有效域
    JAVA中时间格式转换
    Context initialization failed org.springframework.beans.factory.BeanCreationException
    Spring整合Mybatis SQL语句的输出
  • 原文地址:https://www.cnblogs.com/linyfeng/p/8025331.html
Copyright © 2020-2023  润新知