【问题标题】:Are there any reasons why a C# developer should learn Emacs/Vim?C# 开发人员应该学习 Emacs/Vim 有什么理由吗?
【发布时间】:2010-10-13 09:14:02
【问题描述】:

我在一家纯粹的 Microsoft 商店担任 C# 开发人员。

我最近开始在工作之余利用 Gas 和 Linux 自学组装。我喜欢玩弄 Linux,不过我对它还是很陌生。

我一直听说我应该学习 VIM 或 Emacs,但事实是,我绝对没有办法在工作中使用它们,所以我觉得花时间去掌握其中一个有点内疚。更糟糕的是,我想知道学习 VIM 或 Emacs 是否会使我在使用 Visual Studio 时变慢,因为我会混淆快捷键。

目前我正在使用 SciTE 在 Linux 中进行编辑(我认为这在 Windows 上变成了 notepad++)。

对于在纯 ms 产品环境中工作的人来说,我有什么真正的理由学习 Emacs/VIM?我看到 vs studio 中有一个使用 Emacs 快捷方式的设置,这里有没有人通过在 vs 中掌握它们来提高工作效率,或者换句话说,你认为它值得吗?

提前致谢!

相关: Is learning VIM worth the effort?
相关: Is it worth investing time in learning to use Emacs?
相关: Why should I use an IDE?(从另一边看)

【问题讨论】:

  • 我经常想知道同样的事情,但我会被简单的事情激怒,比如输入键和箭头键不能按我预期的方式工作。这太本能了,以至于我很难打破自己。

标签: visual-studio vim emacs


【解决方案1】:

开始火焰战争:)

我是一个 VIM 上瘾者,我并不羞于承认这一点。我发现使用 VIM 可以显着提高我在日常生活中的工作效率。当您不必将手从键盘上移开时,编码速度会快得多。

默认情况下,VS 对 VIM 绑定的支持很差。但是,有一个廉价的插件 (ViEmu) 可以为 Visual Studio 提供 优秀的 VIM 键绑定。我有个人执照,我相信每一分钱都值得。

话虽如此,VIM 的学习曲线陡峭。它很可能会在一两个星期内扼杀你的生产力。不过在那之后,好处就会开始出现,你应该注意到你的生产力有所提高。

【讨论】:

  • 我会指出暂时的生产力损失是在您使用 Vim 时。如果你回到标准编辑器,你不应该放慢速度,但最终会因为没有使用 Vim 而感到沮丧。
【解决方案2】:

我在 90% 的 Microsoft 商店工作,但我仍然每天使用 gvim。我使用的每个 IDE 都有一个 vi 插件。如果您要学习其中一种,我会推荐 vim,但我知道 emacs 用户会强烈反对。

emacs 和 vi 已经存在了很长时间,并且都非常强大。学习其中之一可能会让您大开眼界,进入更高效的编码世界。

【讨论】:

    【解决方案3】:

    我也在一家微软商店工作,但在家里,我只使用 Linux。可以说我只在家里使用 Vim 进行编辑。在工作中,我使用 Visual Studio 进行所有开发,但我使用 Vim 完成许多需要复杂文本操作的任务。即使我没有在家里使用 Vim,它对我在工作中所做的事情仍然非常有用。当我们的 IT 人员看到我在做 Vim 杂技时,他会认为我是某种魔术师。那一定是值得的,对吧? ;)

    【讨论】:

      【解决方案4】:

      我同时使用 emacs 和 Visual Studio,如果没有 emacs,我会很难过。 VS 当然是不可或缺的,但它没有提供 emacs 所做的文本编辑。 Emacs 对我来说是 98.4% 的编辑面板。 Visual Studio 有 12 个不同的面板,每个面板都很重要,但有时我只想看看代码。 Emacs 让我这样做。而且我可以分屏并在一个屏幕上看到 4 个编辑窗口,即使在同一个文件中也是如此。使用双显示器,我可以在每个显示器上安装 emacs 窗口。这听起来很奇怪,但是当我同时处理代码的不同部分时(假设同时处理接口定义和实现),它对我很有帮助。正则表达式搜索和替换。

      我在 emacs 中打开了自动恢复模式,这类似于 VS 功能,即“文件在 Visual Studio 之外更改,您要重新加载它吗?”除了在 emacs 中它总是默默地重新加载,这是我想要的方式。因此,我从 VS 跳到 emacs 并返回,源代码中未显示在其他编辑器中的未决更改从来没有问题。 VS 具有“全屏”功能,但我发现它不像 emacs 那样灵活或有用。

      我无法想象没有这种工具组合的能力。单独的 Visual Studio 不提供此功能。仅 Emacs 是不够的。我仍然将 emacs 用于基本的 sn-ps 和小型测试程序。我使用 VS 来管理项目、TFS、测试和调试。

      此时我不能选择使用 emacs。我很久以前在以前的一家公司捡到​​它,emacs 是标准工具,所以它......不是说“简单”而是自动的。我无法想象“自己”学习 emacs。我从我周围的其他 emacs 用户社区中学到了很多东西。从走廊里的人那里,我为我的设置获取并定制了一堆 elisp 代码。用一本书来做......我无法想象。

      至于由于手指混乱而降低您的工作效率……我没有遇到任何问题。

      【讨论】:

        【解决方案5】:

        我是 VIM 的铁杆用户,还为 C# (http://insenvim.sourceforge.net/) 开发了智能感知功能。但随着最新的语言更改,我无法避免使用 Visual Studio。但是很多时候回顾使用 VIM 是出于简单的原因。 Visual Studio 占用大量内存并且启动时间非常长。即使是读取文件或做一些简单的事情也需要几分钟。但是,打开文件和导航非常容易。我可能会将 VIM 智能感知移植到 C# 3.0。

        【讨论】:

          【解决方案6】:

          我以前几乎都是用VIM,后来搬到了几乎100%的MS店,来回切换都没有问题。

          如果您愿意学习键盘快捷键,VIM 和 EMACS 非常棒。我发现当我来回前进时我并没有真正遇到问题 - 我认为它们是一个与 VS 完全不同的环境,因此很容易进行心理转换。

          您总是可以慢慢开始 - 使用它们,看看效果如何。你会有一些学习曲线,但这在很大程度上取决于你。

          如果 Scite 对您有用,而您只是将“玩”作为一种爱好,那可能不值得付出努力。不过,对我来说,努力学习新的和不同的工作/思考方式是乐趣的一部分。

          【讨论】:

          • 我发现当我从 Vim 转移到像 VS 这样的小编辑器时,我的工作效率会急剧下降,因为我习惯于在 Vim 中拥有的所有工具突然不存在并且几乎不可能恢复.
          • 这就是我过去在 VS 中的感觉——但 VS 有许多 VIM 也没有的工具——尤其是如果你有任何像 resharper 这样的插件的话。这一切都是为了很好地学习不同的工具集。不过,我仍然喜欢 VIM 来完成许多任务。 :)
          【解决方案7】:

          掌握一个好的编辑器总是值得的,作为一名开发人员,您花费大量时间输入纯文本、编写程序、XML、HTML,您可以节省 很多那个时候通过使用一个好的编辑器并有效地使用它。

          我像九年前一样开始学习 Vi,现在我离不开它。

          无论您选择哪种编辑器,我想几乎您都可以在所有主要的 IDE 中找到插件来拥有您选择的编辑器的输入模型,对于 Visual Studio,您可以使用 ViEmuEmacs Keybindings

          【讨论】:

            【解决方案8】:

            我从事专业 C/C++ 程序员已有 16 年了。 5 年前,我学习了一些 Common Lisp,最后也学习了 elisp/emacs。我也涉足 Haskell。我发现这些经验对 C++ 编程非常有帮助。如果不出意外的话,您会看到未来,因为 C++ 通过采用 CL 几十年来拥有的东西慢慢变得更具表现力。

            学习 emacs 是一个漫长而缓慢的过程,一旦您完全熟悉它的功能、做事方式和 elisp,就会开始获得回报。我在很多开发中都使用 Visual Studio,但我经常切换到 emacs 以利用快速使用关键宏的优势,或者对值表进行一些复杂的处理。很多东西你可以在 elisp 中快速敲出,而使用 Visual Studios 插件需要花费几个小时的时间。

            【讨论】:

            • 这完全正确,拥有更多的工具——语言或编辑器——可以让你更有效地解决问题和完成工作。
            【解决方案9】:

            恕我直言,不。我在 vim 上使用 acme。 工作中的 gedit 或 vs2008。

            【讨论】:

              【解决方案10】:

              学习一个将是完全值得的。我个人会推荐emacs,但我有偏见。我 99% 确信可以将 emacs 设置到 .net 开发后端(抱歉,想不出合适的词)。

              【讨论】:

                【解决方案11】:

                JaredPar 提到了ViEmu,我听说过非常好的事情。但如果你真的想知道切换的好处是什么,ViEmu 网站上有一篇很好的文章:Why, oh WHY, do those #?@! nutheads use vi?

                我个人觉得使用 gvim 极大地提高了我的工作效率,我绝对更喜欢它而不是 Visual Studio 编辑器或 SlickEdit 或我使用过的任何其他工具。但正如前面的答案中提到的,Vim 可能是一个陡峭的学习曲线。有些人已经专业使用它 5-10 年,并且仍在学习它。 Vim 可能很像 perl...有很多方法可以进行任何一系列的编辑,而学习最好的方法可能需要一段时间。

                【讨论】:

                  【解决方案12】:

                  我使用(并且喜欢)Emacs,但我可以理解那里的 vi 人(我总是在极简主义和厨房水槽主义之间左右为难)。是什么让我日复一日地使用 Emacs,以及让我最终放弃我曾经使用过的每一个 IDE,是我可以编写 函数。当我说 functions 我的意思是 functions;我真的可以编程编辑器本身。我添加了一个新函数,对其进行评估,然后 bam 现在它在我的编辑器中。如果我大量使用该功能,那么它会获得一个键绑定。

                  我注意到,对于 IDE,它们在特定语言方面表现出色(Eclipse 对于 Java 开发来说是惊人的)。我不认为 Emacs 擅长任何一种语言(可能作为 Lisp IDE 除外,但我不会在这里尝试赞美它的优点......)作为专用 IDE,但它更擅长语言 N,其中“N”实际上是或将发明的任何编程语言。如果我正在学习一种新的编程语言(或者甚至只是在 C、PowerShell、Haskell、Lisp、Java 等任何一种语言之间来回切换),那我的环境会很舒服而且很能干,这很好。那么我的回答是“是”,因为 Emacs(或者我认为是 vi)在您的工具集中为您提供了可移植性。你今天可能正在使用 C#,但下线,谁知道你可能会在 Monad#++ 上进行黑客攻击,如果你是,你可以打赌会有一个 Emacs 模式。

                  【讨论】:

                    【解决方案13】:

                    一直提到vim“快捷键”的人应该更深入地学习它。很多 vim 的键盘命令都使用一种真正结构化的文本导航和操作“语言”(即范围、计数、动作、移动、文本对象等),而不仅仅是你必须记住的“快捷方式”就像在大多数文本编辑器中一样。这就是 vim 受到欢迎以及它在生产力方面备受赞誉的提升的主要原因之一。

                    【讨论】:

                      【解决方案14】:

                      看看 JP Boodhoo 以及他在做什么www.jpboodhoo.com。他和 Kyle Bailey 最近一直在写博客,介绍使用 VIM 作为 VS2008 开发经验的一部分。

                      【讨论】:

                        【解决方案15】:

                        您至少应该学习如何在 VIM 中保存 (:w) 和编辑文件(魔法)——即使是最小的操作系统安装也包含它。这样,如果你被困在一个空的 unix 盒子上,你至少可以编辑文件。

                        否则,不——我不相信炒作。你有更大的鱼要炸,nano 一直在变得更好。哎呀,nano 有一些语法着色和自动缩进,它甚至可以在 PuTTY 上使用鼠标。

                        最好的学习方法是如何在您的 unix 机器上配置 Samba,然后在您的 Windows 机器上使用真正的文本编辑器,例如 UltraEdit(提示火焰战争)。我使用此配置来编辑比 /etc 中的配置文件更大的任何内容。

                        【讨论】:

                        • 在学习 vim 之前,我使用的是 nano。但是在使用 vim 并习惯了所有的键盘快捷键之后,nano 变得非常烦人。
                        【解决方案16】:

                        我也是一名长期的 C# 开发人员。在 Linux 中开发 C++ 时,我使用 Eclipse CDT,因为它是我发现的最接近 Visual Studio 的东西。

                        对 vim 非常有经验,我用它来编辑 Linux 配置文件等,但当我可以只使用 IDE 时,我并不特别喜欢它进行开发。

                        顺便说一句,如果你使用 vim,你可能想要启用行号和语法高亮;我总是将这些行添加到我的 ~/.vimrc 文件中:

                        number on
                        set syntax
                        

                        【讨论】:

                          【解决方案17】:

                          如果您将 Vim 与 VS 一起使用,或者正在考虑使用它,您应该了解 Vim Intellisense 项目: http://insenvim.sourceforge.net/

                          【讨论】:

                            【解决方案18】:

                            编码速度在很大程度上取决于编辑器的选择,因此它是您将采取的最重要的决定之一。

                            【讨论】:

                              【解决方案19】:

                              我使用了 Vim 和 Emacs,但它可能慢了 5%。我曾经测量过开发人员实际输入代码的时间(我不是在谈论滚动),它可能大约占您一天的 5%。我们正在争论大约 5% 的 5% ...

                              归结为 Emacs 和 Vim 用户已经使用了很长时间,他们懒得换了。他们中的大多数人只能通过鼠标驱动 VS,并且不知道大多数热键。

                              【讨论】:

                                猜你喜欢
                                • 2010-11-08
                                • 2011-02-08
                                • 2010-11-08
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2018-03-19
                                • 2010-11-22
                                相关资源
                                最近更新 更多