vi与vim的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vi与vim的区别相关的知识,希望对你有一定的参考价值。
Vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs 并列成为类Unix系统 用户最喜欢的编辑器。
Vim的第一个版本由Bram Moolenaar 在1991年发布。最初的简称是Vi IMitation ,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码 方式下发行的自由
首先我们看一下文本
第一个vi编辑的内容
第二个我们看下vim的效果
Vim 具有6种基本模式和5种派生模式。
1.基本模式
(1)普通模式
在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是 Vim 启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
Vim 强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令 "dd" 删除当前行,但是第一个 "d" 的后面可以跟另外的移动命令来代替第二个 "d",比如用移动到下一行的 "j" 键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复 "dd" 两次),和 "dj" 的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高 效的进行文本编辑。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按 "a"(append/追加)键或者 "i"(insert/插入)键。
(2)插入模式
在这个模式中,大多数按键都会向文本缓冲 中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按 ESC 键回到普通模式。
(3)可视模式
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim 的"文本对象"也能和移动命令一样用在这个模式中。
(4)选择模式
这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim 会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
(5)命令行模式
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(":" 键),搜索("/" 和 "?" 键)或者过滤命令("!" 键)。在命令执行之后,Vim 返回到命令行模式之前的模式,通常是普通模式。
(6)Ex 模式
这和命令行模式比较相似,在使用 ":visual" 命令离开 Ex 模式前,可以一次执行多条命令。
2. 派生模式
(1)操作符等待模式
这个派生模式指普通模式中,执行一个操作命令后 Vim 等待一个"动作"来完成这个命令。Vim 也支持在操作符等待模式中使用"文本对象"作为动作,包括 "aw" 一个单词(a word)、"as" 一个句子(a sentence)、"ap" 一个段落(a paragraph)等等。
比如,在普通模式下 "d2as" 删除当前和下一个句子。在可视模式下 "apU" 把当前段落所有字母大写。
(2)插入普通模式
这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim 返回插入模式
(3)插入可视模式
这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim 返回插入模式。
(4)插入选择模式
通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim 返回插入模式。
(5) 替换模式
这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按 "R" 键进入。
其他
Evim
Evim 是一个特殊的GUI 模式用来尽量的表现的和"无模式"编辑器一样。编辑器自动进入并且停留在插入模式,用户只能通过菜单、鼠标和键盘控制键来对文本进行操作。可以在命令行下输入 "evim" 或者 "vim -y" 进入。在 Windows 下,通常也可以点击桌面上 Evim 的图标。
功能
概要
Vim 提供了文本形式的大量文档 。并且 Vim 为了能够快速找到问题的解决方案,提供了各种各样的功能。根据 Vim 自己的帮助文件语法,关键字 会被各种各样醒目的颜色表示出来。可以用快捷键 象在浏览器 中那样浏览帮助文件。在GUI 版的Vim中还可以使用鼠标 在 帮助文件中移动。方便用户寻找问题解决方案的功能还不止这些,其中最主要的是 ‘:helpgrep‘ 命令。使用这条命令,用户可以在所有帮助文件中搜索想要察看的内容,用‘:cwindows‘可以在另一个窗口中表示搜索的结果,根据搜索的结果自动在帮 助文件内跳转。使用Vim的帮助功能,更可以在搜索的结果中,继续进行搜索。
程序开发相关功能
Vim 是程序员 为了方便的编写程序而开发的编辑器 。Vim 具有可以让写代码的工作变得轻松愉快的各种各样功能。和集成开发环境 一样,Vim 具有可以配置成在编辑代码源文件之后直接进行编译 的功能。编译 出错的情况下,可以在另一个窗口中显示出错误。根据错误信息,直接跳转到正在编辑的源文件出错位置。代码高亮,文本折叠,上下文关联补完都是对程序员 特别有帮助的功能(参考 ‘:help quickfix‘)
文件比较
可以逐行的对文本文件进行比较。Vim 可以并排显示两个版本的文件,同时以各种各样的颜色来表示有差别部分。改变过、新增的或者是被删除的行会以颜色高亮来强调,没有改变过的部分则会被自动折叠表示。
对于已经在vim中打开的两个缓冲区,分别使用:diffthis 之后将会对这两个缓冲区的内容进行比较,被比较的缓冲区可以是一个尚未存盘的内存中的缓冲区。
在比较两个文件的不同之处时,可以用:diffget和:diffput命令对每一处不同进行双向的同步,也可以在比较不同时对内容进行其它编辑,然后用:diffupdate 对最新内容重新进行比较。
在浏览两个文件的不同之处时,可以用[c和]c两个Normal模式的命令直接跳转到上一个和下一个不同之处。
可以通过diffopt 等选项更精细地控制哪些区别被认为是真正的不同之处,比如可以设置比较时忽略空白字符数量的不同。
Unix 下可以用 vimdiff 命令来使用这个功能。
脚本语言
Vim 有她自己的脚本语言 ,使用脚本语言写成的宏 可以实现自动执行复杂的操作。用 -s 选项启动 Vim ,或者直接切换到宏 所在目录 使用 ‘:source‘ 命令都可以执行 Vim 脚本。Vim 的配置文件就可以作为 Vim 脚本的一个范例,Unix 和Linux 下配置文件名是.vimrc,Windows 下配置文件一般叫做 _vimrc。这个文件在启动 Vim 的时候被自动执行。Vim 脚本语言 可以使用 Vim 命令行 模式的所有命令 ,使用 ‘:normal‘ 命令还可以使用通常模式中的所有命令。Vim 脚本语言具有数字,字符串两种数据类型 。用数字代表布尔类型 ,0代表假,之外的数全代表真。最新的 Vim 7 更提供了列表 、关联数组 等高级数据结构 。Vim 脚本语言也拥有各种比较运算符 和算术运算符 。控制结构实现了 if分支 和 for/while 循环。用户还可以自己定义函数 ,并且可以使用超过100种的预定义函数 。编写成的脚本文件可以在调试模式中进行调试。
不足之处
它们都是多模式编辑器 ,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:
1、多级撤消
我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
2、易用性
vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
3、语法加亮
vim可以用不同的颜色来加亮你的代码。
4、可视化操作
就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
5、对vi的完全兼容
某些情况下,你可以把vim当成vi来使用。
本文出自 “啊凯” 博客,请务必保留此出处http://kaile.blog.51cto.com/12459560/1908111
以上是关于vi与vim的区别的主要内容,如果未能解决你的问题,请参考以下文章