zoukankan      html  css  js  c++  java
  • vi 和vim 的区别

    什么是 vim?

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
    简单的来说,vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
    vim 则可以说是程序开发者的一项很好用的工具。连vim的官方网站自己也说 vim 是一个程序开发工具而不是文字处理软件。

    vim的这些优势主要体现在以下几个方面:

    多级撤消

    我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。

    易用性

    vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。

    语法加亮

    vim可以用不同的颜色来加亮你的代码。

    可视化操作

    就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

    对vi的完全兼容

    某些情况下,你可以把vim当成vi来使用。

    vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。

    vi有3个模式:插入模式、命令模式、低行模式。

    插入模式:在此模式下可以输入字符,按ESC将回到命令模式。 
    命令模式:可以移动光标、删除字符等。 
    低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

    vim一共有4个模式:
    正常模式 (Normal-mode) 
    插入模式 (Insert-mode)
    命令模式 (Command-mode)
    可视模式 (Visual-mode)

    命令行模式 (command mode/一般模式)

      任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。 
      在该模式下,用户可以输入各种合法的Vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的Vi命令,则Vi在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。

    文本输入模式 (input mode/编辑模式)

      在命令模式下输入插入命令i(insert)、附加命令a (append)、打开命令o(open)、修改命令c(change)、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按"ESC"键即可。

    末行模式 (last line mode/指令列命令模式)

      末行模式也称ex转义模式。 
      Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

    打开文件、保存、关闭文件(vi命令模式下使用)

    vi filename //打开filename文件 
    :w //保存文件 
    :w vpser.net //保存至vpser.net文件 
    :q //退出编辑器,如果文件已修改请使用下面的命令 
    :q! //退出编辑器,且不保存 
    :wq //退出编辑器,且保存文件

    插入文本或行(vi命令模式下使用,执行下面命令后将进入插入模式,按ESC键可退出插入模式)

    a      //在当前光标位置的右边添加文本 
    i      //在当前光标位置的左边添加文本 
    A     //在当前行的末尾位置添加文本 
    I      //在当前行的开始处添加文本(非空字符的行首) 
    O     //在当前行的上面新建一行 
    o     //在当前行的下面新建一行 
    R    //替换(覆盖)当前光标位置及后面的若干文本 
    J    //合并光标所在行及下一行为一行(依然在命令模式)

  • 相关阅读:
    MongoDB 处理jumbo chunks警告信息
    MongoDB 3.0挂起原因? WiredTiger实现:一个LRU cache深坑引发的分析
    python3中字符串、整数互转以及转二进制(MAC地址IP地址转二进制方法)
    MongoDB 批量插入避免唯一值重复停掉问题
    MongoDB 3.6用户白名单(转载)
    MongoDB中WiredTiger的数据可用性设置
    Mongodb 新版配置文件详解(转载)
    MongoDB 启动后告警
    MongoDB 安装部署需求(官方文档)
    golang中defer的些许总结
  • 原文地址:https://www.cnblogs.com/destiny0991/p/12539243.html
Copyright © 2011-2022 走看看