关于编辑:学习Vim有什么好处?

What are the benefits of learning Vim?

作为一名程序员,我花了很多时间在键盘上,在过去的12年里,我一直在做,或多或少。如果有什么我从来没有习惯过的东西,那就是这些烦人的,几乎是无意识的,持续不断的微中断,我在编码时经历,由于一些最常见的代码编辑任务。从不同的行(甚至是同一行)复制粘贴,或从当前位置向上或向下移动1或2行等操作需要太多的输入或涉及到箭头键的使用…如果我想进一步移动,情况会变得更糟-我最终使用鼠标。现在想象一下同样的场景,但是在笔记本电脑上。

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

我想听听学过这门课的人的意见,如果它最终成为你无法摆脱的东西之一。

在工作中,我使用VS2008、C和R,它们一起使得编辑代码比以前更快、更容易,但即便如此,我认为我完全可以不必使用鼠标。

甚至连箭头键都没有。


我已经使用vi和vi m 20年了,我还在学习新东西。

DavidRayner最好的vim技巧站点是一个很好的列表,不过一旦你熟悉vim,它可能会更有用。

我还想提到Viemu站点,它在vi/vim技巧方面有一些很好的信息,尤其是这篇文章,为什么,哦,为什么,这些疯子使用vi?(存档版本)


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

有用吗?对。

学习的原因

  • vi保证存在于所有UNIX系统上,并且也存在于大多数Linux系统上。这种广泛的报道使学习变得值得。

  • 使用vi进行sudo编辑要快得多:

    苏都六世

  • 此外,Gmail还使用vi-ish命令来选择和移动电子邮件!

你不必成为大师。

只是学习

基础知识:

  • 如何从命令模式切换到插入模式iakbd
  • 如何从插入模式切换到命令模式esc
  • 如何在命令模式KBBD中向上导航行
  • 如何在命令模式jabbkbd中向下导航一行
  • 如何在命令模式H中向左导航字符
  • 如何向右导航字符l
  • 如何保存文件:wenter(写入)
  • 如何退出而不保存(在命令模式下):q!enter
  • 如何撤消u
  • 如何恢复ctrl+r
  • 您可以结合写入和退出(在命令模式下)::wqenter

从那里剩下的只会让你更快。


看完维姆老师只花了我30分钟,这足以让我熟悉维姆。每秒钟都是值得的。


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

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

通常认为Vim的杀手级特性是:a)它几乎可以在你遇到的每一个Unix上使用;b)你的手指很少需要离开主行,这意味着你可以很快地编辑文本。即使在编辑大型文件时,它通常也非常快速和轻便。

然而,还有很多选择。当然,Emacs是最常见的例子,如果你真的深入研究它的话,它不仅仅是一个高级的文本编辑器。在使用VIM/GVIM多年后,我个人现在是一个非常高兴的textmate用户。

切换到其中任何一个的诀窍是强迫自己按照预期的方式使用它们。例如,在VIM中,如果您手动执行多步骤流程中的每一步,或者使用箭头键或鼠标,那么可能有更好的方法来执行。停止你正在做的事情,然后查一查。

如果你什么都不做,学习VIM和EMAC的基本导航控制,因为它们会在各处弹出。例如,您可以在Mac OS、大多数UNIX shell、Eclipse等的任何文本输入字段中使用Emacs样式的控件。您可以在less(1)命令、slashdot、gmail等中使用Vim样式的控件。

玩得高兴!


这绝对值得付出努力。

有一个明显的原因是任何使用Vi(m)的人都会告诉你,还有另外两个原因人们似乎从未提及。

显而易见的是:

  • vi一下子无所不在,功能强大得令人难以置信,只要学习一次,你就可以在几乎所有有键盘的电脑上使用这种功能。
  • 这些是学习Vim的不太为人所知的原因:

  • 这并不像你想象的那么努力。在shell上运行一次vim导师(vimtutor,或者在Windows中从"开始"菜单中的vim文件夹中运行它),您就已经可以很好地获得能力了,从那里开始一切都在走下坡路。我已经达到了可以在工作中使用Vim的水平,不需要在不到一周的午餐时间内受到明显的生产力影响。

  • 真有趣!现在编辑文本对我来说就像一场游戏。我很喜欢它——当你想到它的时候,这真是太荒谬了。

  • 还有两个不学习Vim的好理由:

  • 它是上瘾的,你会发现自己希望你可以在所有的计算中使用Vim命令,并在任何时候都使用诅咒。幸运的是,至少在某些情况下,有办法解决这个问题。

  • 同样,它是上瘾的,虽然你不会因为实际使用Vim而失去任何生产力,但你会浪费数小时寻找好的提示,使你的Vim体验更好,并阅读堆栈溢出上的vim标签。


  • 这绝对值得学习VIM或EMAC。它也值得学习触摸式。在这两种情况下,原因是相同的:你的思维不再被代码进入屏幕的机械过程所打断。

    至于如何开始,只要潜入并开始使用VIM为一切。

    P.S.Emacs与VI的争论是无止境的。我用emacs已经26年了。如果我今天重新开始学习vim,因为(a)它会变得更好,(b)修改键(ctl-alt-v,任何人)更少,vim用户受到的打字伤害似乎要少得多。


    通过只学习16个键的含义,您可以从VIM中获得良好的功能:ijkdbw9:q!%s/nNesc。你只需使用i:wqesc就可以完成裸骨。

    您需要知道的前两个键是:esc带您进入命令模式(您开始的模式),i带您进入插入模式(正常输入)。

    为了节省你需要

  • 退出键入模式(esc)
  • A型结肠:
  • 键入小写w,然后键入enter
  • 要保存并退出,您需要

  • 退出键入模式(esc)
  • A型结肠:
  • 键入小写wq,然后键入enter
  • 为了不存钱和强制戒烟,你需要

  • 退出键入模式(esc)
  • A型结肠:
  • 键入小写q!,然后键入enter
  • 要了解更多信息,您可以在命令行运行vimtutor。这是一个中等长度、结构良好的课程。

    除了iesc:您可以复制或超越某些MS Word功能,只需jkwbd3:%s/nN

  • b带你返回一个单词(ctrl+←)
  • w带您转发一个单词(ctrl+→)
  • 9w带你前进9个字
  • db删除前一个字(ctrl+backspace)
  • d3b删除前面三个字
  • 9j向下移动9行
  • /-ornithopterenter将您带到"鸟翼"一词的下一个实例,然后分别将nn带到"鸟翼"的下一个和上一个实例。
  • :abkb%s/confounded/dangfangled/enter用"dangfangled"(像ms-word中的find and replace all一样)来代替每一个"困惑"的词。
  • 其中任何一个都应该在"命令"模式下运行(esc),而不是在插入模式下运行(i)。


    我最近换成了维姆,我认为这是值得的。如果您需要"完成一些事情",您可以始终保持在插入模式,其中vim(大部分)类似于普通的文本编辑器。

    我注意到那些不曾困扰过我的事情,比如伸手去拿箭头键,现在感觉不对了,太费劲了。它明显减少了我的手部运动和鼠标的使用,这对人体工程学和生产力都有好处。


    这取决于你想用维姆做什么。学习它是没有意义的,因为很多人没有它就活不下去。

    当我在Unix环境中工作时,没有它我就活不下去了。即使Vim没有安装在Unix机器上,我也至少可以使用Vi。您可以一直依赖它——即使机器不是您的(客户提供的)。

    现在我用C语言编程,主要在Windows环境下工作。我已经在我的电脑上安装了VIM…我不需要它。

    评估你是否真的需要Vim,以及它是否支持你的"工作流程"。试试看。玩它。如果你认为你需要它,坚持下去…学习曲线很陡。


    我之所以学会了vi,是因为我不得不这么做。

    我疯狂的老师强迫我们学习用C语言编写程序,使用一个AIX系统的终端。

    这是一种真正的痛苦,但值得。

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

    当我要去做一个项目时,我宁愿使用和IDE。在我的例子中,intellij的想法非常擅长这个任务,因为我可以在不抓到鼠标的情况下编码数小时。

    我不知道VS2008有多少捷径,但如果它们像Eclipse一样可以被发现,我想你有麻烦了,去使用vi。

    如果您不在IDE之外编辑代码,并且您的IDE有很好的快捷方式,那么您最好学习这些,然后,无论如何都要去学习vi。

    :)


    我已经使用vi/vim超过25年了。如果您已经知道一些命令行编辑器,那么您可能不需要学习vi/vim。但是如果你不太了解其他命令行编辑器,那就值得学习。在vi/vim中,只需很少的努力就可以很容易地实现生产力。


    我现在几乎只使用VIM。

    我曾经使用VIM进行编辑,使用VS编辑器进行调试。这可能有点疯狂,但我发现vi范式(宏、基于主密钥的编辑等)极大地提高了我的工作效率,使得在vs中编辑具有绘画性。

    多亏了Viemu,我再也不用做转换了。这还不是一个完美的解决方案(代码完成有时不如原生VIM那么优雅,宏记录也不完美),但它比不断地来回切换要好得多。

    VIM的学习曲线可能被夸大了。我认为一旦你进入其中,它是非常直观的。


    我的工作迫使我去接维姆,它很快就成了第二天性。现在我抱怨的是没有VIM仿真或插件的IDE。我确实注意到电子稳定控制键已经成为我在VIM之外的敌人。

    我在Visual Studio中找到了几个vi模拟器:

    http://code.google.com/p/vim-visual-studio网站/


    我正在远程计算机上维护一个非常大的Linux项目。没有选择使用Eclipse或类似的基于GTK的IDE。我在那里工作了3年。我为这个项目设置了VIM。仍然在调整。

    现在我可以从VIM中做任何事情:源代码控制、SQL、调试、编译、浏览——非常快速地浏览1GB源代码。

    Visual Studio或Eclipse无法处理所有这些问题。如果我有选择的话,我会把Vim换成其他的编辑器或IDE。


    首先,良好的vi(m)知识将节省您在Seige下对服务器上的配置文件进行紧急编辑所需的时间。它可以支持滞后的ssh连接。

    除了Vim的输入方法之外,如果你能有效地使用符合人体工程学的键盘,管理人员的工作将是你对抗腕管的最佳防御。

    看到vim的意义的最好方法是在家里开始一个临时项目,拔下鼠标并在箭头键上贴上胶带。

    阅读帮助


    我学了维姆。不是太费劲了。现在我非常喜欢词(cw v:s/from/to/g)


    vi/vim的两个优点:

    • 它很轻

    • 它几乎安装在每个*nix系统上


    我和你处于同一种情况,作为一个VIM的初学者,我最初发现它有点令人生畏——学习曲线似乎很陡。从我在短短几个小时内学到的东西来看,我已经觉得没有它我就活不下去了。

    下面是一些链接,我已经找到了有用的VIM屏幕广播,向您展示它的功能。

    Bram Moolenaar(Vim仁慈的独裁者)在最后一个环节中给出了一个很好的建议,那就是尝试学习每一个命令和功能是没有效率的,只要弄清楚你正在做的事情并没有很好地工作,找一种方法让它更有效率,然后让它成为一种习惯。


    是的,肯定要花时间学习至少一点"vi"和"vim"。它旅行得很好。

    当您面对一个没有安装功能的客户Unix/Linux/Mac系统时,您永远不会被卡住。即使在Windows(如果您有安装功能)上,"vim"也是免费的,并且易于安装。(而不是把你的学习曲线纯粹投资在像超级编辑这样的东西上,尽管一个优秀的编辑可能不会一直对你有用…)。

    学习vi可以为您设置学习其他工具,比如"sed"和regex,一般来说,这些工具是可以转移的。

    另外,如果你想成为一个真正的极客,你只需要知道"vi/m",否则你会看起来像个冒牌货;-)


    我认为Vim绝对值得学习。我去年夏天把它捡了起来,现在它几乎是我的编辑器了(Java是一个扩展,但当我不需要广泛的分析支持时,它是可行的)。正如每个人都已经确认的那样,这是一个非常有效的工具。就其价值而言,我只从一个图形教程中学习了Vim功能的一个相当小的子集(花了一两天时间),从这里学习了一些零碎的东西(长时间阅读),以及搜索和替换功能,我很着迷。从那以后,我就学到了很多东西,不过我很有空。我会说学习曲线在这一点上变平了,但后来,我用得很重,周围也有其他人。


    我认为学习Vim绝对值得花时间和精力。对我来说,它使文本的输入和导航变得如此高效,很难想象回到emacs或ctrl/shift/alt/meta-key组合框。

    不要被Vim所有的花哨特征吓倒。一旦你充分使用了它,你就会发现你最常用的命令是什么,你也会发现你可以忘记哪些东西。


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

    除此之外,整个vi风格的思维方式让我觉得更有效率。对于不习惯命令模式和插入模式的人来说,仅仅为了插入文本而输入模式似乎有点过分。但是,当一个人使用VIM已经几个月了,并且学到了很多技巧和诀窍时,VIM似乎是一种有价值的资产。

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


    我在看了一个非常熟练的人在一个疯狂的快速剪辑中导航来进行编辑后,学会了喜欢vi。你真的可以用它快速编码。我喜欢它的另一个原因是,有时我发现在一个IDE中鼠标移动确实会在一段时间后伤害我的手,而vi提供了一个很好的改变。正如其他人提到的,它在UNIX系统上几乎总是可用的,即使在糟糕的连接上也能很好地工作。

    有一件事我没有提到,我知道vi在一些圈子里有"极客信条"的额外好处。我能想到至少有几个人看到一个新的程序员启动nedit对一个文件进行一些更改时会咯咯地笑。


    在我不得不开始使用Linux下运行的服务器之前,我对我的textpad和ecplise世界很满意。需要远程编写脚本并设置配置文件!

    一开始很难,但现在我可以轻松地设置和调整服务器了。


    你可能想学习Vim,因为你可能对你已经使用的编辑器不满意。

    你可能想学Vim,因为很多人说它很酷。看看你对这个问题有多少答案。

    我将提供学习VIM的其他原因。它以其文档的质量和完整性著称。因此,只要您能够在帮助查询中坚持正确的关键字,您就可以在其帮助系统中找到大多数问题的答案。


    要快速学习vi(m),首先必须了解整个设计。VIM有一组大量的光标移动命令,请检查一些(X是一个字符,一个数字):

    J K输入箭头0美元W-B-B克托洛特卡特利氢霉素LFX FX TX TX;%GGnMX′x′

    更多的是,列举出来会很无聊。其中许多支持命令前的计数,比如4J向上移动4行。

    现在,回到设计中,您输入一个命令,比如D,删除,然后移动光标,该命令应用于从光标位置到移动结束的文本部分。例如,h移动到屏幕顶部,dh删除到屏幕顶部,ch更改(替换)到屏幕顶部。

    这个设计很有力量。它还可以减少或组织您需要学习的内容。最后,第一步是学习一些光标移动命令。一开始是8或10。那你就快做完了。


    学习新事物总是值得努力的,imho。我建议你打印一份备忘表,强迫自己日复一日地使用它。


    VIM绝对值得学习部分总结前面所述的内容,主要原因如下:

    • 在大多数UNIX系统上都可以找到vi/vim。
    • Vim允许您轻松地进行编码,而不必把手从键盘上拿开。
    • 如果您计划在基于Unix的系统中配置任何东西,那么您可能要编辑一些配置文件,因此您需要学习一个基于终端的编辑器,其中vim是最好的编辑器之一(抱歉,emacs)。
    • VIM编译/已经预编译了几乎所有操作系统的二进制文件。不需要发布"我需要一个textmate alternative for[insert os]",你会得到vim!
    • 有很多很好的插件可以添加很多功能,比如在编辑器cvs diff中,尽管其中一些需要大量的修改。

    另一方面,如果您发现自己喜欢vim键绑定,那么在它们的编辑器中也有包含vim绑定的IDE,用于简单命令,例如komodo edit。

    有关学习vim的帮助,请尝试在终端中键入"vimtautor",然后按照说明进行操作。还有一本书特别适合黑客Vim


    不,学习VIM比努力更有价值。


    我也把学习vi或vim推迟了很多年。事实上,我经常取笑那些似乎一直在做手指有氧运动的"六人"。然后,当我从Windows转到Linux作为我的主要操作系统时,我不得不更加熟悉VIM。这是一条学习曲线,现在仍然是。在每天使用VIM 9年之后,我仍然发现自己在学习新的更快的做事方法。我过去认为的"手指有氧运动"实际上是一种非常有效的生产方式。我现在可以用比VIM之前更少的时间和精力进行更多的代码开发。而且我相信你知道Vim在外面的每个平台上运行,所以当你需要它的时候,你总是有它。此外,如果您喜欢GUI,大多数平台都有GUI版本。就个人而言,就像鼠标一样,我不想看到菜单栏、滚动条等乱七八糟地出现在我的编辑窗口中。

    如果你决定让Vim试一试,我会极力推荐O'Reilly的"Vi编辑器袖珍参考"一书。它很便宜,如果你只是学习vi(vim),那就太好了。完整的VIM书籍也很好,但是袖珍参考书提供了快速生产的所有基础知识。


    不要被命令的数量吓跑,我没见过最多使用几十个命令的人。我觉得这是必不可少的,因为当我思考代码的时候,我在思考文本,转而思考鼠标只会把我搞得一团糟。我认为,最大的诀窍是一次学习一点,不要犹豫去玩——撤销功能对于探索它的行为是很好的。

    此外,如果您深入了解它,vim是可以编写脚本的。可能性真的是无穷无尽的。

    (是的,所有这些也适用于Emacs…)


    是的:如果你以后不使用也不打算使用任何IDE。即使你使用了一个IDE,你也会发现自己回到它上面去做很多事情。在vim-you van编写脚本时,要执行复杂的任务,例如,不要单独编辑500行,而是使用一个(稍微有点神秘,但一旦拿起它就容易理解)命令来完成。我起初觉得很困难,但后来它帮了我很多忙。即使是最好的IDE编辑器也将缺乏VIM的功能。VIM可以很好地与CVS、SVN、Make、Debugger等配合使用。

    不:如果你坚持使用像Eclipse或Netbeans这样的IDE。或者如果你发现像凯特这样的编辑对你来说已经足够了。事实上,Kate或Notepad++或Jedit都有图形用户界面和您在VIM中可能错过的特性。例如,凯特的符号查看器或记事本+的大菜单栏。


    就个人而言,

    我发现这些终端文本编辑器中的许多有时都不能工作。我会花时间取一个吗?绝对!我将继续沿着一个IDE学习。当然,归根结底,这取决于偏好。


    在学习VIM(我的偏好)或EMAC方面的投资将获得回报。

    我建议访问DerekWyatt的网站,浏览VIM导师,并查看SteveOualine的PDF书。

    Vim帮助我比我使用过的其他编辑器更快地移动和编辑。我的工作IDE在允许人们做什么方面是非常有限的,并且通常用于特定的环境。有些任务仍然需要我重新访问IDE(例如,作为IDE编译部分的调试器)。