我对* NIX文本编辑器(目前从nano迁移到vim)有所了解,并且在Unix&Linux SE上浏览了一下之后,注意到在很多问题中使用vi代替了'vim'。我知道'vim'代表'Vi IMproved',考虑到这一点,我想知道为什么有人宁愿使用vi代替vim。 vi相对于vim有什么明显的优势吗?

编辑:我认为我的问题被曲解了。我知道,在大多数情况下,vim比vi更加强大和功能完善。我想知道的是,在任何情况下vi都比vim更具优势,例如更少的内存使用,* nix系统上的流行等。

评论

关于vi的好处是您可以期望它可以在每个POSIX兼容系统上使用。

实际上,Ubuntu标准安装包括vi而不是vim。Ubuntu是最用户友好的发行版之一;-)

@amyassin这是不正确的,像大多数Linux发行版一样,Ubuntu包含vim。 vi只是一个符号链接,最终会在默认安装中指向vim。

我的建议是:使用Vim,但使用vi的POSIX规范学习vi。这样,您不仅具有可移植的知识,而且知道Vim扩展。

@DDK您在我的声明中“最终”错过了。 “ ls -l / etc / alternatives / vi”->“ lrwxrwxrwx 1 root root 1月1日。2016年/ etc / alternatives / vi-> /usr/bin/vim.tiny”

#1 楼

vi也是POSIX标准编辑器。有很多实现,并且vim可能至少在Linux上是最受欢迎的。

虽然许多传统的,与Unix兼容的操作系统提供的vi实现与标准非常接近,但是vim增加了许多额外的功能,

当然,这些扩展通常旨在简化编辑过程并提供有用的功能。但是,一旦您习惯了其中的某些功能(不是语法着色等装饰性功能,而是那些改变了编辑器行为的修饰性功能),您就很容易忘记它们是特定的。并且使用其他实现,包括基于原始BSD代码的实现,可能会非常令人沮丧。反之亦然。

这与使用非POSIX bashisms的脚本所遇到的问题非常相似,而面对更多正统的shell实现(例如dashksh)。

#2 楼

没有vi相对于vim没有明显的优势,反之亦然。
Vim比Vim更具优势。
您可能会感兴趣:为什么,为什么## @是这样?傻瓜使用vi?

编辑还读:学习VIM是否值得付出努力?

评论


是的我不使用任何IDE,因为它们强迫您使用的编辑器不是Vim。

–基思
13年1月12日在7:51

@Keith我同时使用Xcode和Eclipse,但仍然只能使用vi进行编辑。

– ott--
13年1月12日在9:39

@Keith SlickEdit有一个很棒的Vim仿真,并且IDEA越来越接近它了。此外,Visual Studio具有ViEmu。

– demonkoryu
13年4月23日在13:50

IntellIJ还有一个很好的vim插件,它可以覆盖标准编辑器的行为。

– JulienD
2015年8月26日在6:59



#3 楼

在花了很大一部分时间(不包括童年)进行舒适的Vim编辑后,我仅使用vi就花了大约一个月的时间。这样,我
意识到我所有的文本修改都依赖于Vim
。在进行vi之旅之前,每当我不得不替换一些文本或对大文件组执行类似的操作时,只要在Vim中打开
文件并运行:bufdo命令,无论何时我必须缩进或格式化某些文件,我将在Vim中打开它们并使用Vim的=gw命令。我
依赖于Vim。在意识到vi没有这些命令之后,我被迫
sed执行批量文本转换,并学到了很多有关
awkindent等其他程序的知识。尽管最后我转回使用Vim
,但是我通过使用功能较弱的编辑器获得的知识
非常丰富,并且被证明是非常有用的。除了学习
文本编辑器之外的工具外,我还对vi有了更好的了解。
每当我在新系统或没有Vim的服务器上工作时,我都会感到
/>使用vi的感觉比一个月前的旅行要舒适得多。

上个月,我在便宜的WM8650平板电脑上安装了Linux,发现那里的性能明显不同在Vim和vi之间,所以我倾向于在平板电脑上使用vi


评论


我发现这是IT中的常见问题-帮助我们也可以掩盖我们本来可以更好学习的工具。

– danno
15年12月17日在17:11

实际上,使用Awk或Sed都无法移植完成对许多文件的就地文件编辑。 (两者的-i开关都是GNU扩展。)但是您可以将它们可移植地与*中的f一起使用。做printf'%s \ n''%!sed -e'\''some sed命令'\'x |前“ $ f”;做完了

–通配符
16年10月10日在12:38

#4 楼

如果没有vim,我将很难过日子,但我无法忍受vi。但是,学习前者至少会使您有一个想法,当后者可用时,如何处理后者。

默认情况下,vim接口实际上与vi非常接近。如果我正在使用vim的系统上工作,那么我要做的第一件事就是将这些东西添加到~/.vimrc中:

syntax enable
set nocp
set wildmenu


我还喜欢一堆其他东西-nowrap和编号等-但没关系。 “ syntax enable”仅打开基本语法高亮显示(更强大:filetype plugin on也是基本的); “ nocp”关闭了vi的兼容性,正是这开始使vim与旧的vi区别开来(例如,它启用了showmode,使整个体验更加人性化,因为您现在可以知道是使用命令还是〜INSERT了) 〜模式)。 “ wildmenu”仅在执行某些操作时为您提供水平完成菜单,这也使工作变得更加轻松。

vim的文本编辑功能首屈一指-除了emacs之外,我从未见过或听说有一个接近的软件。它们不容易学习,但是一旦您知道它们,它们的使用速度将比鼠标菜单快得多,并且比基于鼠标菜单的界面中的简单键宏替代品要动态得多。对于编程,有时我将vim与Eclipse等IDE一起使用,但我在vim中完成了大部分工作。

如果走那条路,哈哈,请看一下自动补全和标签列表插件。并提防阴暗面。

评论


我也总是添加set mouse = a。

– ott--
13年1月12日在16:36

关于您的编程注释,您可能会发现eclim有趣...

–ire_and_curses
13年2月4日在23:41

@ire_and_curses:还没有尝试过。 Eclipse和vim都监视源文件并允许它们在外部进行更新,并且从一个桌面切换到另一个桌面就是从一个桌面切换到另一个桌面。似乎很想法。

–金锁
13年2月5日,0:33



尽管我不认为这个答案应该是选择的答案(因为它是有偏见的),但正是这种观点类型有助于理解差异。感谢您的职位。

–geneorama
15年7月19日在17:24

#5 楼

好处是vi通常预装在企业UNIX(如AIX或Solaris)中。此外,在安装介质上无法访问vim。

#6 楼

这是Vim Koans的摘录:

Master Wq和Unix master

一个旧的Unix master来到了Master Wq。 “我很烦,Wq。您教Vim的方式。 vi是圣洁的,但Vim不是;它的代码无处不在,它的特点是可以存储内存;它的二进制文件很大,行为不一致。这不是Unix的方法。我担心你会误导学生。可以做什么?”

Wq大师点点头。 “你是对的,”他说。 “ Vim坏了。让我们修复它。我们可以开始吗?”

老Unix大师同意了,并打开了一个外壳。他键入:

$ vi vim.c


他开始编码。 Wq大师看了一会儿,然后问他:“您正在使用哪个vi的实现? Nvi? Vim?猫王?”

“我不知道,” Unix大师说。 “没关系。”

Wq大师点点头。 Unix大师震惊了片刻,并关闭了未保存的文档。

评论


哈哈...对我来说很有趣....深刻而有趣。感谢分享。

–丹·奥尔特加(Dan Ortega)
20年1月20日在21:25

#7 楼

正如前面的答案已经提到的那样,vi几乎包含了每个UNIX系统。

我只想添加一个示例。 Arch Linux是一个特别受欢迎且轻量级的发行版,默认情况下,安装程序或基本发行版都不随带vim,但是vi均随带。

这对vi本身不是一个优势,因为您只需简单地手动安装vim,在需要文本编辑器的安装中,您几乎不需要完成任何工作,对于预期的目的,vim优于vi的情况也没有。但是了解区别,并且vi比vim更普遍,更轻便,这确实给了它一些利基优势。

而且,为了全面起见,还没有人明确提到vi是vim的直接前身。 。 Vim被专门设计为vi所具有的一切,以及更多。

因此,以一种非常直接的方式,vim优于vi,因为它被设计为如此。

#8 楼

我已经注意到,当我复制和粘贴使用Vi命令的文本文档或配置文件时,仅选择VIM而不是cat。这是因为当我尝试ctrl-c然后ctrl-v进入VIM打开的文档时,它强制所有行在它们前面加一个注释。因此,当我使用Victrl-vpaste进入Vi打开的文档时,它会准确粘贴我复制的内容。除此之外,我整天都使用VIM

享受!

评论


尝试:设置粘贴

–帕特里克(Patrick)
13年1月18日在12:55

在.vimrc中设置pastetoggle = (vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste)

–戴夫
13年1月18日在20:01



#9 楼

在vim上使用vi的唯一原因是您别无选择。

vim代表“ vi有所改进”的原因有很多很多!

从a借用我回答过相关的文章:-


多个窗口-水平,垂直和制表符。
视觉突出显示。
通过:help命令提供在线帮助。
将宏记录到一个寄存器中,然后可以执行。
要撤消(和重做)多次,而不要像旧vi那样疯狂地撤消
切换。
命令行历史记录,搜索历史记录。
嵌入了完整的语言,并附带了许多可用的
功能,例如getcwd()
模式匹配大大扩展。
通过ctrl-P和ctrl-N完成单词的完成。
内置在文件导航器中(有点笨拙,但可能很有用)。
ESC键实际上退出了您尝试的命令,
逃避了,而不是像vi那样(疯狂地)运行它们。
/>可以通过bufdo,
argdo和windo在所有缓冲区,args或Windows上运行命令。


评论


您可能已经提出了在unix.stackexchange.com/a/425597/85039答案中提到的“许多很多”原因。那会使这个答案好一些;否则,它读起来更像是评论,而不是实际答案

– Sergiy Kolodyazhnyy
18年2月21日在6:12

点了。答案已更新,借鉴了我​​昨天做的一个相关答案。

– Paul T
18-2-23在0:31