71

Xcode 附带了许多构建 iPhone 和/或 iPad 必不可少的东西。事实上,很多我什至不知道,因为它是如此“幕后”。

另一方面,我最近接触到了使用 Vim 作为编辑器的优势。在为 iOS 平台开发时,是否有任何设置可以使使用 Vim 成为一种有效的选择?或者将两者结合起来会不会让这个问题变得毫无意义?

换句话说,如果您在一起使用 Vim 和 Xcode 时有任何提示、建议或警告,我会全力以赴!

4

10 回答 10

96

使用 Vim 为 iOS 或 Mac 进行开发可以非常强大和快速,特别是如果您使用 TDD 或想要快速反馈。

但是要让它工作起来需要一些麻烦。您需要知道的几件重要的事情是:

  • 使用xcodebuild命令行工具从一些 vimscript 运行您的构建和单元。
  • 使用该clang_complete插件可以在 vim 中为您提供完整的代码完成。
  • 使用ios.vimcocoa.vim插件进行导航。

这是我首选的工作方法。事实上,我编写ios.vim插件是为了让更多人更容易做到这一点。

于 2012-07-18T21:09:32.043 回答
21

我已经去过了...

我喜欢 vim 并经常在 *nix 平台上的日常 C++ 开发中使用它,但我也喜欢 Xcode 的所有功能,特别是最新的 Xcode >= 4.3 和 clang 后端,在自动方面提供了真正的优势-完成和符号引用。

我想我已经找到了很棒的(虽然不是苹果官方支持的)XVim 插件的最佳解决方案。

希望未来的 Xcode 升级不会破坏它(它仍然可以在最新的开发人员的 4.5 预览版中正常工作),这确实可以让您在使用 Xcode 时像在 Vim 中学习的那样保持手指移动,正如我所说,对我来说是最佳解决方案。

于 2012-07-17T12:27:44.867 回答
7

如果您不尝试同时在 Vim 和 XCode 编辑器中编辑相同的文件,Vim 和 XCode 将很好地共存。如果你这样做了,那么每个人都会给你一个关于文件被外部修改的警告。Vim 的终端版本在这方面更容易使用:它只会在您尝试保存文件时警告您,询问您是否确定,而 MacVim 和 XCode 编辑器会在您每次返回时警告您到文件。

XCode 允许您在打开文件时按文件类型选择外部应用程序。在 XCode Preferences 中,转到File Types选项卡,然后转到file->text->sourcecode首选编辑器可以设置为 MacVim 等外部程序;note that Emacs should be already listed as a selection: when Emacs is selected XCode launches Terminal.app with Emacs in a terminal. 此首选编辑器设置的问题是,每个打开的文件都会出现一个新窗口,这可能与您的工作流程不匹配。

Vim 的remote特性在这里可能很有用,请参阅:help remote. 通过一些工作和上述首选编辑器首选项,应该能够将要编辑的文件发送到任何Vim 实例,包括在xterm. 我似乎记得 Emacs 提供了类似的东西。

但这并不妨碍您在设置Preferred Editor的情况下使用 Vim :只需像往常一样在 Vim 中打开和编辑您的项目文件。

您的工作流程可能是使用 Vim 来编辑代码,然后切换到 XCode 来构建项目,但 Vim 也可以运行 XCode 使用的相同构建工具,并且通过更多的工作,您甚至可以跳转到行有错误。XCode 依赖 gdb 进行调试,通过插件也可以很好地与 Vim 一起使用。

当然,不能指望 Vim 取代 Interface Builder 之类的东西,但 iOS 开发的几乎所有其他方面都可以通过仅使用 Vim 的解决方案来实现。

或者只是使用 Vim更快地编辑您的代码,其余的继续使用 XCode。

于 2012-07-17T18:24:00.143 回答
3

尽管MacVim 和 YouCompleteMe是我在 OSX 上开发的主要环境,但我更喜欢在 XCode 中完成一些任务,比如调试和分析。对于这些场景,我使用XVim,它为 XCode 添加了 VIM 编辑功能。

在 XCode 5.1上,XVim崩溃了很多。但它取得了进展,到目前为止它与 XCode 6 配合得很好。但是您只能通过这种方式获得 VIM 的一个子集,例如,您不能拆分编辑器来同时查看两个文件。您可以使用 Shift-Command-X 轻松启用/禁用它。

(很抱歉将其发布为答案而不是评论,但stackoverflow的声誉系统并没有让我成为可能)

于 2014-10-20T13:39:49.367 回答
3

从 Xcode 13.0 Beta 开始,您可以在 Xcode 中使用 Vim 键绑定。它在设置中启用:

Preferences → Text Editing → Editing → Enable Vim key bindings
于 2021-06-10T18:51:51.547 回答
1

我不能推荐YouCompleteMe!除了代码完成之外,它还可以在受影响的行上即时显示语法错误,而无需手动触发编译器(即非常类似于 XCode 编辑器的功能)。YCM 创建者的描述信息量很大:

YouCompleteMe 是一个快速的、随你输入的、用于 Vim 的模糊搜索代码完成引擎。它有几个完成引擎:一个基于标识符的引擎,适用于每种编程语言;一个基于语义的、基于 Clang 的引擎,为 C/C++/Objective-C/Objective-C++(从现在起称为“C 族语言”)...

要让它运行:

  • 按照“Mac OS X 超级快速安装”部分进行操作
  • 不要忘记将.ycm_extra_conf.py文件添加到项目文件夹的根目录

编辑:

如果没有像 YouCompleteMe 这样的插件,VIM 只能完成基本的单词补全(Ctrl-N),它既不知道您正在使用的编程语言,也不知道属于您的项目的所有其他文件。键入“。”后,您也不会得到对象成员的列表。或'->'。所以你错过了 XCode 在打字时给你的很多帮助(以及速度)。此外,当您在代码中出现拼写错误或其他错误时,VIM 不会像 XCode 一样警告您。YouCompleteMe 将那些缺失的功能准确地添加到了 VIM 中,并使 VIM 中的 iOS 开发变得愉快。

您可以使用它xcodebuild来构建和运行您的项目,但我个人更喜欢同时使用 VIM 和 XCode。双方在对方修改后自动重新加载文档。保留 XCode 用于调试、分析和部署。

于 2014-10-20T13:31:52.673 回答
1

将 AppCode 与 Xcode 并行使用真是太棒了。代码更改立即同步!我对这个设置非常满意,因为在编写 iOS 应用程序时我终于可以使用 vim(作为 AppCode 插件)了。AppCode 有额外的优势,所以我真的建议你检查一下。重构工具也更好恕我直言。例如,它可以提取 Xcode 由于某种原因不能提取的方法,如果它不能提取方法,它至少会告诉你原因。

于 2020-11-04T12:39:39.863 回答
0

使用外部编辑器肯定有一些优势(但是 emacs 比 vim 好一千万倍:})。

大多数东西都坚持使用 Xcode,但是当您需要 emacs 或可能是 vim 的强大功能时(批量重复的编辑器宏是我的主要原因),只需使用 show in finder 编辑文件并打开,或者只是切换到您的编辑器导航从那里到文件。当您切换回来时,XCode 会意识到文件已更改。

对于纯代码,我会坚持使用 Xcode,它的代码完成是基于对代码的更多了解,所以 beat 的 emacs 或 vim 的双手放下。持续的代码检查是无价的,并且如前所述,直接访问文档非常棒(如果您还没有找到它,请单击选项)。

于 2012-07-17T10:04:06.083 回答
0

我喜欢XVim的 XCode。不幸的是,它在 XCode 5.1 中中断(有些人让开发分支工作,但我做不到)。

试用后我最终切换到AppCode,我非常喜欢选项卡管理、重构和代码分析。代码会自动与 XCode 同步,因此我同时运行两者(XCode 用于构建设置、管理资产目录。AppCode 用于其他一切)。

我下载它的第一天,我安装了IdeaVim,所以我仍然可以使用一些 Vim 键盘快捷键。

虽然您不会使用该插件获得完整的 Vi/Vim 功能。我发现与本机 IDE 命令混合使用足以弥补。

于 2014-04-23T13:37:37.823 回答
-4

根据我的观点,Xcode 是更好的解决方案。它有很多你无法在 Vim 中找到/添加的功能。他们之中有一些是:

  • Interface Builder(在更短的时间内创建美观的界面)
  • ARC(自动引用计数——内存管理)
  • 用于管理代码签名和应用商店提交的自动化流程

这个列表很长,Apple 总是鼓励你使用 Xcode,而不是任何其他 IDE。

于 2012-07-17T09:49:26.133 回答