zoukankan      html  css  js  c++  java
  • Linux命令(八)——vi编辑器的使用

    vi编辑器是linux系统下的标准正文编辑器,有三种基本模式:命令行模式、插入模式和底行命令模式。

    1.命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或底行命令模式下。

    2. 插入模式:只有在这个模式下,才可以做文字输入,按「ESC」键可回到命令行模式。 

    3.底行命令模式: 将文件保存或退出vi,也可以设置编辑环境,如查找字符串、列出行号等。

    一、三种模式的切换

    进入vi:vi  filename,刚进入vi编辑器时,处于命令行模式,如下图进行三种模式之间的切换:

    vi -r filename  //打开文件(恢复奔溃文件)编辑

    vi -R filename  //以只读的方式打开一个文件

    二、vi编辑器中的命令

    vi编辑器中的命令非常多,无需刻意记忆,只需多在练习中使用,增强熟练度,才能慢慢的把vi编辑器用好用熟练。

    1.命令行模式下的命令

    (1)光标移动命令

    h  左移光标一个字符

    l  右移光标一个字符

    k  光标上移一行

    j  光标下移一行

    ^  光标移动至行首

    0  数字“0”,光标移至文章的开头

    G  光标移至文章的最后

    $  光标移动至行尾

    (2)翻页组合键

    Ctrl+f  向前翻屏

    Ctrl+b  向后翻屏

    Ctrl+d  向前翻半屏

    Ctrl+u  向后翻半屏

    (3)命令模式下的编辑操作

    i  在光标位置前插入字符

    a  在光标所在位置的后一个字符开始增加

    o  插入新的一行,从行首开始输入

    ESC  从输入状态退至命令状态

    x  删除光标后面的字符

    nx  删除光标后的n个字符

    X (大写X)  删除光标前面的字符

    nX  删除光标前面的n个字符

    dd  删除光标所在的行

    ndd  删除光标所在行数后面的n行

    yw  复制光标所在位置的一个字

    nyw  复制光标所在位置的n个字

    yy  复制光标所在位置的一行

    nyy  复制光标所在行数后面的n行

    p  粘贴

    cw  更改光标所在位置的一个字

    ncw  更改光标所在位置的n个字

    (4)搜索关键字

    /关键字  向下搜索关键字

    ?关键字  向上搜索关键字

    n  继续进行同方向的搜索

    N  继续进行反方向的搜索

      搜索特殊字符(* ^ $ [ / |),在前面加转义字符

    (5)复原命令

      u  取消最近一次的操作

      U  把当前行恢复成被编辑之前的状态

    2.底行命令模式下的命令

    :wq  在命令模式下,执行存盘退出操作

    :w  在命令模式下,执行存盘操作

    :w!  在命令模式下,执行强制存盘操作

    :q  在命令模式下,执行退出vi操作

    :q!  在命令模式下,执行强制退出vi操作

    :e文件名  在命令模式下,打开并编辑指定名称的文件

    :n  在命令模式下,如果同时打开多个文件,则继续编辑下一个文件

    :f  在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例

    :set number  在命令模式下,用于在最左端显示行号

    :set nonumber  在命令模式下,用于在最左端不显示行号

    :20 <回车>  光标移到第20行的行首

      :/关键字/  向下搜索关键字

      :?关键字?  向上搜索关键字

      全局替换命令

      :! command  执行Shell命令

      :r ! command  读取Shell命令的输出内容并插入文本

      :recover  未正常退出时恢复原文件

    :set all  显示所有设置列表

    :set list  行结尾符显示$

    :set autoindent  正文自动缩进

    :set lines=24  设置默认缓冲显示行

    三、文本移动和编辑多个文件

    1.缓冲区方式的文本移动

    用户在用vi编辑器编辑文件时,是在临时编辑缓冲区中进行的。命名缓冲区是表示临时存储的缓存区,就如同windows中的复制和剪切,由字母a-z命名不同的命名缓冲区,可以将不同的内容复制或剪切到不同的命名缓冲区中,回到编辑缓冲区执行粘贴命令,到达文本的移动目的。

    (1)从编辑缓冲区到命名缓冲区(复制或剪切)

    命令格式:"字母名+行号+操作命令(Y,dd)

    (2)从命名缓冲区到编辑缓冲区(粘贴)

    命令格式:"字母名+操作命令(P,p)

    (3)删除缓冲区

    删除缓冲区可以由数字1-9指定,如"25dd,表示把光标所在行的下5行删除并放到2删除缓冲区里。用"2p再粘贴回去。

    2.按行操作的文本移动

    在底行命令模式下,执行按行操作文本移动。

    (1)按行复制(co命令)

      :1,3 co .  把1-3行文本复制到光标所在位置

      :1,3 co 7  把1-3行文本复制到第7行位置

    (2)文本块移动(m命令)

      :1,3 m 7  把1-3行文本移动到第7行的位置

    (3)文件间的文本移动(w命令)

      :2,5 w filename  把2-5行文本写到另一个新文件中

      :2,5 w >> filename  把2-5行文本追加到另一个文件中

    3.编辑多个文件

    vi filename1 filename2……  同时打开多个文件进行编辑

    :n  编辑下一个文件命令

    :e filename3  编辑指定文件

    :e #  返回刚才编辑的文件

  • 相关阅读:
    netty 解决TCP粘包与拆包问题(二)
    Socket通讯-Netty框架实现Java通讯
    SpringBoot集成Swagger,Postman,newman,jenkins自动化测试.
    Java Console/控制台 打印表格
    mysql控制台的一些技巧,显示,输入换行,语法正则等
    “妈妈,我不想学了”,你的回答改变孩子一生(怅然若失,说了一句话:“为什么当初没有人逼我?”。我不愿意学,你就不让我学啦!那时候我还小,我还不懂事,难道你也不懂事吗。要做成一件事,就必须有延迟满足的能力)
    “太子”显然沉稳不足,急于把大权抓在自己手里,做的第一件事居然是想尽一切办法铲除父亲在公司的亲信(我很久以来的疑惑,看了这段才明白,相比之下,经过玄武门之变的李世民仍然忍了裴寂三年时间是何等的聪明和了不起)
    如何分析和提高大型项目(C/C++)的编译速度?(VS2015特有的:/LTCG:incremental选项)
    Duilib学习之基础(一个SDK程序)
    使用 QWorker 做为计划任务引擎
  • 原文地址:https://www.cnblogs.com/wxywxy/p/7624442.html
Copyright © 2011-2022 走看看