zoukankan      html  css  js  c++  java
  • Linux编程简介——VI

    VI是Linux/Unix下标配的一个纯字符界面的文本编辑器。由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令。因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠标来得快,一旦熟练后用起来是有种非常流畅的感觉的,也有人因此而非常喜欢它。

    不管你喜欢也好,不喜欢也好,VI是Linux的标配编辑器,很多时候你也只有这一个编辑器可用,如果要做一个Linux Coder,熟悉VI还是非常有必要的。

    PS:由于VI的命令非常多,本文主要只介绍一些基础命令。并且就算是这些基础命令中,也有许多是不大常用的,我就把这些命令以灰色文字显示了,初学者可以不用太关注这些灰色命令。

    两种工作模式

    前面已经说过,由于VI没有图形界面,如翻页、移动光标、保存、退出等操作都必须借助键盘来完成。另外,VI还提供了大量快捷键来加速操作,因此,VI统的编辑模式下,还引入了一种新的工作模式——命令模式。

    • 编辑模式: 在此模式下,输入可见字符时和传统Windows环境下输入字符的功能相同。按Esc键可切换值命令模式。
    • 命令模式: 在此模式下,输入的可见字符对应的是命令。当插入命令执行后进入编辑模式。

    PS:有的文章中还列举了一种Last Line模式,这个可以算作一种特殊的命令模式,只不过命令会显示在最后一行,并且需要敲回车才能执行。这些命令通常以 :/?$ 等特殊字符开头。

    模式查询:要判断当前处于那种模式,可以通过最后一行(状态栏)来判断:如果处于编辑模式,则显示为如下两种状态。

                

    模式间的切换:在编辑模式下,通过Esc键可以进入命令模式;命令模式下,执行某些插入命令后进入编辑模式。如果你不知道当前处于那种模式下,按ESC进入命令模式按Insert进入编辑模式

    启动VI

    VI的启动参数有不少,但通常的使用方式如下:vi filename

    如果参数中的文件存在,则打开该文件,如果参数中的文件不存在,则会新建该文件(不是立即创建,而是在保存的时候创建)。

    插入文本

    刚进入VI时,是出于命令模式的,这是是无法输入文本的,因此需要进入插入模式。进入插入模式的命令有如下几个:

    • i    从目前光标所在之处插入文字
    • a    从目前光标所在下一个字符插入文字
    • o    往下插入一个空行
    • O    往上插入一个空行

    输入这几个命令后,就进入了编辑模式,可以通过屏幕下方最后一行看到当前为插入状态:

        

    可以通过Insert键切换插入状态和改写状态(和图像界面中一样)。

        

    另外,在命令模式下,也可以通过Insert键进入编辑模式(插入状态),不过通常还是前面介绍的四个命令来进入编辑模式。

    离开和保存文件

    在VI中,离开和保存文件对应的命令有这几个(使用前记得进入命令模式):

    • :w            保存
    • :w filename     另存为
    • :wq            保存并退出 [常用]
    • :q!            强制退出
    • SHIFT+zz        保存并退出,功能同:wq [常用]

    移动光标

    在VI中,移动光标并不是我们游戏中常用的WASD,而是hjkl,分别控制光标左、下、上、右移一格,分别分布在右手四个指头,新手需要一段时间来适应。使用非常频繁,需要熟练掌握。

    其它一些光标控制命令如下:

    • Ctrl+B:屏幕往后移动一页。
    • Ctrl+F:屏幕往前移动一页。
    • Ctrl+U:屏幕往后移动半页。
    • Ctrl+D:屏幕往前移动半页。
    • gg:移动文章的开头。
    • G:移动到文章的最后。
    • w:光标跳到下个word的开头。
    • e:光标跳到下个word的字尾。
    • b:光标回到上个word的开头。
    • $:移到光标所在行的行尾。
    • ^:移到该行第一个非空白的字符。
    • 0:移到该行的开头位置。
    • #:移到该行的第#个位置,例:51、121。

    另外,还有几个行操作相关命令集中介绍一下

    • :set nu        显示行号
    • :set nonu        隐藏行号
    • :#            移动到第#行,如:15
    • Ctrl+G:     在状态栏显示当前进度
    • #G:        移动到第#行,例:15G

    删除文字

    • x:删除光标所在位置的后面一个字符。
    • #x:例如,6x 表删除光标所在位置的后面6个字符。
    • X:大字的X,每按一次删除光标所在位置的前面一个字符。
    • #X:例如,20X 表删除光标所在位置的前面20个字符。
    • dd:删除光标所在行。
    • #dd:例如,6dd表删除从光标所在的该行往下数6行之文字。

    复制粘贴

    我个人并不是很习惯VI提供的复制粘贴,由于没有高亮选中,用起来感觉不是很方便。平时大都是用的终端工具的复制粘贴功能,因此这里的命令我都加灰了,感兴趣的可以看看。

    • yw:将光标所在处到字尾的字符复制到缓冲区中。
    • p:将缓冲区内的字符粘贴到光标所在位置(指令'yw'与'p必须搭配使用)。
    • yy:复制光标所在行。[超常用]
    • p:复制单行到您想粘贴之处。(指令'yy'与'p'必须搭配使用)
    • #yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
    • p: 复制多行到您想粘贴之处。(指令'#yy'与'p'必须搭配使用)
    • ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
    • ap:将放在buffer a的数据粘贴。
    • b3yy:将三行数据存入buffer b。
    • b3p:将存在buffer b的资料粘贴

    撤销和重做

    撤销和重做在任何编辑器里都是非常有用的命令:

    • u:假如您误操作一个指令,可以马上按u,回复到上一个操作。
    • .: 重复执行上一次的指令

    查找和替换

    查找和替换的语法笔记复杂,先简单的介绍一下查找的语法:

    • /pattern<Enter> :向下查找pattern匹配字符串
    • ?pattern<Enter> :向上查找pattern匹配字符串

    使用了查找命令之后,使用如下两个键快速查找:

    • n:按照同一方向继续查找
    • N:按照反方向查找

    至于替换的语法,限于篇幅所限,这里就不介绍了,给一个链接供大家参考一下:http://blog.csdn.net/lanxinju/article/details/5731843

    VI对编程的支持

    VI对编程还是提供了一定的支持的。例如,它是支持括号配对、语法高亮显示的。

    不过,由于并不支持语法解析功能,作为编码工具和专业的代码编辑器如SourceInsight、VisualStudio等比起来还是有很大差距的。个人感觉做小型项目和临时修改代码用还行,但做大型项目是有点力不从心的。

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/TianFang/p/2865159.html
Copyright © 2011-2022 走看看