Xcode 附带了许多构建 iPhone 和/或 iPad 必不可少的东西。事实上,很多我什至不知道,因为它是如此“幕后”。
另一方面,我最近接触到了使用 Vim 作为编辑器的优势。在为 iOS 平台开发时,是否有任何设置可以使使用 Vim 成为一种有效的选择?或者将两者结合起来会不会让这个问题变得毫无意义?
换句话说,如果您在一起使用 Vim 和 Xcode 时有任何提示、建议或警告,我会全力以赴!
使用 Vim 为 iOS 或 Mac 进行开发可以非常强大和快速,特别是如果您使用 TDD 或想要快速反馈。
但是要让它工作起来需要一些麻烦。您需要知道的几件重要的事情是:
xcodebuild
命令行工具从一些 vimscript 运行您的构建和单元。clang_complete
插件可以在 vim 中为您提供完整的代码完成。ios.vim
和cocoa.vim
插件进行导航。这是我首选的工作方法。事实上,我编写ios.vim
插件是为了让更多人更容易做到这一点。
我已经去过了...
我喜欢 vim 并经常在 *nix 平台上的日常 C++ 开发中使用它,但我也喜欢 Xcode 的所有功能,特别是最新的 Xcode >= 4.3 和 clang 后端,在自动方面提供了真正的优势-完成和符号引用。
我想我已经找到了很棒的(虽然不是苹果官方支持的)XVim 插件的最佳解决方案。
希望未来的 Xcode 升级不会破坏它(它仍然可以在最新的开发人员的 4.5 预览版中正常工作),这确实可以让您在使用 Xcode 时像在 Vim 中学习的那样保持手指移动,正如我所说,对我来说是最佳解决方案。
如果您不尝试同时在 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。
尽管MacVim 和 YouCompleteMe是我在 OSX 上开发的主要环境,但我更喜欢在 XCode 中完成一些任务,比如调试和分析。对于这些场景,我使用XVim,它为 XCode 添加了 VIM 编辑功能。
在 XCode 5.1上,XVim崩溃了很多。但它取得了进展,到目前为止它与 XCode 6 配合得很好。但是您只能通过这种方式获得 VIM 的一个子集,例如,您不能拆分编辑器来同时查看两个文件。您可以使用 Shift-Command-X 轻松启用/禁用它。
(很抱歉将其发布为答案而不是评论,但stackoverflow的声誉系统并没有让我成为可能)
从 Xcode 13.0 Beta 开始,您可以在 Xcode 中使用 Vim 键绑定。它在设置中启用:
Preferences → Text Editing → Editing → Enable Vim key bindings
我不能推荐YouCompleteMe!除了代码完成之外,它还可以在受影响的行上即时显示语法错误,而无需手动触发编译器(即非常类似于 XCode 编辑器的功能)。YCM 创建者的描述信息量很大:
YouCompleteMe 是一个快速的、随你输入的、用于 Vim 的模糊搜索代码完成引擎。它有几个完成引擎:一个基于标识符的引擎,适用于每种编程语言;一个基于语义的、基于 Clang 的引擎,为 C/C++/Objective-C/Objective-C++(从现在起称为“C 族语言”)...
要让它运行:
编辑:
如果没有像 YouCompleteMe 这样的插件,VIM 只能完成基本的单词补全(Ctrl-N),它既不知道您正在使用的编程语言,也不知道属于您的项目的所有其他文件。键入“。”后,您也不会得到对象成员的列表。或'->'。所以你错过了 XCode 在打字时给你的很多帮助(以及速度)。此外,当您在代码中出现拼写错误或其他错误时,VIM 不会像 XCode 一样警告您。YouCompleteMe 将那些缺失的功能准确地添加到了 VIM 中,并使 VIM 中的 iOS 开发变得愉快。
您可以使用它xcodebuild
来构建和运行您的项目,但我个人更喜欢同时使用 VIM 和 XCode。双方在对方修改后自动重新加载文档。保留 XCode 用于调试、分析和部署。
将 AppCode 与 Xcode 并行使用真是太棒了。代码更改立即同步!我对这个设置非常满意,因为在编写 iOS 应用程序时我终于可以使用 vim(作为 AppCode 插件)了。AppCode 有额外的优势,所以我真的建议你检查一下。重构工具也更好恕我直言。例如,它可以提取 Xcode 由于某种原因不能提取的方法,如果它不能提取方法,它至少会告诉你原因。
使用外部编辑器肯定有一些优势(但是 emacs 比 vim 好一千万倍:})。
大多数东西都坚持使用 Xcode,但是当您需要 emacs 或可能是 vim 的强大功能时(批量重复的编辑器宏是我的主要原因),只需使用 show in finder 编辑文件并打开,或者只是切换到您的编辑器导航从那里到文件。当您切换回来时,XCode 会意识到文件已更改。
对于纯代码,我会坚持使用 Xcode,它的代码完成是基于对代码的更多了解,所以 beat 的 emacs 或 vim 的双手放下。持续的代码检查是无价的,并且如前所述,直接访问文档非常棒(如果您还没有找到它,请单击选项)。
根据我的观点,Xcode 是更好的解决方案。它有很多你无法在 Vim 中找到/添加的功能。他们之中有一些是:
这个列表很长,Apple 总是鼓励你使用 Xcode,而不是任何其他 IDE。