不久前,我读到 viemu 创建者的文章, ,澄清了很多关于 vi 的误解,并解释了为什么它是一个好主意(以及为什么它在过去 30 多年里非常流行)。同一个人也有 一套很棒的图形备忘单 一次教授一些基础知识。

我相信。

事实上,过去两年我一直深信不疑。但我还没有抽出时间强迫自己学习 vi 作为我的主要编辑器,学习曲线太高了。当我开始工作时,可接受但即时的生产力(使用我当前的编辑器)到目前为止已经超过了进一步的巨大生产力(使用 vi)。

有人有什么好的建议可以帮助克服学习曲线吗?它可以是直接的提示、其他教程或文章,等等。

编辑:请注意,我知道 vim/gVim, 奶油麦克维姆 (等)vi 的变体。我保留了关于 vi 的问题,以指代整个 vi 家族。感谢所有精彩的答案。

更新(2009 年 4 月)

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

祝大家都能顺利掌握 Vim。

有帮助吗?

解决方案

首先,你可能想选择 Vim;它拥有极其优越的功能集以及 ​​vi 所拥有的一切。

也就是说,学习需要纪律。如果您有工作并且无法承受生产力下降(不会被解雇),我建议您参加一个周末项目,其唯一目的是学习编辑器。工作时保持文档开放,并保持足够的纪律,不要畏缩。当你学得更多、变得更有效率并开始依赖肌肉记忆时,坚持下去就不会那么困难了。

我已经使用 Vim 太久了,以至于我什至没有想过要按什么键来搜索、导航或保存。我的手从来没有离开过键盘。使用 Vim 是我在编程生涯中做出的最佳选择之一。

其他提示

我要做的第一件事就是在你的箭头键和 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 最大的好处之一就是它的速度。箭头键还会阻止您真正拥抱模态性质,而掌握了模态性质后,它的功能将非常强大。

步骤0: 学习盲打。说真的 - 如果你的手指不知道按键在哪里,那么 vim 将是一个痛苦。即使你拒绝 vim,盲打也会 提高你的编程能力 (问 史蒂夫·叶格 )通过让大脑无摩擦地监控链接。有一个 很多软件 这可以帮助您提高打字水平。

步骤1: 使用 维姆导师 让您开始。它在GVIM中(我认为在“帮助”菜单下),或者您只需在命令行中键入“ Vimtutor”。您的时间将需要30-45分钟,然后您的手指将知道VI/VIM的基础知识,并且您应该能够编辑文件而不希望将键盘从窗口扔出。

第2步: 到处使用 vim。看 这个问题有关在命令行中使用vim和vi键绑定的提示和链接,从您的Web浏览器,在您的IDE中撰写电子邮件...您需要使用VIM将钥匙绑定嵌入肌肉记忆中。

步骤3: 了解有关 vim 的更多信息。您只会用Vimtutor刮擦表面。你可以 看这个视频 或阅读 本文 (都涉及“有效文本编辑的七个习惯”。你可以关于尖端技巧堆栈溢出。您可以浏览 维姆提示. 。经常学习一条插座是我的建议 - 那里有很多东西,以至于坚持咬合大小的块将是使知识棒的最佳方法。

步骤4: 利润 :)

这些年来我一直断断续续地使用 vim(偶尔做一些系统管理工作)。我最近才开始花更多的时间在其中进行编程工作。我也建议从 gvim 开始。它与大多数操作系统环境集成良好,并且(甚至更好),您可以在需要时重新使用鼠标:)。

要开始使用 vim, 通过 vimtutor 运行 (与 gVim 捆绑)一次或两次(需要一个小时左右)。我无法夸大它对我有多大帮助!尤其是第一部分,涉及在文档中移动的不同方式,以及如何使用动作命令记录编辑操作等。之后,事情就会清楚得多。

然后,开始用它进行快速、细微的编辑(记事本替代品),直到您能够轻松地快速进行有用的编辑。然后尝试在其中完成日常工作。您很快就会发现自己渴望其他编辑器中的“重复上一个操作”命令!

您寻求一些好的技巧来帮助克服 vi 文本编辑器的学习曲线。之前的许多答案建议您不要使用其他编辑器。我认为这是个好建议。从图形化编辑器切换到 vi 需要改变思维方式。它需要根据命令进行思考,而不是视觉变化。

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

这是关键。 当我熟悉其中一个命令后,我用铅笔在其中画了一条线。如果需要的话我仍然可以看到它,但这对我来说象征着我已经掌握了这个命令。这给了我信心和动力,因为我可以看到定期的进步。当我划掉大部分命令后,我将它们删除并添加了一些很少使用的命令。我继续这个过程,直到我对 vi 的命令感到满意为止。当我意识到我已经很长时间没有划掉任何命令,甚至没有查看列表时,我知道我已经达到了这一点。

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

对我来说,VI 是一个很好的紧急编辑器,但如果有其他可用的替代方案,我不想使用它。我意识到这并不适合所有人,我并不是说它很可怕或什么,我只是个人更喜欢可发现的用户界面。

但如果您在 Linux 中做任何重要的事情,您确实必须了解 VI!

所以只需学习基础知识:i =插入模式ESC =离开插入模式:wq =保存和退出:q!=不要保存并退出x =不在插入模式时,请删除字符。/=搜索

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

尽管保留参考资料或书籍(当您需要使用 VI 时,您可能无法浏览网络),但手册页可能会有些用处。

不要强迫自己。通往主宰爱情的道路是。

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

您从一开始就应该做的另一件事是根据您的需要配置 vi。例如,您可以将 vim 转换为 Python集成开发环境. 。通过这样做,您将没有借口使用其他编辑器,因为 vi 将为您提供所需的一切。

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

那么你就必须学习它。

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

每次您执行复杂的编辑任务时,请不断想知道是否有更有效的方法来完成它。大多数时候,当你可以用简单的术语描述它时(例如“交换文本段落”或“删除注释行中 X 字符后面的所有内容”),你只需在 vim 中敲击几下按键即可完成。

有一些非常有用的关键功能,您将永远不再使用。我最喜欢的是:

  • 块选择 (Ctrl-V)
  • 宏录制 (q)
  • 虚拟编辑(:set ve=all)
  • 常用表达
  • 通过管道连接到外部 Unix 程序
  • 键映射
  • 自动完成(C-p、C-x C-p、C-x C-f)
  • 操作+动作组合(这个威力惊人)

询问其他程序员他们认为哪些功能最有用,并采用更适合您大脑的功能。窃取他人的想法 .vimrcs(这是我的)

编辑:我已经创建了 在在线间隔重复网站 flashcarddb.com 上设置的抽认卡, ,如果你有兴趣的话...

  1. 使用间隔重复闪存卡程序,例如 记忆力, 超级备忘录, , 或者 安基 将学习和保留新命令融入您的日常生活中。使用 vim 作为日常编辑器是不够的。要掌握它,您必须将这些代码存储在头脑中,等待它们成为手头任务的理想解决方案的时候。
  2. 维护带有自定义内容的 .vimrc
  3. 编写或编辑 vim 插件

我写了一份指南 使用 Vim 进行高效编辑 一会儿回来。您可能会发现它很有帮助。

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

例如,Vim 的 CTags 集成对我来说是完全不可或缺的。我使用非常非常大的代码库,并且通过一次击键跳转到函数或类定义的能力(无论它位于哪个文件中)绝对是一个杀手级功能,没有这个功能我就很难工作。

使用 .vimrc 文件创建可自动执行常见任务的宏。

您的自动驾驶编辑器选择器将选择能够以最快的速度和最少的脑力劳动完成工作的编辑器。一些准备工作将确保编辑器是 Vim。:-)

有两件事可以极大地提高你的 vi 技能:

  1. 练习,练习,练习
  2. 网络黑客

我的建议:从小处开始。首先记住一小组最有用的命令。当我开始 vi 时,这些是我最喜欢的 10 个:

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

仅使用这些命令即可完成许多基本编辑。一旦你适应了,剩下的看起来就不那么困难了。

顺便说一句,我想补充一点,我曾经依赖 vi 作为我的主要文本编辑器,但现在只有在必要时才这样做。就我而言,当我使用 Emacs 或 Visual Studio 等工具时,工作效率会更高(请注意:“就我而言”)。尝试多种工具,然后选择最能帮助您提高工作效率的工具。祝你好运!

听起来很傻,但是玩起来 Roguelike 游戏(例如 网络黑客 或者 安格班德)是一种熟悉使用的有趣方式 h/j/k/l 光标导航键。

写下您在工作中使用当前编辑器时使用的所有快捷键和功能。然后在周六早上坐下来,使用 Google 和 Stack Overflow 了解如何在 vi 中完成其中的每一项。如果您使用一张(或多张)纸来完成此操作,可能最好。

现在禁用/删除工作中的其他编辑器,这样您查找并重新安装它们的时间就会比查看比较表并在 vi 中完成要花费的时间 - 即你没有选择。

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

祝你好运!

不要使用 X11?

$ sudu rm /usr/local/bin/emacs

将您的登录 shell 更改为 ?

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

使用 键绑定在 巴什?

刚开始使用 每时每刻?

在我看来,学习编辑器与学习语言并没有太大不同。沉浸式效果最好。

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

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

很可能,您一开始会对学习曲线感到非常沮丧,从而无法强迫自己在工作或任何时间敏感的环境中使用它们。

我之前已经这样做过以熟悉环境/编辑器,并且效果很好。

如果您在想出要写的东西时遇到问题,我建议重做您在学校所做的项目(或您以前做过的任何其他项目)。这种方法还有一个额外的好处,可以让您看到自己已经成为一名更好的开发人员。:)

编辑:忘记提及,您应该完全从控制台执行此操作,以避免任何使用鼠标的诱惑!

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

然而,我认为你要做的只是吸收一点痛苦,并且总是,总是,总是确保你查找文档来完成你想做的事情。 知道 您可以在以前的编辑器中执行此操作,例如移至行尾或选择文本区域。

如果您有当地的 vi 专家可以提问,或者如果您像我们公司一样,您可以推广结对编程,这也会有所帮助。这样,当您尝试做一些应该很简单的事情时,您可以简单地询问某人,他们会向您展示如何操作,并且如果您定期使用编辑器几周,则不必询问更多然后几次,然后它就成为第二天性。

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

最终,学习 Vi 就像学习其他技能一样,没有灵丹妙药,您必须接受这样的事实:在一段时间内,您的工作效率将低于当前的编辑器。只要不断告诉自己,“其他人已经能够学习 Vi,而我至少和他们一样聪明”(无论如何,这就是我告诉自己的:))

我使用的主要原因 vissh (或 Windows 上的 Putty):当你远程登录到 Unix 服务器时,然后 vi 始终可用。当光标键和退格键/删除键均未映射时,它可以与 VT100 一起使用。

还有一本书像 VI 编辑器袖珍参考 有很大帮助。

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

我发现解决这个问题有助于克服最初的学习障碍;然后将我的 Visual Studio 切换到 ViEMU 帮助我磨练了我的 VI 技能。

此外,截屏视频位于 http://vimcasts.org/ 太棒了!

每次开始编辑时,您都可以使用原始的 Happy Hacker 键盘(无箭头键)之一,并将(无线)鼠标放在够不到的地方。

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

一次专注于一个新命令。当它变得自动时,比如使用一两周后,在你的保留曲目中添加另一个。

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

根据我的经验,当我尝试不要一次承担太多事情时,事情会变得更容易。

我的第一建议是:学会快速打字,无需看键盘。

如果您无法触摸打字并且总是在寻找冒号或 hjkl 或 :%s/foo/bar,那就算了。打字 比使用鼠标更快,但如果您不是这种情况,vi 将无法工作。

但结合良好的打字技巧、ssh 和 屏幕 vi 将是自然的。

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

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

最后,您可以使用 vim 的一小部分功能,因此不要被所有的附加功能所淹没。想想Word的所有功能,99%的人都用过吗?

ESC gg=G 重新缩进代码并 :retab 将制表符转换为空格或将空格转换为制表符是让我着迷于 vim 的原因。所以实际上你不需要强迫使用它,你只需要学习它什么时候可以帮助你提高你的速度。

经过 vimtutor.

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

在 google 中搜索一个好的 .vimrc,该文件由使用与您类似的工具链的人使用。打开语法高亮。找到一个漂亮的配色方案。

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

您可能想从奶油开始。Cream 将自己描述为 vim 的“现代配置”。基本上,它是 vim 的一个特殊版本,在所有实际用途上,其外观和感觉与任何其他文本编辑器相似。但是启用“专家模式”,您就拥有 vim 的所有功能和行为。

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

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

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

观看以下讲座并遵循其建议: 有效文本编辑的 7 个习惯 2.0

我说你肯定想开始使用它进行所有编辑。如果你担心生产力下降,那么花一个周末来认真练习(我曾经这样做是为了从 qwerty 切换到德沃夏克,到周一我的生产力已经足够高,并且之后设法坚持下去)。

这是值得的,你不会回头!

就我个人而言,我必须做的是确保我可以在多个应用程序中使用 Vim 键绑定(或者至少足够接近)。每当我更换编辑器时,都必须完全改变编辑文本的方式,这使得 Vim 编辑风格很难记住。

就我而言,Viemu + vimperator 就达到了目的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top