24

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

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

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

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

4

11 回答 11

114

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

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

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

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

于 2009-04-05T21:46:55.003 回答
96

viEmu 页面本身有一篇很好的文章,可能有助于回答您的问题:为什么,哦,为什么,做那些#?@!疯子用vi?

在过去的几个月里,我一直在试图教自己“正确”使用 vim,现在我几乎无法忍受使用其他编辑器,因为它们似乎动力不足且笨重。对于一个随机示例,假设您有一行代码,如下所示:

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

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

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

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

于 2009-04-06T18:25:53.060 回答
27

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

现在关键点是:

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

这就是赋予 vim 力量的原因。为了说明这一点,这里有一些最常用的命令:

  • 名词:word、sentence、block、引号和大括号。
  • 动词:c改变、 nsert ivisual、delete
  • 修饰语:inside、around、till

并说明如何混合它们:

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

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

  • d删除w命令
  • c汉恩赛德i_{

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

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

这基本上是你“需要”了解 vim 的力量并在一夜之间成为高级用户的东西。

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

PS2。我还建议将Esckey 映射到jjand kk,这会使事情变得容易得多。

于 2014-02-07T14:23:17.067 回答
7

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

也许您无意中将其置于“前模式”。这很容易完成,并且可能会令人困惑。

于 2009-04-05T22:05:56.673 回答
4

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

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

于 2009-05-01T19:47:03.817 回答
4

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

于 2010-05-05T16:32:34.563 回答
3

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

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

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

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

所以恕我直言, viEmu这是一个巨大的技术和历史挑战,但对于 95% 的开发人员来说不再如此。

于 2009-04-05T21:41:18.370 回答
2

基本上使用 Vi(或 ViM),您会变得更快,因为您不需要触摸鼠标并且键映射得到改进(这代表学习曲线成本但值得付出努力),以便以非常简单的方式进行任何文本操作基础知识是学习的。

Vi 用户需要了解的关于 Vim 的 10 件事

于 2014-07-02T02:26:32.237 回答
1

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

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

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

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

于 2009-04-05T23:01:49.847 回答
1

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

于 2009-04-06T23:27:51.867 回答
0

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

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

于 2009-04-06T18:33:06.553 回答