【问题标题】:What's the point of viEmu plugin for Visual Studio?Visual Studio 的 viEmu 插件有什么意义?
【发布时间】:2010-10-17 17:04:16
【问题描述】:

这听起来可能有点挑衅,但实际上是一个真实的问题。如果您不喜欢这种语气,请随意编辑。

现在,就我 10 年前对 vi 的短暂体验所了解的情况而言,它是一个原始的文本编辑器,在滚动条发明之前创建的屏幕底部有一个可编辑的行,还有一些疯狂的快捷方式需要克服这个限制。

有人可以解释一下如何使用它比使用普通的 VS.NET 编辑器更有效率吗?此外,为什么有人要使用 viEmu,据说它会将您的 VS.NET 变成一个古老的 vi?

我愿意尝试一下,但我需要一些动力来克服学习曲线。

【问题讨论】:

  • 我真的不知道答案,但我可以推荐你xkcd.com/378:P
  • vi 不是“底部有一个可编辑行”的文本编辑器。你一定在想像 ed 这样的老编辑:en.wikipedia.org/wiki/Ed_(Unix)
  • 如果你想尝试 Vi 的东西,我建议从 GVim 开始,而不是 viEmu。我的同事最近才开始使用 viEmu(之前从未使用过 Vi),他说从 GVim 开始并在 VS 环境之外学习 Vi 的东西要容易得多,然后才开始在 Visual Studio 中使用它。
  • 另外,请查看 vimtutor(随我使用的每个版本的 vim 提供)。我通过几次学习了解了 vim 的基础知识。

标签: visual-studio vim vi viemu


【解决方案1】:

我认为他们在 viEmu 主页上对您的问题有一个很长且可以接受的答案:

另一个更强大的例子:让我们以'ce'命令为例,它由'c'和'e'组成。 'c'change 命令删除下一个运动命令指定的范围,同时进入插入模式。它与 'd' 相同,但区别在于它进入插入模式,而不是停留在正常模式。好处是您在下一个(短)输入会话中键入的文本也是命令的一部分。所以如果你做'ceHello>',你所做的就是用'Hello'和'.'替换从光标到单词的结尾。之后的命令将完全像这样工作:将单词的末尾替换为“Hello”。

来自: http://www.viemu.com/a-why-vi-vim.html

我在大约半年前安装了 viEmu。但我不得不说(也许没有强大的 linux 经验)我从未使用过它。太陌生,太遥远,太复杂。

所以恕我直言,viEmu 这是一个巨大的技术和历史挑战,但对于 95% 的开发人员而言,就没有更多了。

【讨论】:

  • 阅读链接页面后,我接受这个答案为“正确的”。我更喜欢 Chad Birch 的答案,但这是第一个给出(现在很明显)链接的答案。
  • 转念一想,为了后代的读者,我不得不从这个答案中撤消我的声音,并把它交给 Chad Birch。成为第一个发送链接的人很酷,但能够提供有用的答案更重要。
  • 你为什么(购买和)安装它?
【解决方案2】:

老实说,您似乎从未见过真正精通 Vi 的人使用过它。当您通常使用 Visual Studio 时,您会经常将手移到鼠标上,点击选项、对话框、类等。

使用 ViEmu,您的手永远不会离开键盘。您正在编译、切换文件、突出显示文本组、修复缩进、对代码执行复杂的动作并在几秒钟内运行正则表达式搜索。对于打字速度很快的人来说,它可以让您实现以其他方式无法完成的任务的速度。

许多人会反驳说,“我的大部分开发时间都花在思考上。使用这些工具所获得的额外速度可以忽略不计。”。

在我看来,这不是论据。确实,对于大多数大型编程任务,您花费的时间比实际编写代码要多得多。但这并不意味着能够以 2 倍的速度通过 IDE 表达自己不会影响程序员的工作效率。

【讨论】:

  • 希望我能给你的答案加倍投票。我发现 ViEmu 是一个非常宝贵的工具
  • 但是如何让它成为可能呢?其他编辑所缺乏的秘诀是什么?
  • 非插入模式。大多数编辑器只是插入模式,但 Vi 有许多其他模式,它们对键的解释不同。这使您可以更快地四处移动和修改事物(例如:您可以获得大量导航命令,而不仅仅是箭头键移动)。
  • @zvolkov,就像 Herms 所说的,非插入模式。你有很多复杂的“动作”,你可以将它们和某些命令结合起来做一些漂亮的事情。
  • 一旦它真正进入您的脑海,就像打字一样,您只需想您想要的,然后您的双手就会为您完成工作。
【解决方案3】:

您对“屏幕底部的一个可编辑行”是错误的。窗口中的所有文本都是可编辑的。它确实滚动(所有版本),并且在 gvim 的情况下,有滚动条。

也许您无意中将其置于“前模式”。这很容易做到,但可能会造成混淆。

【讨论】:

    【解决方案4】:

    我没有使用 VS.Net 的经验,但我想它具有与任何其他 IDE 相同的功能。

    我发现在我的 IDE 中学习编辑器的所有关键命令足以替代 Vi。诸如重命名、缩进、格式化、移动行之类的东西。

    所以我想主要的胜利将是那些已经了解 Vi 的人无需学习 VS.Net 就能高效工作。

    不过话又说回来,Vi 有一些真正深奥但强大的功能,可能是标准 IDE 编辑器无法比拟的。

    【讨论】:

      【解决方案5】:

      viEmu 页面本身有一篇很好的文章可能有助于回答您的问题:Why, oh WHY, do those #?@! nutheads use vi?

      在过去的几个月里,我一直在尝试教自己“正确”使用 vim,现在我几乎无法忍受使用其他编辑器,因为它们看起来功能不足且笨重。举一个随机的例子,假设你有一行代码如下所示:

      $welcomeMessage = "Welcome to SiteName!"; // shows at the top of homepage
      

      在普通编辑器中,您将如何更改字符串?您可能必须伸手抓住鼠标并仔细选择它,或者将光标移到第一个引号内,然后按住 Shift 和右箭头,直到到达右引号。

      在 vim 中,将光标放在引号之间的任意位置,我输入 ci",它会删除引号内的所有内容并让我进入插入模式,以便我可以输入新值我想要。我的手甚至不必从正常的打字位置移开。

      这样的东西太多了,我想你真的需要花点时间使用编辑器才能了解它的强大。一开始很慢而且很难使用,这就是为什么很多人尝试了很短的时间并认为“这很愚蠢,一切都变得更难了”,但过了一段时间你开始从动作的角度思考,这一切开始变得自动化,它比使用“普通”编辑器快得多。正如我所说,我现在不能回去。

      【讨论】:

      • The ci" 示例在 6.4 中不起作用;然后我在 7.2 中尝试了它,它确实起作用了。仅供参考
      • 这些被称为文本对象,最近添加的内容确实很棒,请参阅:帮助文本对象。如果您想选择/更改/删除分隔符之间的文本,那么很可能有一个文本对象可以处理它
      • @Ben 或其他任何人:文本对象何时添加到 vim?即使是 2000 年代,拥有这样一个核心功能似乎也很晚了。我在“vim add text-objects changelog”下找不到答案
      【解决方案6】:

      这些天我实际上只使用 VS 进行调试。使用 vim(真正的 vim,而不是 viemu)编码只是一种更好的体验。

      现在,我不会声称使用一个比另一个对生产力有任何影响 - 毕竟我大部分时间都在试图找出解决问题的方法 - 输入代码是很容易的部分。

      【讨论】:

      • 相比 Vim 本身,我更喜欢带有 vim 插件的 IDE。常规 Vim 失去了 IDE 的许多额外功能(语言感知自动完成等)。 Netbeans + jVi 插件比 Netbeans 或 Vim 要好得多。虽然普通的 Vim 非常适合没有任何好的 IDE 的语言。
      【解决方案7】:

      我认为你真的应该试试 Vim。
      如果您在十年前快速尝试过 Vi,我可能会理解您不欣赏它。乍一看,它并不是真正的用户友好。实际上,当您开始对这些动作感到舒适并开始通过定制使其成为您自己的时,它的真正力量就会显现出来。 一旦你熟悉了 Vim,你就会明白为什么它值得学习。

      【讨论】:

        【解决方案8】:

        另一个答案让我想到,观看一些使用 vim 进行的熟练编辑会很有启发性,所以我挖出了这段视频,展示了编码时的基本动作和更高级的动作。这个人甚至可以使用一些标记等来提高效率,但它给出了一个想法。

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

        【讨论】:

          【解决方案9】:

          如果您需要灵感或想见见真正了解他们在使用 Vim 做什么的人,请查看 Gary Bernhardt 的 Python 中的字符串计算器 Kata,看看他吧! http://vimeo.com/8569257

          【讨论】:

            【解决方案10】:

            我也很难理解为什么人们选择 vim 作为他们的编辑器,即使我不时使用它,直到我终于“得到它”。我认为大多数解释是“为什么?”失败了,因为它们没有显示出几个关键点。要解释这些要点,首先您需要了解在 vim 中您主要在命令模式下操作文本。即默认情况下,您的按键是命令,通常不插入任何文本,除非这些命令(如 apend、insert、c hange) 切换到插入模式。这让您无需触摸鼠标或将手从“编辑姿势”移开即可轻松导航和编辑文本。

            现在关键点是:

            • Vim 命令分为名词、动词和修饰语。
            • 通过组合它们来执行编辑。

            这就是 vim 的强大之处。为了说明这一点,以下是一些最常用的命令:

            • 名词:word、sentence、block、引号和大括号。
            • 动词:cchange、insert、visual、delete
            • 修饰符:inside,around,till

            并说明如何混合它们:

            • 想换个词? cw
            • 相同,但光标在单词中间? caw
            • 更改引号内的文本? ci",也要换引号吗?ca"
            • 删除函数体? di{
            • 删除直到第一个逗号? dt,
            • 删除直到第二个逗号? d2t,
            • 跳转到第一个逗号? t,
            • 选择单词? viw

            还要注意所有命令如何很好地翻译成自然语言:

            • d删除 word
            • change inside {

            在 vim 中,如果你学习了一个新的动词、名词或修饰语,你可以很容易地与你已经知道的东西混合搭配。所以基本上只学习一件事,你就会学会如何做很多不同的事情。

            另一个很棒的事情是 vim 会记住您使用过的命令,您只需按 . 即可重复该序列。对于这篇文章,我不得不用 标记包围很多字母。但我只这样做了一次,然后只是检查每个字母并按 ..

            这基本上是您“需要”了解 vim 的强大功能并在一夜之间成为高级用户的东西。

            附:如果你不喜欢 vim,因为它是基于控制台的并且想要一个现代的文本编辑器,那么我建议你研究一下 Sublime Text 编辑器,它是一个很棒的编辑器,也支持 vim 模式。

            附注 2。我还建议将 Esc 键映射到 jjkk,这让事情变得更容易。

            【讨论】:

            • 能否详细说明 Esc 到 j j/k k 的映射?
            • @DrewNoakes 当您进入插入模式时(即,当按下键实际上将字符插入编辑器时)您通常通过按 Esc 键退出回到命令模式。这有点麻烦,所以很多 vim 用户映射 jj 和/或 kk 以快速退出插入模式,而无需从打字姿势中抬起手。您可以通过将inoremap jj <ESC> 添加到您的 .vimrc 文件(或给定编辑器的其他方式)来做到这一点。这将使得如果你按下 jj 而不在两者之间暂停,vim 将退出到命令模式。如果两个 j 之间有几秒钟,那么 vim 将插入 "jj" 字符串。
            【解决方案11】:

            基本上使用 Vi(或 ViM),您会变得更快,因为您无需触摸鼠标,并且改进了键映射(这代表学习曲线成本,但值得付出努力),可以非常轻松地进行任何文本操作一旦学习了基础知识。

            Top 10 things Vi user need to know about Vim

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-07
              • 1970-01-01
              • 2012-05-19
              相关资源
              最近更新 更多