60

嗨,我主要做 C++、Objective-C 编程。而且我发现 Xcode 加上一个自动补全/宏插件(补全字典)就足够了。

然而,所有人似乎都对他们的纯文本编辑器赞不绝口。我试了一下Textmate;喜欢它的简单性,但不喜欢它的文件/框架处理。

我在这里错过了什么吗?或者,Vim 或 Emacs 的自动完成功能是否与 Xcode 一样好?

4

21 回答 21

188

拉个椅子儿子,让我谈谈这个。

早在 Xcode 出现之前,就有了 VIM 和 Emacs。我知道这很难想象,但这是真的。

许多人习惯了 VIM/Emacs,因此继续使用它。

Emacs 是高度可定制的,并且提供了几乎所有你能想象到的东西(包括内置的收缩和河内的塔)。您可以轻松地从 Emacs 调用编译器,并根据需要创建自己的扩展。

VIM 有令人难以置信的正则表达式引擎(Emacs 也有)并且非常方便,因为 (VI) 几乎随所有 Unix 操作系统一起提供,并且如果你没有箭头键(是的,是的,真正的老派),它的工作非常出色。人们非常擅长使用键来移动文档,而无需使用鼠标。

Emacs 也是如此,但对我来说,我发现 VIM 上的光标移动要容易得多。

文本编辑器之战与 Mac 与 PC 之战一样充满了宗教狂热,答案是选择最适合您的。如果你喜欢 Xcode,很好,继续使用它,但是如果你曾经被迫在 PC 或 Linux 机器上工作,祝你好运。就个人而言,我使用 Emacs 编写代码,使用 VIM 处理文本,使用 Firefox 来查看 lolcats。

于 2009-03-16T02:04:40.227 回答
15

当人们谈论文本编辑器时,我真的不明白为什么 emacs 支持。以我的经验,它更像 eclipse(或其他平台/IDE 之一)而不是 vi,因为它一个环境,恰好擅长文本编辑。

作为 IDE,emacs 具有版本控制、实时编译、拼写检查、自动完成、调试、代码浏览等功能,适用于各种 SDK。对于您的其余计算需求,它是电子邮件/新闻/网络/irc/twitter/xmmp 客户端、日历、管理器、计算器、终端仿真器、远程编辑、电子表格、游戏等等等。

在 Dijkstra 之后:“Emacs 与文本编辑无关,就像天文学与望远镜有关”

于 2009-03-16T08:15:07.997 回答
11

您缺少的是 Emacs 和 Vim 实际上是 IDE。

于 2009-03-16T02:03:02.303 回答
8

vi 在 UNIX 系统上无处不在,Emacs 也几乎如此。AFAIK,Xcode 在一个平台上。

拥有强大的 IDE 是一件很棒的事情,但每个人都应该具备一些技能,以使它们在可能被放入的任何平台上都能正常运行。

于 2009-03-16T02:09:33.943 回答
5

这完全取决于您的喜好。

有些人喜欢使用轻量级文本编辑器,如 (g)vim、emacs、pico 等。其他人喜欢使用 IDE,如 MS Visual Studio、Eclipse、Xcode。

只要您的环境与文本编辑技术兼容,一切都取决于您。

顺便说一句,我喜欢使用 Eclipse 和 vim,因为它们是我用来学习编程的东西;)

于 2009-03-16T02:09:46.097 回答
4

您似乎认为 Emacs/Vim 之类的人的主要原因是代码完成。喜欢 Emacs/Vim 的人是因为它们都是为编辑文本而生的。您拥有其他编辑器所没有的控制权和选项。一旦您真正擅长使用这些程序之一,您希望这些键绑定/命令随处可用。宏、正则表达式、通过搜索/单词/段落/功能移动、与版本控制接口、复杂的撤消/重做和复制/粘贴功能和扩展选项只是这些编辑器真正做得很好的一小部分。

代码完成只是可以使编写程序更容易的许多事情之一。Emacs/Vim 可以处理所有这些(本地或通过扩展)。

于 2009-08-05T20:32:34.273 回答
3

不,不是。这真的是一个偏好问题。我喜欢在 Visual Studio 6 中工作,但现在新版本太臃肿了。因此,如果我可以在 VS 之外做一些事情,我通常会在不打开整个 IDE 框的情况下这样做。

在 Windows 上,我喜欢 notepad2 和 gvim。我已经将 vim 定制到完全适合我的需求的程度,所以我不必考虑什么和在哪里。

但是,值得一提的是(您也可以通过阅读这些帖子自己弄清楚)很多用户使用 vim/emacs/... 因为听到了最好的/很酷的因素/实际可用性。因此,如果它不适合您,请不要使用它。没有人会因此而以错误的方式看待你。

于 2009-03-16T02:49:12.320 回答
3

我个人喜欢emacs。我使用过 vim 和一些 IDE。Vim 和 emacs 都有很棒的社区,人们愿意为几乎任何语言编写功能。我不知道任何支持 Haskell 的 IDE。这一切都取决于对你来说什么是重要的。两者都有扩展语言,尽管 IMO,emacs lisp 是两者中的佼佼者。忽略鼠标的能力也是我喜欢的主要事情。如此多的 IDE 还具有 emacs 和 vim 兼容模式或扩展。他们都有大量的时间投资,但都是值得的。迟早你会选择适合你的,vim/emacs/IDE,然后坚持用它来提高你的技能。

于 2009-03-16T06:23:57.873 回答
3

对我来说,最重要的两个特点是:

  • Emacs 键绑定,因为这是我的手指兼容的。

  • 开源,因为它提供了自由。被束缚在一个平台上是一种诅咒。

这些天来,我主要使用 Eclipse 进行编程(设置为 Emacs 键绑定)和 FSF Emacs 用于阅读邮件和一些偶尔的 LaTeX。

于 2009-03-16T08:50:02.153 回答
2

在使用 Emacs 时,除了丰富的编辑器功能外,还可以安装Cedet或 Autocomplete 包以使用某些语言的名称完成功能(C++ 还不错,但仍然不支持 Obj-C)

于 2009-03-16T07:43:11.877 回答
2

emacs 很强大。我将 emacs 与 vimpluse.el 一起使用,以便我可以将 vim 键绑定与所有 emacs 功能一起使用。

于 2011-04-18T14:48:01.293 回答
1

我主要将 Vim 用于输入模型。一旦你精通了输入模型,回到一个被迫使用鼠标的编辑器会感觉很笨拙,最终(至少对我来说)很烦人。输入“ci”以更改两个单引号之间的所有文本,然后将手从主行上移开,用鼠标查找并选择文本,最后点击“删除”,效率要高得多。

我只简单地使用过 Emacs,虽然我更喜欢 Vim,但我嫉妒它的一些功能。但我最终还是选择了 Vim,因为我找到了 Emacs 用来给我的手指带来不必要压力的和弦输入模型。

于 2009-03-16T09:22:34.650 回答
1

我有 Xcode 和 TextMate,虽然我知道它们非常强大,但我不使用它们。相反,我使用 Vim(如果您愿意,也可以使用 MacVim)。为什么 ?

因为它轻巧、快速、令人上瘾、功能强大、可定制……我可以这样持续很长时间,但最重要的是我可以用 Vim 做我想做的一切。

无论您使用哪种编辑器,最好的编辑器都是您(几乎)完美掌握的。

于 2009-03-16T11:47:46.703 回答
1

我不使用 vi 进行编码;但是,如果可用,我会在我的编辑器中使用 vi 仿真。当我在 IntelliJ 中进行 Java 编码时,我使用 IdeaVIM 插件,它在 IntelliJ 的编辑器中为我提供了 vi 支持。这意味着我几乎不必将手指从主排上移开。我用键盘导航(h、j、k、l),用 yy、dd 等剪切/粘贴。当然,当我确实需要全功能 GUI 编辑器的强大功能时,vi 仿真并不能阻止我使用这些特征。

XCode 在其编辑器中没有 vi 仿真让我发疯。似乎是任何体面的 IDE 都应该具备的功能。

于 2009-03-26T16:11:20.343 回答
1

TextMate 对我来说只是感觉更轻松。在我的头顶上:

  1. 它对文件和文件中的方法之间的跳转有很好的支持。想想 Quicksilver 的文件/方法。打开一个文件进行编辑,点击 command-shift-t 以调出一个浮动面板,列出文件中的所有方法。开始输入,列表会自行过滤。选择您想要的方法并按回车键跳转到它。Xcode 有类似的东西,但刺痛匹配更文字。

  2. 许多内置的文本扩展。键入触发器并点击选项卡以将其展开。例如,在新行上键入 m 然后按 tab 会为您创建一个方法。然后 Tab 键会智能地跳转到插入文本的各个部分,以便您可以就地编辑它们。这是一个巨大的节省时间,这太荒谬了。

  3. 对 Subversion 和 Git 的不错的插件支持。可能还有其他 VCS。

  4. 完成(如 Xcode)和历史。TextMate 允许您基本上对文件中存在的任何文本进行制表符补全。因此,一旦您键入变量名称或方法调用一次,您就可以使用选项卡在同一文件中的任何位置自动完成它。

  5. 具有历史记录的智能过去板,内置差异,主题支持,良好的键盘支持,在文件和跨项目(使用 RegEx)中查找,可能还有更多我忘记了。

无论如何,这对我来说已经足够了。

于 2009-05-25T18:21:23.403 回答
1

就个人而言,我喜欢 TextMate,因为它实际上是一个非常轻量级的解决方案。诚然,我没有深入使用过 Vim 或 Emacs(我喜欢我的 GUI)......虽然我非常喜欢基于 Control 的光标导航(Control-A 是行首,Control-E 是行尾,Control- F 和 Control-B 是前进和后退等)。所以在 Xcode 和 TextMate 之间,我在大部分严肃的开发中都使用 Xcode,但如果我只需要快速编辑源文件,我可以在 Xcode 完成启动之前启动并编码(这有助于 TextMate 可以记住以前打开过哪些文件并恢复它们)。所以对于一些轻量级的文本编辑,TextMate 是我的选择。

除此之外,TextMate 的插件支持令人惊叹;它为 Xcode 不提供的许多不同的东西(shell 脚本、CSS、SQL、LaTeX 等等)提供了全面的支持(语法着色、构建和运行等)。当我需要用 Java 快速编写程序或调整网页时,使用 Vim 然后从终端构建要容易得多。

我对 TextMate 的唯一抱怨是控制台是只读的,因此我无法构建任何交互式内容。那,以及它似乎不支持纯 C 文件中的 C99 关键字(用于循环和布尔值)的事实。

于 2011-01-02T20:16:03.540 回答
1

我是 vim 的老用户,发现我真的很喜欢打开 Vim 仿真的 Komodo 编辑。因此,我得到了 vim 键绑定的所有便利(我已经习惯了它,以至于我最近制作的一个最近的 MS Word 文档中有不少于三个“:w”)加上实现良好的代码完成C++、Python、JavaScript 等

我不使用 XCode,因为我不太开发 OS X 特定应用程序,因此 OS X 框架集成的好处不足以超过没有 vim 键绑定和“按照我们的方式做”的成本或根本不”Apple 对开发采取的方法。

于 2011-04-18T22:53:48.660 回答
0

Xcode 更像是一个 IDE,而 emacs 和 vi 用于纯文本(尽管它们有大量的扩展)。如果您使用的是较旧的系统或通过 SSH,这会更可取。此外,它们几乎存在于每台基于 UNIX 的计算机上,而 XCode 是 Apple 的专有软件。

于 2009-03-16T02:00:47.770 回答
0

你可以看看我关于为什么 Emacs 的文章?. 虽然它或多或少以 Emacs 为中心,但其中的一些观点也适用于 vim 和 TextMate。

于 2012-03-14T06:43:04.803 回答
0

我很久以前尝试过vim,出于某种原因“我没有得到它”。然后在多年来尝试其他编辑之后,我达到了一个点,似乎没有一个编辑做我想让它做的事情。在向朋友表达了我的挫败感之后,他建议我尝试 vim....我很高兴我又看了一遍,因为这是一个我不知道如何问的问题的答案!从那以后我就一直使用 Vim/MacVim...

这是我的配置: https ://github.com/RandyMcMillan/QuickVim

我也使用 Xcode,因为代码完成很好。XVim 非常适合希望在 Xcode 编辑器中获得模态/vim 感觉的人: https ://github.com/JugglerShu/XVim

但是当涉及到我的日常编辑时,Vim 每次都获胜。这就是我拥有 QuickVim 存储库的原因,这样我就可以随时随地快速重现我的环境。

我有一个 TextMate 等编辑器的许可证列表。但我很可能永远不会使用它们,因为我可以免费使用 vim 并根据我的确切规格对其进行自定义。

于 2012-12-08T01:40:14.907 回答
0

重度 Vim 用户在这里。我通常发现 Vi/Vim 的文本操作能力远远优于传统编辑器,后者缺乏以下内容:

  • 视觉模式:例如在 5 行前面加上注释 //
  • 宏:例如用引号将一行中的第 3 到第 5 个单词括起来,重复 100 行
  • 多个寄存器:想 36 个寄存器复制和粘贴
  • delete{motion}:例如从光标删除到下一次出现的“initWithFrame”

这些只是 Vim 拥有 XCode 文本编辑的几个例子

对于 Objective-C。我倾向于在 IDE 上安装 Vim 插件以获得两全其美的效果 - 原生构建/UI 组件支持。

顺便。Mac 上的许多本机 (Coacoa) 文本字段都支持 Emac 键盘绑定(例如 CTRL-A 转到行首)。包括你用来在stackoverflow上输入答案的那个:D

XVim与 XCode 一起工作。 适用于AppCodeIdeaVim

于 2014-04-23T13:26:28.330 回答