代码之家  ›  专栏  ›  技术社区  ›  Community wiki

强迫自己掌握vi的最好方法是什么?[已关闭]

  •  208
  • Community wiki  · 技术社区  · 1 年前

    很久以前,我读过 an article by the creator of viemu ,澄清了许多关于vi的误解,并解释了为什么它是一个好主意(以及为什么它在过去30年里非常流行)。同一个人也有 a great set of graphical cheat sheets 一次教一些基础知识。

    我确信。

    事实上,在过去的两年里,我一直坚信这一点。但作为我的主要编辑,我仍然没有抽出时间强迫自己学习vi,学习曲线太高了。当我开始工作时,到目前为止,可接受但即时的生产力(使用我当前的编辑器)已经战胜了未来的巨大生产力(使用vi)。

    有人有什么好的建议可以帮助你度过学习曲线吗?它可以是直接的提示,一些其他的教程或文章,无论什么。

    编辑:请注意,我知道 vim/gVim , Cream MacVim (等等)vi的变体。我保留了关于vi的问题,以指代整个vi家族。谢谢你的回答。

    更新(2009年4月)

    自去年12月以来,我一直在日常职业生活中使用Vim(更准确地说,MacVim)。我不会回去了:-)

    祝所有掌握Vim的人好运。

    60 回复  |  直到 4 年前
        1
  •  126
  •   JosephStyons    10 年前

    首先,你可能想要拿起Vim;它有一个非常优越的功能集以及vi所拥有的一切。

    也就是说,学习需要纪律。如果你有一份工作,无法承受生产力的打击(而不被解雇),我建议你周末做一个项目,唯一的目的就是学习编辑。在工作时保持其文档的开放性,并遵守足够的纪律,不要退缩。随着你学习得更多,变得高效,并开始依赖肌肉记忆,坚持下去就不会那么难了。

    我使用Vim已经很长时间了,甚至都不想按什么键来搜索、导航或保存。我的手永远不会离开键盘。使用Vim是我编程生涯中做出的最好的选择之一。

        2
  •  66
  •   Iain Holder    10 年前

    我要做的第一件事是在你的箭头键和ins/home/end/pgup/down键上放一张纸或一本书。Vi中不需要这些。

    接下来,每当你被告知要按escape键时,我就会习惯按ctrl+键。这会快得多,而且你不需要把手从键盘上移开。

    然后我会看我的电影:

    http://www.youtube.com/watch?v=FcpQ7koECgk

    http://www.youtube.com/watch?v=c6WCm6z5msk

    http://www.youtube.com/watch?v=BPDoI7gflxM

    http://www.youtube.com/watch?v=J1_CfIb-3X4

    然后,只需要练习练习。

    编辑 避免使用箭头键的原因是它们会减慢速度。Vim最大的好处之一是它允许你的速度。箭头键还阻止你真正拥抱模态的本质,这在掌握时非常强大。

        3
  •  40
  •   karlgrz    8 年前

    步骤0: 学会触摸打字。说真的,如果你的手指不知道钥匙在哪里,那么vim会很痛苦。即使你拒绝vim,触摸打字也会 improve your programming (问 Steve Yegge )通过下定决心监控链路无摩擦。有一个 lot 属于 software 这可以帮助你提高打字能力。

    步骤1: 使用 vimtutor 让你开始。它在gvim 我想是帮助菜单),或者你可以在命令中键入“vimtutor” 线这将花费你30-45分钟的时间,然后你的手指 了解vi/vim的基本知识,您应该能够在没有 想把你的键盘扔出窗外。

    第2步: 在任何地方使用vim。看见 this question 有关在命令中使用vim和vi键绑定的提示和链接 行,从您的web浏览器,用于撰写电子邮件,在您的IDE中。。。你 需要使用vim将密钥绑定嵌入到肌肉记忆中。

    步骤3: 了解更多关于vim的信息。你只会刮伤 与vimmutor一起浮出水面。你可以 watch this video 或 阅读 this article (都是关于 “有效文本编辑的七个习惯”。你可以 read 关于 tips tricks 在…上 StackOverflow 。 您可以浏览 vimtips 。学习 litle经常是我的建议——外面有很多东西 坚持一口大小的大块将是获得知识的最佳方式 粘贴

    第4步: 利润:)

        4
  •  26
  •   Brian    16 年前

    这些年来,我一直是vim的一个时断时续的用户(偶尔做系统管理工作)。我最近才开始花更多的时间在它上做编程工作。我建议也从gvim开始。它与大多数操作系统环境集成得很好,而且(甚至更好),当需要时,您可以使用鼠标:)。

    为了继续使用vim, 运行vimtutor (与gVim捆绑在一起)一到两次(需要一个小时左右)。这对我有多大帮助,我怎么说都不为过!尤其是关于在文档中移动的不同方式,以及如何使用运动命令等记录编辑动作的前几部分。之后,事情会更加清晰。

    然后,开始用它进行快速、小的编辑(记事本替代品),直到你足够舒服,可以在快速剪辑中进行有用的编辑。然后试着在里面做你的日常工作。你会发现自己很快就会渴望其他编辑的“重复最后一个动作”命令!

        5
  •  20
  •   TMarshall    16 年前

    你在vi文本编辑器上询问了一些好的技巧来帮助你度过学习曲线。前面的许多答案都建议您不要使用其他编辑器。我认为这是个好建议。从更图形化的编辑器切换到vi需要改变心态。它需要从命令的角度进行思考,而不是视觉上的改变。

    多年来,我只使用vi,我相信你能提高效率的唯一方法就是记住你经常使用的命令。我这样做的方法是列出一个最常见的键盘命令的简短列表。我按功能对这些命令进行了分组和颜色编码,即。 移动光标、编辑、搜索 ,等等。我很小心,只包括我不知道的最常用的命令。这个想法是创建一个快速参考,同时也有助于记忆,而不是取代可用的帮助屏幕。然后我把这份清单打印出来,贴在显示器后面的墙上,这样我就可以很容易地看到它了。(你提到的图形备忘单可能对一些人更有效,但可能是比记忆工具更好的参考来源。)

    这是钥匙。 当我对其中一个命令感到舒服时,我用铅笔在其中画了一条线。如果我需要的话,我仍然可以看到它,但这对我来说是象征性的,我已经掌握了这个命令。这给了我信心和动力,因为我可以看到定期的进步。一旦我划掉了其中的大部分,我就删除了它们,并添加了一些很少使用的命令。我继续这个过程,直到我对我的vi命令感到满意。当我意识到我已经很久没有划掉任何命令,甚至没有看列表时,我知道我已经到了那个地步。

    几年前,我需要在一个UNIX平台上工作,vi是唯一可用的编辑器。我买了一本关于vi的袖珍参考书,但几乎没有用过。我最后像第一次使用vi一样列出了清单并贴在墙上。到第一周结束时,我感觉很舒服,尽管我已经五年没有使用vi了。

        6
  •  11
  •   Bill K    16 年前

    不要强迫自己。掌握爱情的道路是。

        7
  •  11
  •   jbarciela    16 年前

    对我来说,VI是一个很好的应急编辑,但如果有其他选择的话,我不想使用它。不过,我意识到这并不适合所有人,我并不是说它很可怕,我只是个人更喜欢一个可发现的UI。

    但是,如果你在Linux中做了任何重要的事情,你真的必须了解VI!

    所以只需学习基本知识: i=插入模式 esc=离开插入模式 :wq=保存并退出 :q=不要保存并退出 x=不处于插入模式时,删除字符。 /=搜索

    这将帮助你度过任何编辑紧急情况。使用这几个命令(当然还有导航)没有什么不能做的。剩下的你可以根据需要“处理”。

    不过,请保留一本参考资料或书籍——当你需要使用VI时,你可能无法浏览网页——但手册页可能有些有用。

        8
  •  11
  •   Cristian Ciupitu    13 年前

    你应该从 vim (Vi-IMCroved),尤其是它的GUI- gVim 。GUI有菜单,在Windows上,您可以使用复制、剪切和粘贴快捷方式,因此您可以立即更换记事本。由于菜单显示快捷方式(vim命令),您可以学到很多东西。

    从一开始就应该做的另一件事是根据您的需要配置vi。例如,您可以将vim转换为 Python IDE 。通过这样做,您将没有理由使用另一个编辑器,因为vi将为您提供所需的一切。

        9
  •  10
  •   Bob Dizzle    16 年前

    每次你在做一项复杂的编辑任务时,都要想知道是否有更有效的方法。大多数时候,当它是你可以用简单的术语描述的事情(比如“交换文本段落”或“删除评论行中X字符后的所有内容”)时,你只需在vim中敲几下键就可以完成。

    有一些关键功能非常有用,您将一直使用这些功能。我最喜欢的是:

    • 块选择(Ctrl-V)
    • 宏录制(q)
    • 虚拟编辑(:set ve=all)
    • 正则表达式
    • 管道连接到外部Unix程序
    • 密钥映射
    • 自动补全(C-p、C-x C-p、C-x C-f)
    • 操作+动作组合(这非常强大)

    询问其他程序员他们认为哪些功能最有用,并采用更适合你大脑的功能。窃取他人的想法 .vimrc s( here's mine )

        10
  •  10
  •   jinsungy    6 年前

    删除所有其他文本编辑器应用程序。

    那你就得学会了。

        11
  •  9
  •   dana    16 年前

    最简单的方法 武力 您自己可能只是从您的机器中删除所有其他编辑器。摆脱诱惑:)

        12
  •  8
  •   Peter Nore    14 年前

    我写了一本指南 efficient editing with Vim 不久前。你可能会觉得这很有帮助。

    我会退一步问自己“我为什么要学习这个编辑器?是什么让我认为它会比我现在的文本编辑器更快或更好?”然后学习那些让Vi(m)对你来说不可或缺的功能。

    例如,Vim的CTags集成对我来说是完全不可或缺的。我使用非常非常大的代码库,一次按键(无论它在哪个文件中)跳到函数或类定义的能力是一个绝对致命的功能,没有它我很难工作。

    使用你的.virc文件来制作自动执行常见任务的宏。

    你的自动驾驶编辑器选择器会选择最快、花费最少脑力完成任务的编辑器。一点准备工作将确保编辑是Vim。:-)

        13
  •  8
  •   Jonathan    8 年前

    编辑:我创建了 a flashcard set over at the online spaced repetition site flashcarddb.com ,以防你感兴趣。。。

    1. 使用间隔的重复闪存卡程序,例如 mnemosyne , supermemo anki 将学习和保留新命令融入日常生活。仅仅使用vim作为日常编辑器是不够的。要掌握它,你必须将这些代码存储在脑海中,等待它们成为手头任务的理想解决方案。
    2. 通过自定义维护.virc
    3. 编写或编辑vim插件
        14
  •  6
  •   Mark Witczak    16 年前

    有两件事会大大提高你的vi技能:

    1. 练习,练习,练习
    2. Nethack
        15
  •  6
  •   Paulus    16 年前

    我的建议是:从小处着手。从记住一小部分最有用的命令开始。当我开始vi时,以下是我的前10名:

    • (Esc)返回命令模式(最重要!)
    • a在光标后添加文本
    • A在当前行末尾添加文本
    • x删除1个字符
    • dd删除1行
    • R替换文本(覆盖)
    • u要撤消
    • :q!(输入)退出而不保存
    • :w(输入)保存
    • ZZ保存并退出

    仅使用这些命令就可以完成许多基本编辑。一旦你适应了,剩下的就不要显得太难了。

    顺便说一句,我想补充一点,我曾经依赖vi作为我的主要文本编辑器,但现在只有在必要的时候。就我而言,当我使用Emacs或Visual Studio等工具时,生产力会更好(请注意:“在我的情况下”)。尝试多种工具,并选择最有助于提高生产力的工具。祝你好运

        16
  •  5
  •   bk1e    16 年前

    听起来很傻,但在玩 roguelike 游戏(例如 Nethack Angband )是一种轻松使用 h / j / k / l 用于光标导航的键。

        17
  •  4
  •   Guy    16 年前

    写下你在工作中使用当前编辑器时使用的所有快捷方式和功能。然后在周六早上坐下来,使用谷歌和堆栈溢出来了解如何在vi中完成每一项操作。如果你用一张纸来做这件事,可能是最好的。

    现在禁用/删除工作中的其他编辑器,这样你就可以花更长的时间来查找和重新安装它们,而不是查看比较表并在vi中进行操作——也就是说,你别无选择。

    最后,在博客上发布从旧编辑器到新编辑器的交叉快捷方式列表。

    祝你好运

        18
  •  4
  •   Jon Ericson    16 年前

    不使用 X11 ?

    $ sudu rm /usr/local/bin/emacs
    

    将登录外壳更改为 vi ?

    首先,强迫自己使用 ed 然后 vi 会显得很奢侈吗?

    使用 vi 中的密钥绑定 猛击 ?

    刚开始使用 vi 总是

    在我看来,学习一名编辑和学习一门语言并没有太大区别。浸入式效果最好。

    我使用 vi 用于快速编辑或无法使用 X11 出于某种原因,但我住在 emacs 。真正强大的编辑值得花时间学习。

        19
  •  3
  •   TM.    16 年前

    我的建议是想出一些简单的程序,并使用VI从头到尾地编写它们。

    很可能,一开始你会因为学习曲线而过于沮丧,以至于无法强迫自己在工作中或任何时间敏感的环境中使用它们。

    我以前这样做是为了熟悉环境/编辑器,而且效果很好。

    如果你在写东西时遇到问题,我建议你重做你在学校做过的项目(或者你以前做过的任何其他事情)。这种方法还有一个额外的好处,那就是让你看到你已经成为了一个更好的开发人员。:)

    编辑:忘了提一下,你应该完全从控制台来做这件事,以避免使用鼠标的诱惑!

        20
  •  3
  •   ben.prew    16 年前

    我记得当我第一次开始学习emacs时,那是在我对Vim已经很熟悉之后,我和你处于同一条或相似的船上,我知道如何在另一个编辑器中完成很多工作,所以当我开始使用emacs的时候,它总是非常慢。

    然而,我认为你所要做的只是吸收一点痛苦,并且总是,总是,总是确保你查阅文档,了解你所做的事情 知道 您可以在以前的编辑器中执行此操作,例如移动到一行的末尾,或者选择一个文本区域。

    如果你身边有一位本地的vi专家,你可以提出问题,或者如果你像我们公司一样,你可以推广结对编程,这也会有所帮助。这样,当你试图做一些本应简单的事情时,你可以简单地问别人,他们会向你展示如何做。如果你经常使用编辑器几周,你不应该再问几次,它就会成为第二天性。

    如果你没有任何本地资源,网上有很多书/教程/参考资料表,应该能够回答你的大部分问题。

    最终,学习Vi就像学习其他技能一样,没有灵丹妙药,你必须接受,在一段时间内,你在这方面的效率会比你现在的编辑低。只要不断告诉自己,“其他人都能学习Vi,我至少和他们一样聪明”(无论如何,我都是这么告诉自己的:)

        21
  •  3
  •   Aaron Digulla    16 年前

    我使用的主要原因 vi ssh (或Windows上的Putty):当你远程登录到Unix服务器时 vi 始终可用。当既没有映射光标键也没有映射退格/删除时,它可以与VT100配合使用。

    还有一本书 VI Editor Pocket Reference 帮助很大。

        22
  •  3
  •   Ben Combee    14 年前

    gVIM有一个非常好的教程(“开始”菜单组中的链接)。

    我发现通过这项工作有助于克服最初的学习困难;然后将我的Visual Studio切换到ViEMU帮助我磨练了VI技能。

    此外 http://vimcasts.org/ 都很棒!

        23
  •  2
  •   Garth Gilmour    16 年前

    你可以把手放在Happy Hacker的一个原装键盘上(没有箭头键),每次开始编辑时都可以把你的(无线)鼠标放在够不着的地方。

        24
  •  2
  •   Craig Hyatt    16 年前

    写出一大堆命令/快捷键很容易,但如果不练习,很难记住所有命令/快捷方式。

    一次只关注一个新命令。当它变成自动时,比如说在使用一两周后,再添加一个到你的曲目中。

    在短期内,你将走很长的路来完成某些事情——这些显然是学习新捷径的机会。

    根据我的经验,当我尽量不同时承担太多时,这会更容易。

        25
  •  2
  •   Michael Cramer    16 年前

    我的首要建议是:学会快速打字,而不需要看键盘。

    如果你不会打字,总是在寻找冒号、hjkl或:%s/foo/bar,那就别想了 可以 比使用鼠标更快,但如果不是这样的话,vi就不起作用了。

    但是结合良好的打字技能,ssh和 screen vi将是自然的。

        26
  •  2
  •   Matt Price    16 年前

    面对这样一个事实:它将立即创造一个性能上的成功。当学习一个新工具时,你需要能够做一些你知道如何使用其他工具做的事情,这样问题就不是你的问题了。使用新工具一段时间后,它将消失,你将只关注潜在的问题。

    对于类似vim的东西(正如其他人所说,vim远远优于vi),定期重读和浏览文档是很重要的。如果没有它,界面是完全无法识别的。每次新阅读时,你都会看到一个功能,并说:“啊哈,这本可以解决我上周试图解决的问题”,然后将其存档在你的大脑中。与你遇到的现实世界问题相关的解决方案比随机的快捷方式更容易记住。

    最后,你可以使用vim的一小部分功能,所以不要被所有的铃声和口哨声淹没。想想Word中的所有功能,99%的人都使用它们吗?

        27
  •  2
  •   Eduardo Marinho    16 年前

    ESC gg=G 重新生成代码和 :retab 将制表符转换为空格或将空格转换为制表符是vim吸引我的原因。所以实际上你不需要被迫使用它,你只需要学习它何时可以帮助你提高速度。

    经过 vimtutor

    开始使用vim进行简单的编辑,比如配置文件或html。根据需要学习命令。

    在谷歌上搜索一个使用类似于你的工具链的人使用的好的.virc。启用语法高亮显示。找一个漂亮的配色方案。

    学习宏,因为Vim最适合自动任务和代码段插入,比如将几个单词格式化为复杂的XML标记或将CSV转换为HTML表。

        28
  •  2
  •   sids    16 年前

    你可能想从奶油开始。Cream将自己描述为vim的“现代配置”。基本上,它是vim的一个特殊版本,在所有实际用途中,它看起来和感觉都像任何其他文本编辑器。但是启用“专家模式”,你就拥有了vim的所有力量和行为。

    因此,您可以开始使用Cream作为常规文本编辑器,然后尝试“专家模式”,直到您能够完全切换到vim为止。

        29
  •  2
  •   user13060    16 年前

    安装 gVim 在您使用的所有平台上。

    然后运行vimtutor( :help vimtutor vimtutor 在命令行)。

    观看以下讲座并遵循其建议: 7 Habits For Effective Text Editing 2.0

    我说你肯定想开始使用它进行所有的编辑。如果你担心生产力下降,那就花一个周末好好练习(我曾经这样做是为了从qwerty转到dvorak,到周一我的生产力已经足够高了,之后我设法坚持了下来)。

    付出的努力是值得的,你不会回头的!

        30
  •  1
  •   tomasr    16 年前

    就我个人而言,我要做的是确保我可以在几个应用程序中使用Vim密钥绑定(或者至少足够接近)。每当我更换编辑器时,都必须完全切换我编辑文本的方式,这使得Vim编辑风格很难致力于肌肉记忆。

    在我的情况下,Viemu+viperator做到了。