As a programmer I spend a lot of hours at the keyboard and I've been doing it for the last 12 years, more or less. If there's something I've never gotten used to during all this time, it's these annoying and almost unconscious constant micro-interruptions I experience while coding, due to some of the most common code editing tasks. Things like a simple copy & paste from a different line (or even the same line), or moving 1 or 2 lines up or down from the current position require too much typing or involve the use of the arrow keys ...and it gets worse when I want to move further - I end up using the mouse. Now imagine this same scenario but on a laptop.

我一直在考虑学习VIM,但掌握它所需的时间总是让我想后退一步。

我想听听那些学会了它的人的意见,如果它最终成为你生活中不可或缺的东西之一。

在工作中,我使用VS2008, c#和r#,它们一起使编辑代码比以前更快更容易,但即使如此,我认为我可以享受根本不需要使用鼠标。

甚至连方向键都没有。


当前回答

我现在几乎只使用VIM。

我以前使用Vim进行编辑,使用VS Editor进行调试。这可能看起来有点疯狂,但我发现Vi模式(宏,基于home键的编辑等)对我的工作效率有很大的提高,在VS中编辑是很痛苦的。

多亏了Viemu,我甚至不用再做切换了。它还不是完美的解决方案(代码完成有时不像原生vim中那样优雅,宏记录也不完美),但它比不断地来回切换要好得多。

Vim的学习曲线可能被夸大了。我认为一旦你进入它,它是相当直观的。

其他回答

仅在Unix系统上,Vim的惊人的普遍性,以及vi克隆的更惊人的普遍性,就足以使它值得学习。

除此之外,我认为整个vi式的思维方式让我变得更有效率。对于一个不习惯命令模式和插入模式等模式的人来说,仅仅为了插入文本而进入一个模式似乎有点过分。但是,当一个人已经使用Vim几个月,并且已经学习了相当多的技巧和技巧时,Vim似乎是一项值得的资产。

当然,关于Emacs风格的思维,Emacs人群也说了同样的话,但我放弃了学习Emacs,因为Vim更简单,而且为我做了这项工作。

没有它我能活下去吗?很容易。

它有用吗?是的。

学习的理由

vi保证在所有Unix系统上存在,并且在大多数Linux系统上也存在。这种广泛的覆盖面让学习变得值得。 使用vi编辑sudo要快得多: $ sudo vi 此外,GMail使用vi-ish命令来选择和移动电子邮件!

你不需要成为大师。

只是学习

基础知识:

如何从命令模式切换到插入模式i 如何从插入模式切换到命令模式Esc 如何在命令模式k中浏览一行 如何在命令模式下导航一行j 如何导航左字符在命令模式h 如何正确导航字符l 如何保存文件:wEnter (write) 不保存退出(命令模式下):q!输入 如何撤销 如何重做Ctrl+r 您可以结合写入和退出(在命令模式下)::wqEnter

剩下的只会让你跑得更快。

I too put off learning vi or vim for many years. Matter of fact, I use to make fun of the "vi guys" who always seemed to be doing finger aerobics. Then, as I moved away from Windows and over to Linux as my primary OS, I had to become more familiar with vim. It was a learning curve and it still is. After 9 years of using vim on a daily basis I still find myself learning new and faster ways of doing things. What I use to think of as "finger aerobics" actually turned out to be an extremely efficient way of being productive. I can now do a whole lot more code development in a whole lot less time and effort than I ever did prior to vim. And as I'm sure you know vim runs on about every platform out there so you always have it when you need it. Also, if you like GUI's they have GUI versions for most platforms. Personally, just like the mouse, I don't want to see a menu bar, scroll bars, etc. cluttering up my editing window(s).

如果你决定尝试一下vim,我强烈推荐O'Reilly的《vi Editor Pocket Reference》一书。它很便宜,如果你只是学习vi (vim),它是很棒的。完整的vim书籍也很好,但口袋参考给你所有的基础知识,快速高效。

如果你是一个编辑大量文本的程序员,那么学习一个严肃的文本编辑器是很重要的。你学习哪种严肃文本编辑器并不是特别重要,它在很大程度上取决于你期望在其中编辑的环境类型。

原因是这些编辑器经过高度优化,可以执行您将经常执行的各种任务。例如,考虑在每行末尾添加相同的文本位。这在一个严肃的文本编辑器中是微不足道的,但在其他方面却非常麻烦。

通常vim的杀手特性被认为:A)它在你遇到的几乎所有Unix上都可用;B)你的手指很少需要离开主行,这意味着你可以非常非常快地编辑文本。即使在编辑巨大的文件时,它也通常非常快速和轻量级。

然而,还有很多替代方案。Emacs是最常见的例子,当然,如果你深入研究它,它不仅仅是一个高级文本编辑器。在使用vim/gvim多年后,我个人现在是一个非常满意的TextMate用户。

切换到其中任何一种的诀窍是强迫自己按照它们的意图使用它们。例如,在vim中,如果您手动执行一个多步骤过程中的每一步,或者如果您使用方向键或鼠标,那么可能有更好的方法来完成它。停下手头的工作去查一下。

如果不做其他事情,可以学习vim和Emacs的基本导航控件,因为它们会到处弹出。例如,你可以在Mac OS、大多数Unix shell、Eclipse等任何文本输入字段中使用emacs风格的控件。你可以在less(1)命令、Slashdot、gmail等中使用vim风格的控件。

玩得开心!

我学vi是因为我必须学。

我那疯狂的老师强迫我们学习用C语言在AIX系统上用终端编程。

这真的很痛苦,但值得。

今天,我只在快速编辑或小程序时使用vi。

当我必须去做一个项目时,我宁愿使用IDE。在我的案例中,IntelliJ idea非常适合这个任务,因为我可以在不抓鼠标的情况下编写数小时的代码。

我不知道VS2008有多少快捷方式,但如果它们像Eclipse一样容易被发现,我认为你有麻烦了,去vi吧。

如果你不在IDE外编辑代码,而你的IDE有很好的快捷方式,你最好学习这些,然后,无论如何,去学习vi。

:)