C#开发者有必要学习Emacs/Vim吗?

24

我在一家完全使用微软技术的公司担任C#开发人员。

最近在业余时间,我开始自学使用gas和Linux汇编语言。我喜欢折腾Linux,但我对它仍然很陌生。

我不停地听到应该学习VIM或Emacs,但问题是,在我的工作中绝对不需要使用它们,所以我感到有点愧疚把时间花在掌握其中一个上。更糟糕的是,我想知道学习VIM或Emacs是否会让我在Visual Studio中变得更慢,因为我会混淆快捷键。

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

对于在完全使用微软产品的环境中工作的人来说,有没有学习Emacs / VIM的真正理由?我看到VS Studio中有一项设置可以使用Emacs快捷方式,有人在掌握这些技巧后在VS中变得更加高效吗?或者换句话说,你认为值得学习它们吗?

提前谢谢!

相关: 学习VIM是否值得?
相关: 学习Emacs是否值得投资时间?
相关: 为什么要使用IDE? (从另一面看)


我经常也会有同样的困惑,但是像回车键和箭头键这样的简单操作不能按照我的预期工作,这让我很生气。这些操作已经成为了本能反应,所以让我不知道怎么摆脱。 - AaronLS
19个回答

26

开始热火朝天的争论吧 :)

我是一个VIM迷,毫不害羞地承认。我发现使用VIM可以显著提高我的日常生产效率。如果您不必将手从键盘上拿开,编码速度会更快。

默认情况下,VS对VIM绑定的支持很差。然而,有一个便宜的插件可用 (ViEmu),它为Visual Studio提供了出色的 VIM键绑定。我有个人许可证,并且我认为它把每一分钱都花得很值。

话虽如此,学习VIM有陡峭的学习曲线。在接下来的一两周里,它很可能会降低您的生产力。之后,好处就会开始显现,您应该会注意到自己的生产力得到了提升。


3
我会指出当您使用Vim时,暂时会有生产力损失。如果您回到标准编辑器,您不应该速度变慢,但最终可能会因为没有使用Vim而感到沮丧。 - he_the_great

19

我在一个90%使用Microsoft技术的公司工作,但我每天仍然使用gvim。无论我使用哪个IDE,我都会为其安装vi插件。如果你要学习其中之一,我会建议vim,但我知道emacs用户会强烈反对。

emacs和vi已经存在很长时间了,它们都非常强大。学习其中之一可能会为你打开更高效的编程世界。


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进行基本代码片段和小测试程序。我使用VS来管理项目、TFS、测试和调试。
我现在使用emacs不是出于选择。很久以前,在上一家公司,emacs是标准工具,所以它...不能说是“容易”,但它是自动的。我无法想象自己学习emacs。我通过周围其他emacs用户社区自然而然地学到了东西。从走廊里的人那里,我获取并定制了一堆我的设置的elisp代码。用书来学习...我无法想象。
至于手指混淆会使您的工作效率降低...我没有遇到过问题。

4

我曾是VIM的忠实用户,并开发了C#的智能感知插件(http://insenvim.sourceforge.net/)。但随着语言的更新,我无法避免使用Visual Studio。但很多时候,回头使用VIM是因为它更简单易用。Visual Studio占用大量内存,启动时间非常长。即使是读取文件或进行简单操作,也需要花费相当长的时间。但使用它可以轻松打开文件并导航。我可能会将VIM的智能感知移植到C# 3.0。


4

我在一家只使用Microsoft产品的公司工作,但在家里,我只使用Linux。可以说我在家里只使用Vim进行编辑。在工作中,我使用Visual Studio进行所有开发,但在需要进行复杂文本操作的任务中,我使用Vim。即使我在家里不使用Vim,它对我在工作中所做的事情仍然非常有用。我们的IT人员看到我使用Vim进行高难度操作时,认为我是某种魔术师。这肯定是有价值的,对吧? ;)


3

我过去几乎专门使用VIM,现在工作环境基本上是Microsoft公司的,但我发现来回切换并没有遇到什么问题。

VIM和EMACS非常棒,前提是你愿意学习键盘快捷方式。我发现当我来回切换时并没有遇到什么问题,而且它们与VS完全不同的环境有助于我进行思维切换。

你可以慢慢开始学习-先使用它们,看看效果如何。你可能需要一些时间适应,但这主要取决于你自己。

如果Scite适合你,并且只是抱着兴趣玩玩,那也许没有必要费力学习。但对我来说,学习新的和不同的工作/思考方法的过程也是一种乐趣。


1
我发现当我从Vim转移到像VS这样的较低级别的编辑器时,我的生产力会急剧下降,因为我习惯于在Vim中拥有的所有工具突然不见了,几乎无法恢复。 - greyfade
1
这就是我以前在VS中的感受 - 但是VS也有许多VIM没有的工具,特别是如果你有任何像resharper这样的插件。关键在于学习不同的工具集。尽管如此,我仍然喜欢VIM完成许多任务。 :) - Reed Copsey

2

在我看来,不需要。我在工作中使用acme代替vim,gedit或者vs2008。


2
掌握一款好的编辑器总是值得的,作为开发者,你花费大量时间打字纯文本、编写程序、XML、HTML,使用一款好的编辑器并有效地使用它可以节省很多时间。
我九年前开始学习 Vi,现在已经离不开它了。
无论你选择哪种编辑器,我认为几乎都能找到插件来获得你所选择的编辑器的输入模式,在所有主要的 IDE 中,对于 Visual Studio,你可以使用 ViEmuEmacs Keybindings

2

我是一名有16年专业C/C++编程经验的程序员。五年前,我学了些Common Lisp,还学会了elisp/emacs。我也涉猎Haskell。这些经验在C++编程方面帮助了我很多。即使没有其他收获,你也能看到未来,因为C++在逐渐采用CL几十年来拥有的东西时变得更加表达。

学习emacs是一个漫长缓慢的过程,当你完全熟练掌握其特性、做事方式和elisp时,它才开始产生回报。我在很多开发中使用Visual Studio,但经常会切换到emacs以利用快速使用的键宏,或在表格值上进行一些复杂处理。在elisp中,你可以快速构建许多东西,在Visual Studios插件上可能需要几个小时的挣扎。


这是完全正确的,拥有更多的工具在你的掌握之中——无论是语言还是编辑器——都能让你更有效地解决问题和完成工作。 - ashawley

1
人们如果只是把vim的“快捷键”当做简单的记忆口诀,就需要更深入地学习它。许多vim键盘命令都建立在一种非常结构化的文本导航和操作“语言”(比如说范围、计数、操作、移动、文本对象等等)之上,这远不止于普通文本编辑器中需要记忆的“快捷键”。这正是vim备受推崇并提高生产力的主要原因之一。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接