目录

Vi、Vim与GVim的区别

Ch1 浅谈Vim

1.1 Vim的简介

1.2 Vim的模式

1.2.1 基本模式

1.2.2 衍生模式

1.3 Vim的功能

Ch2 Vi、Vim和GVim的关系

2.1 Vim的优点

2.2 GVim的优点


Vi、Vim与GVim的区别

Ch1 浅谈Vim

1.1 Vim的简介

        Vim,全称Vi IMproved(vi增强版的意思), 是一种程序员常用的工具。它是从 vi 发展出来的一个文本编辑器。编程的功能丰富,如:代码补全、编译及错误跳转等,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

        简单来说,其前身的 Vi 是老式的字处理器,Vi是一种著名的功能强大、高度可定制的文本编辑器。Vim在Vi的基础上改进和增加了很多特性,可以认为Vim是vi的升级版,是程序开发者的一项很好用的工具。 Vim 的官方网站 (welcome home : vim online) 也自称vim 是一个程序开发工具而不是文字处理软件。图3 为vim 键盘图。

1.2 Vim的模式

        从vi衍生出来的Vim具有多种模式。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成)或者鼠标输入。Vim和vi一样,仅仅通过键盘来在这些模式之中切换。这就使得Vim可以不用进行菜单或者鼠标操作,并且最小化组合键的操作。对文字录入员或者程序员可以大大增强速度和效率。

        Vim具有6种基本模式和5种衍生模式,不过实际用到的有以下四种模式。

模式情况
普通模式执行简单的指令,例如光标移动、文本删除、复制和粘贴。
可视模式一种只选择文本的模式。
插入模式实际输入文本的模式。
命令行模式打开文件,执行各种指令,例如搜索和替换。

其他模式:

  • 选择模式

    • 字符选择模式

    • 行选择模式

    • 矩形选择模式

  • 防爆模式

  • 操作员待机模式

  • 替换模式

    • 虚拟替换模式

  • (插入模式)

    • 插入正常模式

    • 插入视觉模式

    • 插入选择模式

  • (视觉模式)

    • 角色视觉模式

    • 线视觉模式

    • 矩形视觉模式

1.2.1 基本模式
  • 普通模式(normal)

            在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。其他模式以该模式启动。一种对所有操作都至关重要的重要模式。在另一种模式ESC下按Ctrl+[或Ctrl+c可进入此模式。如果您在操作过程中不知道自己处于哪种模式,ESC可以按切换到正常模式。

    键盘操作命令表达式功能
    jj向下移动光标
    kk向上移动光标
    hh向左移动光标
    ll向右移动光标
    d wdw删词
    y yyy一行复制
    Ctrl+f向下滚动一页

  • 插入模式(insert)

           在这个模式中,大多数按键都会向文本缓冲区中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。在正常模式下,您可以通过键入 iI等进入插入模式。

    键盘操作命令表达式功能
    ii在光标位置之前启动插入模式。
    II在行首启动插入模式。
    aa在光标位置之后开始插入模式。
    AA在行尾启动插入模式。
    oo在光标下插入一个空行并从头开始插入模式
    OO在光标上方插入一个空行并从头开始插入模式
  • 可视模式

           该模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的"文本对象"也能和移动命令一样用在这个模式中。

    键盘操作命令表达式功能
    vv切换到逐个字符的视觉模式
    VV切换到逐行可视化模式
    Ctrl+v切换到矩形选择视觉模式
    g vgv再次选择之前选择的范围
  • 选择模式

           这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。

          您可以g h使用以下方式从正常模式转换 g H此外,您可以在视觉模式下使用Ctrl+g移动 。

          在此模式下,“ --SELECT-- ”显示在命令行上。

  • 命令行模式

           在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":"键),搜索("/"和"?"键)或者过滤命令("!"键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

    键盘操作功能
    :在冒号后键入命令并⏎ Enter使用键执行。可用的补充功能。帮助文本:sort以冒号开头的文本编写,例如“”。
    /进行正向搜索。输入要搜索的字符串模式作为正则表达式,然后⏎ Enter使用键开始搜索。增量搜索是可能的。
    ?进行向后搜索。输入要搜索的字符串模式作为正则表达式,然后⏎ Enter用键开始搜索。增量搜索是可能的。
    !按外部命令过滤。输入要连续执行的命令字符串,⏎ Enter按 键开始执行命令。
  • Ex模式

    命令行模式的一种变体。它在以下几点与命令行模式不同。

    • 您不必每次都按(冒号)。

    • 执行命令后保持Ex模式。

    • 执行每个命令后屏幕不会更新。

    • 正常的命令行编辑功能不可用。

    • 我不会使用地图和缩写。

    从普通模式Q,您可以g Q切换到Ex模式。使用":visual"命令离开Ex模式。

1.2.2 衍生模式
  • 操作符等待模式

    这个派生模式指普通模式中,执行一个操作命令后Vim等待一个"动作"来完成这个命令。

  • 插入普通模式

    这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim返回插入模式。

    在此模式下,“ --(insert)-- ”会显示在命令行上。

  • 插入可视模式

    在插入模式下启动视觉选择时的模式。例如 Ctrl+o vCtrl+o VCtrl+o Ctrl+v进入此模式。

     在此模式下,命令行显示 “ --(插入)VISUAL -- ”。
  • 插入选择模式

    在插入模式下启动选择模式时的模式。

    通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim返回插入模式。

    在此模式下,命令行显示 “ --(插入)SELECT -- ”。

  • 替换模式

    这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按"R"键进入。当您键入字符时,字符会相应地被替换。按 Ctrl+[ 退出 。

1.3 Vim的功能

        Vim有许多有用的功能,可以与现代文件编辑器竞争,如Sublime Text,Atom,UltraEdit或jEdit。它们包括支持正则表达式的搜索,轻松重复命令的能力,直接记录和执行宏,自动完成,文件合并,鼠标集成,语法检查,语法高亮,分支撤消/重做历史,支持流行网络协议和文件存档格式等。

文本编辑功能

它具有文本编辑器的基本功能。

  • 多步撤销和重做

  • 复制(猛拉)并粘贴

  • 广泛的光标移动

  • 丰富的选取方式(选字、线选、矩形选取、段落选取)

  • 拼写检查

运算符和范围

        运算符是确定操作含义的键,例如复制( y:yank)、删除(d:delete)、更改(c:change)和选择( v:visual)。但是,仅此键并不能完成操作,通过执行此处指定范围的命令,可以进行删除单词、在括号内选择和复制段落等各种操作。

指定范围的命令包括移动键(h j k l ^ $等)和文本对象(iwi"a"a( )。

Vim 中,编辑是通过当场想出适当的运算符和范围命令组合并执行它们来完成的。

命令操作员量程规格
y$复制 (y)从光标位置到行尾 ( $)
daw删除 (d)光标下的字 ( a w)
ci"变化 ( c)"" i "包含在 ( ) 中的文本
vip选择 ( v)空行之间的整段 ( i p)

标记

        可以将标记添加到句子中的特定位置,并在移动光标时用作指南。

        如果您在正常模式下m输入 +(一个适当的字母字符) ,则会记住当前光标位置。

        如果在普通模式下`输入+(前面指定的一个字母字符) ,它会跳转到前面记忆的光标位置。

注册

        寄存器是一段文字的临时存放处,在概念上类似于剪切板,只是它有多个空格。一个空格分配给一个字母,"在正常模式下可以通过输入 +(一个适当的字母)来访问寄存器。例如" a y $,您可以从光标处猛拉(复制)到句末到寄存器 a 中," a p然后粘贴。

        宏是一种有用的功能,可用于记录动作并在不同的地方重复相同的动作。

        如果您在普通模式下q输入+(一个随机字母字符) ,它将处于录音状态,q并且您键入的键将被保存,直到您再次键入。

        您可以通过在正常模式下@输入 +(前面指定的字母表中的一个字母)来重播记录的操作 。

跳跃

        在 Vim 中,光标位置移动很多,经常在缓冲区之间移动。因此,光标位置的历史被存储。

        如果您想回到上一个光标位置,请在正常模式下按Ctrl+ o。如果您想后退,请按 Ctrl+i

        如果你预先用外部命令ctags创建了一个标签列表,当你想检查光标下的单词的含义或函数的定义时,可以通过按Ctrl+]跳转到定义源。这特别称为标签跳转。

缩进和制表符

        可为每种文件类型执行适当的自动换行(自动缩进)。默认情况下,Vim 支持 40 多种编程语言的自动换行。可以自动输入任意数量的空格(或制表符),并且可以通过稍后描述的突出显示功能可视化。:expandtab您还可以将 制表符批量转换为空格。

搜索/替换/排序

        可以搜索和替换缓冲区中的特定文本。可以突出显示与搜索相匹配的词。搜索词可以使用正则表达式,可以匹配复杂的文本。

  • 可以在正常模式下按 /?来搜索缓冲区中的单词 。

  • 可以在正常模式下按*#搜索光标下的单词 。

  • 可以通过在命令模式:s/OLD/NEW/下键入来用 NEW 替换 OLD 。

  • 可以通过在命令模式:sort下键入来逐行排序文本 。

补充

        如果在插入模式下按Ctrl+ n, Ctrl+ p,可以弹出并完成句子中的单词。即使在命令模式下也可以完成,即使函数名称模糊(:help wildmenu)也会给出建议。使用插件可以高度灵活地完成代码片段、时间、函数名称等。

文件管理

  • 保存时自动备份

  • 即使编辑器被杀死,您也可以从中断处继续编辑 ( :help swapfile, :help viminfo)。

语法高亮

        Vim 可以对大量语法进行颜色编码,默认超过 400 个。与其他文本编辑器相比,这个数字是迄今为止最好的。特别是在Vim中,由于编辑UNIX配置文件的情况比较多,所以/etc它下面的很多文件都用不同的颜色显示。此功能不仅在 gVim 中可用,而且在能够显示颜色的终端上也可用。

折叠

        它是程序员的支持功能之一,通过折叠长段落、功能等并紧凑地显示它们更容易概览。折叠方式有几种,可以自己指定范围折叠,也可以自动区分折叠。

多缓冲区、拆分窗口、标签页

        可以在一个 Vim 窗口中同时编辑多个文本。窗口可上下左右分割,随心所欲使用。您可以使用它在一侧显示文件树、显示 shell、显示帮助等。

Ch2 Vi、Vim和GVim的关系

        Vi的功能最少,Vim在Vi基础上增加众多特性和功能,后来,Vim加入了图形接口(GUI),于是乎,GVim诞生了!

        作为Linux上著名的文本编辑器,GVim是早年的Vi编辑器的加强版。GVim是Vim的图形前端,是一种跨平台的编辑器,基本上主流的操作系统上面都有它的版本。它可根据安装的平台自动选择相应语言包,支持中文及其各种编码,界面是中文的。

2.1 Vim的优点

  • 无需GUI即可工作

    如果你用ssh远程登录,用Vim,当然就不能用GVim了。

  • 屏幕轻松配合

    在 GVim 中,当您调用外部命令时,会打开 Dos 窗口(Windows 版),详细操作与使用终端时不同,因此很难使用 GVim。当需要用户输入时尤其困难。只有 Vim 可以在屏幕上工作。正统的方法是在另一个屏幕上执行外部命令的同时使用 Vim。

2.2 GVim的优点

  • 快速绘图

    由于终端还很旧,绘图基本上很慢,但 GVim 运行速度很快。尤其是 Mac 终端,画图好像很慢。

  • 全彩可用

    Windows 终端尤其糟糕,只允许 16 种颜色。某些功能仅在 GVim 中可用,例如下划线。在 256 色环境中使用 GVim 的 colorscheme 需要做很多工作,比如杂项设置。有关此设置的更多信息,

  • 易于设置

    如果没有一些神秘的设置,终端上的 Vim 可能无法工作。

  • 提供特殊键

    终端可以使用的键非常有限。

  • 可以同时打开多个GVim

    您只能使用终端上的屏幕或使用终端的选项卡功能。

  • 鼠标配合

    键盘人可能会称之为邪恶,但通过右键单击弹出菜单很方便。

  • 使用图标

    xpm 格式图标可用于错误。显示易于理解和方便。

  • 免费字体使用

           对于普通 Vim,字体受终端限制。在 GVim 中,您可以像 Emacs 一样自由地在英文和日文之间更改字体,更改字体大小。但是,不能在 Mac OS X 之外使用比例字体。请参阅以下 Hack,了解如何在 Mac OS X 上使用比例字体。

    本文资源来源于维基百科、百度和博客。后续将计划更新GVim的配置,以及GVim的使用。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐