学习Vim有什么好处?[关闭]


467

作为程序员,我花了很多时间在键盘上,并且在过去的12年中,或多或少地一直在使用它。如果有一段时间我一直不习惯某些东西,那是由于一些最常见的代码编辑任务,我在编码时遇到的这些烦人且几乎无意识的持续微中断。从不同的行(甚至是同一行)进行简单的复制和粘贴,或者从当前位置上移或下移1或2行之类的事情都需要太多的键入操作或涉及使用箭头键...当我想进一步移动时,情况更糟-我最终使用了鼠标。现在想象一下在笔记本电脑上的相同场景。

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

我想听听那些学习过它的人,如果它最终成为您不能没有的那些事情之一。

在工作中,我使用VS2008,C#和R#,它们使编辑代码比以往更快,更轻松,但是即使如此,我还是觉得完全不必使用鼠标。

甚至没有方向键。


7
不必在键盘和鼠标之间切换绝对是件好事。在Mac上,即使在BBEdit或Xcode这样的GUI编辑器中,我也使用了emacs导航键(例如ctrl-A),只是为了避免鼠标额外移动。
Craig S

236
完全值得付出努力。Learn vim;)
凯尔·沃尔什

20
您可以在几分钟之内学习基本的vim(忘了vi),只需在终端中输入vimtutor即可掌握基本知识-未来20年您所学的一切都取决于您。我很好奇VS2008,C#和R#如何帮助您解决与浪费生命在键盘和箭头键/鼠标之间移动相关的问题?
stefanB

43
我做过的最好的投资之一。
Johnsyweb 2010年

10
我创建了这个游戏来帮助我7岁的侄子学习在Vim中快速走动: kikuchiyo.org Beta版允许您使用光剑攻击敌人,'i'代表左攻击,'a'代表右:PI学习到Vim出于同样的原因。我发现要适应最困难的部分。如果您需要帮助,希望游戏能帮助您加快速度:)祝您好运!:)
kikuchiyo

Answers:


249

我已经使用vi和vim已有20年了,但我仍在学习新事物。

David Rayner的“ 最佳Vim技巧”站点是一个很好的列表,尽管一旦您对Vim有所了解,它可能会更有用。

我还想提到ViEmu网站,该网站提供了一些有关vi / vim技巧的重要信息,尤其是文章为什么那些笨拙的人会使用vi?存档版本


8
是的,我也一直在学习新事物。还是我最喜欢的编辑器。
Craig S

20
我想知道这是好事还是坏事。如果您不断学习新事物,学习曲线将变得非常陡峭,功能被真正隐藏起来,并且没有掌握的感觉。无论如何,如果您想使用RISC,则可以使用vi而不是vim,对吗?
bastibe

7
@Paperflyer:我有同样的想法。如果您20年后仍未掌握它,那就很头疼,我不确定我是否想要
Dinah 2010年

7
为何如此?这意味着,尽管它具有如此多的功能,您可以继续学习,但不必为了提高生产力而全部学习。
阿尔达·希

5
“为什么,哦,为什么,这些疯子会使用vi?”。-良好的链接,尤其是这个问题

184

我能没有它吗?容易。

它有用吗?是。

学习原因

  • vi保证在所有Unix系统上都存在,并且在大多数Linux系统上也都存在。这种广泛的覆盖面使学习值得。

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

    $ sudo vi

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

您不必是高手。

只是学习

基础:

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

从那里开始,其余的只会使您更快。


我一直使用“ vi很容易;您使用ell键将光标向右移动”作为一种幽默(我希望)的方式来介绍它。但是我已经使用了很长一段时间,而且并非没有。但是,我不能要求另外25对夫妇超过25年,因此,我没有新的答案。
乔纳森·勒夫勒

16
这就是我学到的。从最低要求开始,每天增加一点。花时间学习完成任务的更好方法。请参见“高度文本编辑的7个习惯”以获取灵感。

Gmail,Google实验性搜索键盘快捷键,Slashdot键盘快捷键,人工和其他方法都使用类似vim的绑定。令我惊讶的是,我发现我不知道vim是不小心学会了这些知识!甚至Firefox也使用/进行增量搜索(语义与Ctrl + F稍有不同)。
亚当·罗森菲尔德

29
[:] [X] [Enter]与[:] [W] [Q] [Enter]相同
Vitalii Fedorenko 2010年

20
[Z] [Z]与[:] [X] [Enter]相同
Kos

138

通过vimtutor运行只花了我30分钟,足以熟悉vim。值得每一秒。


如果您知道更好的解释链接,请更换我的:)
Blorgbeard将于

43
vimtutor就是这个教程。我每天大约做10天。第一次花了我大约30分钟,第二天是20分钟,然后是15分钟。到了周末,我的大部分命令都刻在了脑海中。我认为重复不是试图背诵,而是接近Vim的最佳方法。每天15分钟(一周)似乎是一个很小的价格。
Michael Ekoka 2010年

28
一旦我们完成了VIMTUTOR怎么办?要了解更多,下一步是什么?
privatehuff 2010年

3
@privatehuff:阅读并应用 有效文本编辑的七个习惯
Frank Kusters

1
哇!这就像游戏中的隐藏物品之一。它就在我的系统中,我不知道它的存在。vim最有用,最快速的教程之一。使用vim一段时间后,我仍然学到了一些我不知道的基本技巧。向大家推荐。还有一点建议:如果您在具有触摸板且支持手势的笔记本电脑上使用vim,请在使用vim之前将其禁用,因为如果不小心触摸它,可能会将光标移到意想不到的位置,有时会浪费整个良好的编辑时间。
梭子鱼

69

如果您是一位编辑大量文本的程序员,那么学习“认真的文本编辑器”非常重要。您学习哪种Serious Text Editor并不是很重要,并且在很大程度上取决于您希望在其中进行编辑的环境类型。

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

通常考虑vim的杀手级功能:A)几乎在您遇到的每个Unix上都可以使用它,并且B)手指很少需要离开主行,这意味着您可以非常非常快速地编辑文本。 。即使编辑大型文件,它通常也非常快速且轻巧。

但是,还有很多选择。当然,Emacs是最常见的示例,如果您真的深入研究的话,它不仅仅只是一个高级文本编辑器。经过多年使用vim / gvim之后,我个人现在是一个非常高兴的TextMate用户。

切换到任何这些方法的技巧都是强迫自己按照预期的方式使用它们。例如,在vim中,如果您要手动执行多步骤过程中的每个步骤,或者使用箭头键或鼠标,那么可能会有更好的方法。停止您正在做的事情,然后查找它。

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

玩得开心!


7
这一点有很多人忽略了。几乎所有重复性任务都有捷径。开发人员喜欢快捷方式。正如rbright所说,如果您发现自己重复执行某个步骤,请停下来看看别人是否已经记录了快捷方式。
AvatarKava

A)是我使用VIM的最大原因之一-我本来是emacs专家,但并非所有系统都具备它,有时在网络或繁忙服务器上运行速度很慢。VIM无处不在,体积小,速度快。
jpeacock

3
我的编辑一直在开玩笑。我应该换
格雷格·格雷厄姆

您曾对我说过:“如果您是一名编辑大量文本的程序员,那么学习“认真的文本编辑器”很重要。” 最糟糕的部分是,几乎按照定义,似乎不可能学会内外两个(少得多)。您正在某个时候研究边缘案例,而如何完成一个任务X的知识通常并不能转化。而且,我总是在“边缘”编辑器中做一些事情-我仍然使用JEdit for JTidy,Code2HTML来搜索多个文件。您的主要目标是掷骰子,没有银弹,但是,是的,绝对要学习并与许多人一起玩。; ^)
ruffin 2014年

1
@ruffin没错,您无法真正同时掌握两个不同的编辑器:如果您掌握一个编辑器,您将无意识地使用其许多命令,这意味着您很可能会尝试使用使用其他编辑器时使用相同的命令。我诅咒我的浏览器多少次,因为不允许我使用简单的方法来修复缩进<esc> >i{...这与触摸键入是真的一样:您学习一种键盘布局,并且坚持使用它,因为您将永远无法停止避免在其他布局上键入错误的键。
cmaster-恢复莫妮卡2014年

36

这是绝对值得的。

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

这是显而易见的一个:

  1. vi 它无处不在且功能强大,一旦学习,您就可以在几乎任何有键盘的计算机上使用该功能。

这些是鲜为人知的学习原因Vim

  1. 这并不是您想像的那么多的努力。只需运行一次Vim导师vimtutor在shell或Windows中,从“开始”菜单中的Vim文件夹运行它),您就已经可以很好地发挥自己的能力,而且从那里开始都是困难的。我已经达到了可以Vim在工作中使用而又不会在不到一周的午餐时间内受到任何明显生产力影响的水平。

  2. 它的乐趣!对我来说,编辑文本就像是一个游戏。我非常喜欢它-当您考虑它时,这非常荒谬。

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

  1. 它很容易上瘾,您会发现自己希望自己可以Vim所有计算中使用命令,并在不希望使用的时候咒骂。幸运的是,至少在某些情况下,有一些方法 可以 解决 此问题

  2. 同样,它令人上瘾,尽管您不会因实际使用 而损失任何生产力Vim,但是您将浪费大量时间来寻找好的技巧以使您的Vim体验更好,并在Stack Overflow上阅读Vim标签


12
哈哈2号“不”学习VIM的原因是如此正确。在保存文本编辑的所有时间里,我都花时间阅读有关文本编辑的内容。荒谬。
Karl Floersch 2014年

是的,我希望我可以使用hjkl发挥stardew山谷...
红双喜

32

绝对值得学习vim或emacs。还值得学习触摸式。在这两种情况下,原因都是相同的:将代码显示在屏幕上的机械过程不再干扰您的思考

至于如何开始,只需深入并开始对所有内容使用vim。

PS关于emacs-vs-vi的争论是无止境的。我已经使用emacs 26年了。如果我今天重新开始,我会学习vim,因为(a)它变得更好,并且(b)修饰键更少(Ctl-Alt-V,任何人),并且vim用户似乎受到的打字伤害要少得多。


RSI是开发人员的一种职业危害。我从来没有那样想过,但我敢打赌这是一个很好的观点。从肌肉的角度来看,键入和弦要困难得多。我知道使用vi有杀手级的理由!
DigitalRoss

1
我都用过,我在vim中受洗,并在几个月前学习了emacs。我更喜欢vim,因为任务分散了-您正在编辑或插入,而不是同时执行。这种区别有助于我思考自己在做什么,并使“正常”命令按1-2个击键,而不是2-4个击键。我只是希望vim是基于Lisp的(不,viper模式不能支持我所有的vim标准功能。是的,我可以自己动手制作,但是一旦我接触到新的计算机/系统,我都会很想念它们)
Wayne Werner

1
@WayneWerner我真的过时了,但是您可以对所有elisp版本进行控制,以便可以通过计算机同步它们。
YuriAlbuquerque 2012年

@YuriAlbuquerque,我实际上已经开始认真考虑创建自动环境设置脚本,将所有dotfile保留在github或其他东西上。
韦恩·维尔纳

17

通过学习仅16个键的含义,您可以从vim中获得良好的功能:ijkdbw9:q!%s/nNEsc。你可以用Just做裸露的骨头i:wqEsc

您需要知道的前两个键是:Esc带您进入命令模式(您以其启动的模式),并i带您进入插入模式(普通键入)。


要保存,您需要

  1. 退出输入模式(Esc
  2. 输入冒号 :
  3. w然后输入小写字母Enter

要保存并退出,您需要

  1. 退出输入模式(Esc
  2. 输入冒号 :
  3. wq然后输入小写字母Enter

要不保存并强制退出,您需要

  1. 退出输入模式(Esc
  2. 输入冒号 :
  3. q!然后输入小写字母Enter

要了解更多信息,您可以vimtutor在命令行中运行。这是一门中等长度,结构合理的课程。

超越iEsc:您仅可以复制或超越某些MS Word功能jkwbd3:%s/nN

  1. b带你回一个字(Ctrl+
  2. w带您转发一个单词(Ctrl+
  3. 9w 带你前进九个字
  4. db删除前一个单词(Ctrl+ Backspace
  5. d3b 删除前面的三个词
  6. 9j 下移9行
  7. / ornithopter Enter带你到单词“扑翼机”,那么下一个实例n,并N分别“扑”的下一个和以前发生。
  8. :%s/confounded/dangfangled/ Enter用“悬挂”替换每个“混淆”(如find and replace allMS Word中一样)

其中任何一种都应在“命令”模式(Esc)中运行,而不是在插入模式(i)下运行。


16

我最近改用了VIM,我认为这是值得的。如果您需要“只是完成某件事”,则可以始终处于插入模式,在该模式下,(通常)vim像普通的文本编辑器一样。

我注意到,那些不习惯我的事情,例如伸手去拿箭头键,现在感觉不对劲而且费劲。肯定减少了我的手部动作和鼠标的使用量,这既符合人体工程学,也提高了生产率


12

这取决于您要对VIM做什么。仅因为许多人没有它而无法生活,所以学习它是没有意义的。

当我在UNIX环境上进行大量工作时,没有它我无法生存。即使未在UNIX计算机上安装VIM,我也至少可以使用vi。您总是可以指望它-即使机器不是您自己的(来自客户的)。

现在,我使用C#编程,并且大部分在Windows环境下工作。我已经在PC上安装了VIM,而我不需要它。

评估您是否真的需要VIM,以及它是否在您的“工作流程”中为您提供支持。试试看。玩吧。如果您认为自己需要它,请坚持下去...学习曲线非常陡峭。


VIM用户有一个Visual Studio扩展,请在visualstudiogallery.msdn.microsoft.com/…上查看
yoel halb

10

我学习了vi,因为必须这样做。

我疯狂的老师强迫我们使用AIX系统的终端学习用C编程。

这确实是痛苦,但值得。

今天,我仅将vi用于快速编辑或小型程序。

当我必须去做一个项目时,我宁愿使用和IDE。就我而言,IntelliJ的想法非常擅长该任务,因为我可以编写几个小时的代码而无需抓住鼠标。

我不知道VS2008有多少快捷方式,但是如果它们像Eclipse一样容易发现,那么我认为vi会给您带来麻烦。

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

:)


他要求提供VIM的好处而不是一种意见。
Blaze349

@ Blaze349不,他要求听到人们如何学习它的信息(请参阅此处的原始帖子),这正是我的回答。这个问题已经有将近8年的历史了,并且这些年来已经通过了几次评论,我的答案与原始答案相符。评论时要考虑到这一点。
OscarRyz

9

我已经使用vi / vim超过25年了。如果您已经知道一些命令行编辑器,那么也许您不需要学习vi / vim。但是,如果您对其他命令行编辑器不太了解,则值得学习。轻而易举地在vi / vim中生产很容易。


6

我现在几乎完全使用VIM。

我以前使用Vim进行编辑,而使用VS Editor进行调试。这似乎有点疯狂,但是我发现Vi范例(宏,基于主键的编辑等)极大地提高了我的工作效率,因为VS中的编辑是画龙点睛的。

感谢Viemu,我什至不必做任何切换。它不是一个完美的解决方案(代码完成有时不如本地vim优雅,宏录制也不完美),但是它比不断地来回切换要好得多。

Vim的学习曲线可能被夸大了。我认为,一旦您了解它,它就会非常直观。


5

我的工作迫使我开始使用vim,它已迅速成为第二天性。现在我的抱怨是关于没有vim仿真或插件的IDE。我确实注意到esc密钥已成为vim之外的我的敌人。

我确实在Visual Studio中找到了多个vi模拟器:

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


4

首先,良好的vi(m)知识将为您节省在seige下服务器上紧急进行配置文件紧急编辑的时间。它可以保持缓慢的ssh连接。

如果您通过人体工程学键盘有效地使用vim的输入法,那么vim的输入法将是抵御腕管的最佳方法。

理解vim观点的最好方法是在家中启动一个休闲项目,拔下鼠标和箭头键上的胶带。

并阅读帮助


4
我还发现Vi输入模型非常适合防御腕管综合症...
CMS

方向键?尝试在您的.vimrc中:map <up> <nop> map <down> <nop> map <left> <nop> map <right> <nop> imap <up> <nop> imap <down> <nop> imap <左侧> <nop> imap <右侧> <nop>
sjas 2012年

1
我要指出的是nano,它比vim更易于使用,并且几乎一样广泛。
MightyPork,2014年


4

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

现在,我可以从Vim进行任何操作:源代码控制,sql,调试,编译,浏览-真正快速浏览1Gb源代码。

Visual Studio或Eclipse无法处理所有这些。而且,如果我有选择的话,我不会将Vim更改为其他编辑器或IDE。


4

我学会了Vim。这不是太多的努力。现在我绝对喜欢ci“ ci(cw V:s / from / to / g


3

我想说vim绝对值得学习。去年夏天,我选择了它,现在它成为了我几乎所有内容的首选编辑器(java是一个扩展,但是当我不需要广泛的分析支持时才是可行的)。众所周知,它是一种非常有效的工具。

就其价值而言,我仅从图形教程中学习了vim功能的一小部分(花了一两天),并从这里学到了一些零碎的东西(长时间阅读)以及搜索和替换功能,我被迷住了。从那时起我就学到了东西,但是有空。我会说此时的学习曲线趋于平坦,但是那时,我正在大量使用它,并且周围也有其他人。


3

我和您的处境相同,作为Vim的初学者,我最初发现它有些令人生畏-学习曲线似乎陡峭。从短短几个小时的学习中,我已经感觉到如果没有它,我将无法生存。

这里 一个 环节,我已经找到了有用的Vim的截屏向您展示它的能力的。

Bram Moolenaar(Vim的仁慈独裁者)在最后一个链接中给出了很多建议,那就是尝试学习每个命令和函数的效率很低,只是弄清楚您正在执行的操作不是工作得很好,寻找一种方法使其变得更有效率,然后养成习惯。


3

是的,一定要花时间学习至少一些“ vi”和“ vim”。它旅行非常顺利。

当您面对没有安装功能的客户Unix / Linux / Mac系统时,您永远不会卡住。即使在Windows上(如果您具有安装功能),“ Vim”也是免费且易于安装的。(与纯粹将学习曲线投资于UltraEdit之类的东西相反,尽管优秀的编辑器可能并非一直都可用...)。

学习vi可以帮助您学习其他工具,例如“ sed”和一般的正则表达式:通常可以转让的东西。

另外,如果您想成为一个合适的怪胎,您只需要知道'vi / m'即可,否则您会看起来像个骗子;-)


2

我认为绝对值得花时间和精力来学习vim。对我来说,它使输入和导航文本非常有效,很难想象回到emacs或ctrl / shift / alt / meta键组合。

不要被vim的所有花哨功能吓倒。一旦足够使用它,您将找出使用最多的命令,并找出可以忘记的事情。


2

仅在Unix系统上,Vim的无处不在以及一般而言Vi-clones的无处不在就足以使其值得学习。

除此之外,我真的认为整个Vi风格的思考使我变得更有生产力。对于不习惯命令模式和插入模式等模式的人来说,仅进入文本插入模式似乎有点多余。但是,当一个人已经使用Vim几个月,并且学到了很多技巧时,Vim似乎是值得的资产。

当然,Emacs人群对于Emacs风格的思考也持相同的观点,但是我放弃学习Emacs的原因是Vim更简单,并且为我完成了工作。


2

在观看了一个非常熟练的人浏览并以疯狂的快速剪辑进行编辑之后,我学会了喜欢vi。您确实可以使用它快速进行编码。我喜欢它的另一个原因是,有时我发现在IDE中四处移动确实会在一段时间后伤害我的双手,而vi提供了一个不错的更改。正如其他人所提到的,它几乎也总是在unix系统上可用,即使在糟糕的连接上也能很好地工作。

我未曾提及的一件事是,知道vi在某些圈子中具有“怪胎信誉”的额外好处。我可以想到至少有几个人在看到新程序员激发nedit对文件进行一些更改时会咯咯笑。


2

不要被命令的数量吓到,我还没有遇到过最多使用不超过几十个命令的人。我发现它是必不可少的,因为当我思考代码时,我正在思考文本,而转向思考鼠标只会使我感到困惑。我认为,最大的窍门是一次学习一点,不要犹豫,因为撤消功能非常适合探索其行为。

另外,如果您深入了解它,vim也可以编写脚本。从字面上看,可能性是无限的。

(是的,所有这些也适用于emacs ...)


2

在不得不开始使用在Linux下运行的服务器之前,我对自己的textpad和ecplise世界感到很高兴。需要远程脚本编制和设置配置文件!

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


2

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

您可能想学习vim,因为很多人说它很酷。只要看看您对这个问题有多少个答案即可。

我将提供学习vim的其他原因。它以其文档的质量和完整性而闻名。因此,一旦您设法在帮助查询中添加适当的关键字,您就会在其帮助系统中找到大多数问题的答案。


2

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

jk输入箭头0 $ w W b B ctrld ctrolE ctrolY HML fX FX tX TX;%gg G n N mX'X''

枚举起来会很无聊。其中许多支持命令前的计数,例如4j向上移动4行。

现在,回到设计中,键入d之类的命令进行删除,然后移动光标,该命令将应用于从光标位置到移动结束的一段文本。例如,H移至屏幕顶部,dH删除至屏幕顶部,而cH更改(替换)至屏幕顶部。

这种设计非常强大。它还可以减少或整理您需要学习的内容。明确地,第一步是学习一些光标移动命令。首先说8或10。然后,您几乎完成了。


2

恕我直言,学习新事物总是值得付出努力的。我建议您打印一份备忘单,并强迫自己日复一日地使用它。


中文中有一个故事,说有人向老师学习如何屠杀龙。一旦他从学习中毕业,就永远找不到真正的屠夫龙。我并不是说vi,但这是故事的寓意,有时学习某些东西只是浪费时间。
Earth Engine

2

Vim绝对值得学习,以部分地总结前面已经提到的内容,这是主要原因。

  • Vi / Vim可以在大多数Unix系统上找到。
  • Vim允许您轻松编写代码,而无需离开键盘。
  • 如果您计划在基于UNIX的系统中进行任何配置,可能是要编辑少量的配置文件,因此,您将需要学习基于终端的编辑器,其中vim是最好的编辑器之一(对不起,emacs)。
  • Vim可以为几乎所有的OS编译/已预编译二进制文件。无需发布“我需要[插入OS]的textmate替代品”,您将拥有Vim!
  • 有很多不错的插件可以添加很多功能,例如编辑器内CVS差异,尽管其中一些需要大量的修补工作。

另外,如果您喜欢Vim键绑定,还可以在IDE的编辑器中包含用于简单命令的vim绑定,例如Komodo Edit。

要获得有关学习Vim的帮助,请尝试在终端中键入“ vimtutor”,然后按照说明进行操作。还有一本书,特别擅长Hacking Vim


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.