这并不意味着巨魔或烈焰或类似的东西.几个月以来我一直在使用Vim作为我的控制台编辑器(在我的终端中编辑配置文件),但我认为我不能忍受我的正常,每天编写Web应用程序的工作我使用GUI文本编辑器(哪一个不重要).
我觉得我的GUI文本编辑器可以完成我工作所需的一切.它有一个像样的搜索/替换与两者的自动完成历史.它具有语法高亮,行编号,选项卡式界面,易于复制和粘贴等.我当前编辑器唯一缺少的是正则表达式匹配,但是有很多GUI文本编辑器可以进行正则表达式搜索/替换.
鉴于我刚才所说的,除了安装在每台计算机上的事实之外,Vim(甚至Emacs)对GUI文本编辑器的生产力优势.我希望在Vim/Emacs上更好/更快的特定任务,或者现有GUI文本编辑器无法实现的特定任务.
对于Vim:
与大多数编辑器相比,Vim与其他工具(shell命令,脚本,编译器,版本控制系统,ctags等)的集成更好.即使是:.!
将命令的输出传递到缓冲区这样简单的东西,也是大多数GUI编辑器都找不到的东西.
选项卡式界面不如Vim/Emacs为您提供的"窗口"界面好.您可以同时并排查看两个或多个文件.您在屏幕上看到的越多,您就越能放松思考问题,而不是对变量名称和功能签名进行心理记录.
不要低估Vim正则表达式的强大功能.有许多特定于Vim的扩展来匹配特定的列,标记,光标位置,某些字符类(关键字,标识符)等.
集成diff
和grep
(独立于平台,因此每次更换计算机时都无需下载和学习新工具).
视觉块模式(编辑列)是许多编辑所缺乏的,但我不能没有.我在工作中使用这个让我感到震惊和敬畏,在一些按键中进行一些编辑,否则有人会花十分钟手动做.
多个复制/粘贴寄存器.如果你只有一个,你最终会经历奇怪的扭曲,以避免破坏剪贴板.你不应该这样做.
Vim的撤销/重做系统是无与伦比的.键入内容,撤消,键入其他内容,您仍然可以取回键入的第一个内容,因为Vim使用撤消树而不是堆栈.在几乎所有其他程序中,您输入的第一件事的历史在这种情况下都会丢失.
在Vim中移动,复制,粘贴和删除文本非常快.命令很简单,单个按键和可组合.将所有时间加起来进行仔细,费力的鼠标高亮显示和Ctrl-X,然后将其全部替换为da(
(删除一组匹配的parens及其中的所有内容).它比你想象的节省更多的时间
小事情,比如*
在光标下搜索单词,或者.
重复命令,或者%
在开始和结束之间反弹.这些方式太多了.
内置脚本语言和强大的键映射和宏功能,因此编辑器可以以您需要的任何方式进行扩展.已编写并可下载的大量脚本.
如果你仔细观察,你会发现即使是其他编辑也有的功能,Vim通常会做得更好.所有编辑器都有语法高亮,但Vim在阳光下几乎每种文件格式都有一个语法文件,通常有很多配置选项,编写自己的文件非常简单.许多编辑器处理不同的文件编码OK,但是Vim为您提供了非常具体和简单的方法来设置文件编码并在它们之间进行转换.关于Vim给我留下深刻印象的第一件事就是它与我当时遇到的其他编辑器相比,它是如何完美地处理标签/空格缩进选项和Unix/DOS换行符的.
其中许多要点同样适用于Emacs(以不同但通常同样强大的方式).
(vim是我的毒药;我确信emacs会提供类似的收益)
最大的收获:不需要触摸鼠标.
对我来说,最方便的事情就是跳到特定字母或字母组合之前(或之前),或者通过几次按键跳回来.通过相同的条件向前跳两次或十次,只需要用数字作为前缀.
如果你要重复编辑,你会跳到那个地方(2-3次击键),然后点击"." 重复上一次编辑.向前(或向后)跳跃更容易 - 一次击键 - 如果它是相同的搜索条件.
基本上,只需很短的准备时间,您就可以学习十到二十个键盘快捷键,这意味着您无需继续转动手来抓住鼠标.如果你不得不继续抓住鼠标,那么你可以获得三到四倍的编辑动作/命令.
几天后
,当你在GUI编辑器中时,每当你必须触及鼠标(或者击中15次)时,你会发现自己变得脾气暴躁.
我总是想知道为什么很少有人对Vim抱怨.观看Vim power user的视频:
https://www.youtube.com/watch?v=FcpQ7koECgk
如果您当前的编辑器可以完成他正在做的事情,则无需切换!:)
另请阅读http://www.viemu.com/a-why-vi-vim.html
观看视频并阅读该文章后,我别无选择,只能开始学习VIM.我换了VIM差不多一年了,我无法想象还有其他东西.
我认为专用文本编辑器的真正功能之一是宏编辑.对于很多程序员来说,重复是痛苦的,编写适当的宏可能会让人感到有趣.如果您没有通过键盘执行所有操作,则创建宏将需要一组额外的命令,而不是使用您已使用的命令.
我对vi keybindings不称职,但我更喜欢整体Emacs.这些编辑拥有如此强烈的追随者的原因是因为他们提供的编辑模型比新系统更强大,这就是为什么提供"vi keybindings"或"emacs keybindings"是不够的,即使你没有使用任何扩展功能或emacs或vi的自定义.
我只会谈谈Emacs的模型,因为我最了解它.今天文本编辑的通用模型涉及文本缓冲区,其中可以插入,删除,选择和剪切/复制/粘贴文本到系统剪贴板.
当然,Emacs缓冲区可以支持这些操作.除了跟踪每个窗口的光标位置,它们都可见,它们还跟踪其中的"标记"."点"(光标位置)和"标记"之间的文本称为"区域",大致对应于主流编辑器中的选择.
不同之处在于Emacs会跟踪标记环中设置标记的最后几个位置,您可以通过击键(或两个,取决于您的配置)返回它们.我觉得这非常有用,特别是因为许多改变你在缓冲区中的位置的Emacs命令在旧位置设置了标记.一个例子是我在编辑Python模块时需要在文件顶部添加一个import语句.转到缓冲区顶部的按键(Alt- <)设置标记.我添加了import语句.我按下Ctrl-u Ctrl-Space,然后我回到了我开始的地方.我可以继续这样做以循环回到以前的位置.(也许我需要在添加import语句时选择一些文本.)
另一个(也是众所周知的)Emacs的区别在于杀戮戒指.用于从缓冲区中删除文本的大多数按键将文本保存到kill ring,然后可以使用"yank"命令(Ctrl-y)调用它.基本功能是随后的yank命令检索较旧的已删除文本.因此,您可以连续删除几个文本部分,然后按顺序检索它们.你也可以在猛拉后用Alt-y循环杀死戒指,删除检索到的文本并在戒指中插入下一个条目.
Emacs在1978年拥有这些功能.在任何程度上采用它们的唯一其他主要系统是NeXTStep(现在由Cocoa继承).其他工具为特定任务提供了更多功能,可以使用比Emacs Lisp更容易使用的语言扩展,并且具有更好的可视化界面......但Emacs在文本编辑方面仍然更好.这就是为什么,一旦你知道如何使用它,它就很难戒掉.
这不是一个特定的任务,但对于那些甚至可能患有RSI的人来说,你的双手永远不会将键盘留在vim中的事实几乎是无价之宝.我实际上最终在我的鼠标上工作了,因为它让我少用手移动鼠标(我家里的键盘上没有数字键盘,所以我可以把它保持在右边).
另一个小好处是,IIRC,原始的vi旨在通过非常慢的远程连接加速编辑文件.当然,今天几乎不会发生这种情况,但是如果你的连接速度很慢,那么运行gui文本编辑器并让它具有响应能力会很好.
对我来说,生产力很高
我可以从键盘上做很多事情.
强大的宏.
在使用9个操作系统的20年Carreer中,基本的键盘绑定没有改变.我几乎可以继续使用任何系统,并且已经了解了编辑器的方法.
几乎所有您在文本编辑器中想要的功能都已添加.
我真正喜欢vim的一件事是"转发器"命令.基本上,通过按下.
命令模式,它会重复您的上一个操作.这只是"程序员文本编辑器"拥有的非常酷的功能的一个例子,而GUI通常没有.
根据我的经验,vim和emacs(我自己是一个vim人,但emacs肯定是类似的)提供的主要生产力增益是:
你可以有那些现代的IDE提供(如一个按键编辑-构建-运行周期和在线文档和制表符完成和诸如此类的东西)的功能,但你不有.生产力提高了吗?你只看到你想看的东西.根据我的经验,IDE并没有提高人们的工作效率,也因为他们展示了太多的信息(各种浏览器).这种"额外的力量,当你需要它时 - 但不会更早"是相当有生产力的收益恕我直言.
编辑器在程序员中非常受欢迎,这意味着有大量的脚本,书籍和用户组可供使用.
根据我的经验(我只能在这里说vim),普通的vim用户是一位相当优秀的软件工程师.我不知道为什么会这样(或者我可能只是幸运的),但也许那些已经习惯了像emacs或vim这样的"旧"工具的障碍的人有正确的奉献精神(和其他人这样的联系) ).也许这是这些编辑的间接影响,但与其他vim(或emacs)的人在例如IRC上闲逛时结果非常有趣,因为同样的人对各种软件工程(或计算机科学)问题也很感兴趣.这些编辑似乎吸引了某种人格.:-)
我使用轻量级emacs克隆来获取微型程序所带来的"生产力提升"就是它像闪电一样启动.在Visual Studio完成加载"沙盒"解决方案之前,我通常可以用C#快速测试一个程序.
当然,我可以让Visual Studio保持打开状态(或者如果我当时在其中工作则打开另一个 VS)但是如果我将它闲置一段时间,它会被换掉等等.
对于任何大小的东西 - 或者如果我不知道我使用的API很好 - IDE就是前进的方向,IMO.
我使用gvim for windows,所以从技术上讲它是一个GUI文本编辑器,但它是vim ..
为了提高生产力,我发现:
我永远不必使用鼠标,因此我更快.
使用vim键绑定与鼠标移动(一旦学习曲线被超越),搜索,替换,复制/粘贴等都会更快
正如之前评论中所提到的,RSI显着降低.自从我搬到vim后,我的手腕感谢了我.
它重量轻,速度快