美文网首页Linux学习
第三步:了解vim及vim的基础使用

第三步:了解vim及vim的基础使用

作者: 鎏殇痕 | 来源:发表于2020-07-13 21:28 被阅读0次

    vim 官方网站:https://www.vim.org/

    什么是vi

    首先,我们需要了解以下vi到底是什么东西?为什么要使用vi呢?

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

    上面,我们提到了vi、vim,这两个有什么区别呢?

    通俗一点来说,vim是vi的升级版。除了vi拥有的功能外,它还可以用颜色或者下划线的方式来显示一些特殊的信息。还有一点,涉及到shell脚本程序,vim会根据文件的\color{#FF0000}{扩展名}\color{#FF0000}{文件内的开头信息}判断文件内容自动调用该程序的语法判断样式,最终再以颜色来显示。这一点广泛应用于Linux中语法问题的检查

    可以说,vi就是一个文本编辑器,而vim则是程序编辑器

    vi的使用

    image.png
    • 一般命令模式(command mode)
      以 vi 打开一个文件就直接进入一般命令模式了\color{#FF0000}{默认模式}。在这个模式中,可以使用【上下左右】按键来移动光标,可以使用【删除、复制、粘贴】等操作来处理文件内容
    • 编辑模式(insert mode)
      在一般模式下可以进行删除、复制、粘贴等操作,却无法进行编辑,此时就需要按【i、I、o、O、a、A、r、R】任意一个字母进入编辑模式,此时左下方会出现【INSERT】或【REPLACE】字样,若想回到一般命令模式,按下【ESC】即可退出编辑模式
    • 命令行模式( command-line mode)
      在一般命令模式下,输入【:/ ?】三个中任何一个按钮,就可以将光标移动至最下面一行。在该模式当中,提供了【查询数据】的操作。通常在该模式下我们会进行读取、保存、批量替换字符、退出vi以及显示行号等操作

    vi/vim命令

    进入vi编辑器命令

    命令 作用
    vi filename 打开或者新建文件,并将光标置于第一行首
    vi +n filename 打开文件,并将光标置于第n行首
    vi + filename 打开文件,并将光标置于最后一行首
    vi +/pattern filename 打开文件,并将光标置于第一个与pattern相匹配的行行首
    vi -r filename 在上次正编辑时发生系统崩溃,恢复filename
    vi filename......filename 打开多个文件,进行依次编译

    移动光标的命令

    命令 作用
    [ctrl] + [f] 屏幕[向下]移动一页,相当于[Page Down]
    [ctrl] + [b] 屏幕[向上]移动一页,相当于[Page Up]
    [ctrl] + [d] 屏幕[向下]移动半页
    [ctrl] + [u] 屏幕[向上]移动半页
    + 光标移动到非空格符的下一行
    - 光标移动到非空格符的上一行
    n<space> 按下数字再按下<space>,光标会移动到这一行的第n个字符
    数字0或功能键[Home] 移动到这一行的最前面字符处
    $或功能键[End] 移动到这一行的最后面字符
    H (High)光标移动到这个屏幕最上面的一行的第一个字符处
    M (Middle)光标移动到这个屏幕中央的一行的第一个字符处
    L (Low)光标移动到这个屏幕最下面的一行的第一个字符处
    G 移动到这个文件的最后一行
    nG n为数字,移动到这个文件的第n行。可配合set nu使用
    gg 移动到这个文件的第一行,相当于1G
    n<Enter> n为数字,光标向下移动n行

    查找与替换命令

    命令 作用
    /test 向光标之下寻找一个名称为 test 的字符串
    ?test 向光标之上寻找一个字符串名称为word的字符串
    n 【重复前一个查找的操作】 如:前面执行/test向下查找test字符串,按下n会查找下一个名称为test的字符串
    N 【反向进行】 如:前面执行/test后,按下N会向上查找名称为test的字符串

    使用 /test 配合n和N同时使用,可以重复查找关键词
    :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为向后删除一个字符(相当于del),X为向前删除一个字符(相当于backspace)
    nx 连续向后删除n个字符
    dd 删除(带复制)光标所在的那一整行
    ndd 删除光标所在的向下n行
    d1G 删除光标所在到第一行的所有数据
    dG 删除光标所在到最后一行的所有数据
    d$ 删除光标所在处,到该行的最后一个字符
    d0 删除光标所在处,到该行的最前面一个字符
    yy 复制光标所在的那一行
    nyy 复制光标所在的向下n行
    y1G 复制光标所在行到第一行的所有数据
    yG 复制光标所在行到最后一行的所有数据
    y0 复制光标所在的那个字符到该行行首的所有数据
    y$ 复制光标所在的那个字符到该行行末的所有数据
    p或P p为将已复制的数据在光标下一行粘贴,P则为将已复制的数据粘贴在光标上一行
    J 将光标所在行与下一行数据结合成一行
    c 重复删除多个数据,例如向下删除10行,[10cj]
    u 恢复前一个操作
    [Ctrl] + r 重做上一个操作

    退出vi编辑器命令

    命令 作用
    :q 退出,在文件内容没有被改变时使用
    :q! 强制退出不保存,在改变文件后不想保存时使用
    :w [filename] 相当于[另存为],将编辑的数据保存成一个新的文件
    :r [filename] 在编辑的数据中,读入另一个文件的数据,即将[filename]文件内容加到光标所在行的后面
    :n1,n2 w [filename] 将n1到n2的内容保存为 filename 文件
    :wq 对vi编辑器中的文件进行保存并退出vi编辑器
    :wq! 强制退出保存在对只读文件编写时使用。注意,编辑只读文件必须使用

    vim环境的修改
    :noh | 取消高亮
    :set nu | 显示行号
    :set nonu | 取消行号

    案例练习

    1. 请在 /tmp 这个目录下建立一个名为 vitest 的目录;

    \color{#FF0000}{mkdir /tmp/vitest/}

    2. 进入 vitest 这个目录当中

    \color{#FF0000}{cd /tmp/vitest/}

    3. 将/etc/man_db.conf复制到本目录下(或在线获取)

    \color{#FF0000}{cp /etc/man_db.conf .}
    \color{#FF0000}{wget http://linux.vbird.org/linux_basic/0310vi/man_db.conf}

    4. 使用vi打开本目录下的 man_db.conf 文件,在 vi 中设置行号,移动到第43行,向右移动59个字符,请问你看到小括号内是哪个文字?

    \color{#FF0000}{vim man_db.conf}
    \color{#FF0000}{43G}
    \color{#FF0000}{59 + <space>}

    image.png

    5. 移动到第一行,并且向下查找一下【gzip】这个字符串,请问它在第几行?

    \color{#FF0000}{1G或者gg}
    \color{#FF0000}{/gzip}
    93行

    image.png

    6. 接着下来,要将29到41行之间的【小写man字符】改为【大写MAN字符】,并且一个一个是否要修改,如何执行命令?如果在确定过程中一直按【y】,结果会在最后一行出现改变了几个man?

    \color{#FF0000}{:29,41/man/MAN/gc}
    13个man

    image.png

    7. 修改完后,后悔了,如何恢复?

    \color{#FF0000}{按【u】恢复到原始状态}

    8. 复制66到71这6行的内容,并且粘贴到最后一行之后

    \color{#FF0000}{:66,71 y 或者 66G 6yy}
    \color{#FF0000}{【G】+【p】}

    9. 113行到128行之间的开头为#符号的注释数据我不要了,如何删除

    \color{#FF0000}{【113G】+ 【16d】 }

    10. 将这个文件另存成一个 man.test.config 的文件名

    \color{#FF0000}{:w man.test.config}

    11. 去到第25行,并且删除15个字符,结果出现的第一个单词是什么?

    \color{#FF0000}{【25G】+ 【15x】}
    tree

    12. 在第一行新增一行,该行内容输入【I am a student...】

    \color{#FF0000}{【1G】}
    \color{#FF0000}{【O】}
    \color{#FF0000}{I am a student...}

    13. 保存退出

    \color{#FF0000}{:wq}

    相关文章

      网友评论

        本文标题:第三步:了解vim及vim的基础使用

        本文链接:https://www.haomeiwen.com/subject/pskgcktx.html