【问题标题】:Using Vim instead of (or with) Xcode for iOS development使用 Vim 代替(或与)Xcode 进行 iOS 开发
【发布时间】:2022-04-05 21:28:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios xcode vim


    【解决方案1】:

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

    但是要让它工作起来需要一些麻烦。您需要了解的几个重要事项是:

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

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

    【讨论】:

    • 我也对 VIM 为开发带来的生产力提升有所启发。 @eraserhd 绝对证明了这一点适用于 iOS/Cocoa 开发。我会自己挖掘。
    • 这可以在 Linux 下工作吗?您可以通过此设置使用应用商店吗?
    【解决方案2】:

    我已经去过那里了……

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

    我想我已经找到了最佳解决方案(尽管 Apple 未正式支持)XVim plugin

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

    【讨论】:

    • 看来xvim有很多bug,有些vim命令不能用
    • 于 2019 年 5 月 19 日损坏
    • XVim2 似乎正在工作。在 Xcode 11.4.1 中测试。 github.com/XVimProject/XVim2
    【解决方案3】:

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

    XCode 允许您在打开文件时按文件类型选择外部应用程序。在 XCode Preferences 中,转到 File Types 选项卡,然后转到 file->text->sourcecode首选编辑器可以设置为MacVim等外部程序;请注意, emacs 应该已经列为选择:选择EMACS时,Xcode启动terminal.App与emacs在终端中的APP。此首选编辑器设置的问题是,每个打开的文件都会出现一个新窗口,这可能与您的工作流程不匹配。

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

    但这并不妨碍您使用 Vim没有设置首选编辑器:只需像往常一样在 Vim 中打开和编辑您的项目文件。

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

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

    或者只是使用 Vim 来更快地编辑您的代码,然后继续使用 XCode 来完成其余的工作。

    【讨论】:

    • 我记得文件类型,但我在研究答案时寻找它,现在没有任何迹象。我希望有。我尝试了一些替代方法,教 finder 如何打开 .m 和 .h 文件,但仍然没有乐趣。 vim remote 听起来像 emacs 服务器模式和 emacsclient。这解决了终端问题。 Aquamacs 在单独的缓冲区(选项卡)中打开。
    【解决方案4】:

    即使MacVim with YouCompleteMe 是我在 OSX 上开发的主要环境,我也更喜欢在 XCode 中执行一些任务,例如调试和分析。对于这些场景,我使用XVim,它将 VIM 编辑功能添加到 XCode。

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

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

    【讨论】:

      【解决方案5】:

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

      Preferences → Text Editing → Editing → Enable Vim key bindings
      

      编辑(根据@fangxing):

      切换现在称为Vim Mode 的方式已更改:

      Menubar → Editor → Vim Mode
      

      【讨论】:

      • 对于Xcode13 beta4,改为Vim mode,并移至菜单栏Editor -> Vim Mode
      • Vim 模式缺乏太多,它的缺点变得令人沮丧。我希望添加该功能的 Apple Xcode 开发人员继续增强和改进它。 (显然那个人是 Vim 爱好者,所以请继续打好仗!)
      【解决方案6】:

      我不能推荐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 以进行调试、分析和部署。

      【讨论】:

      • 这可能会有所帮助,但 OP 似乎在询问有关 iOS 特定功能的更多信息。
      • @matsjoyce:YouCompleteMe 支持主要的 iOS 语言 Objective-C 和 C++(Swift 还没有),因此我认为它与 OP“使用 Vim 代替(或与)Xcode 非常相关iOS 开发”。但我想我应该补充一点,我仍然使用 XCode 进行调试、分析等。
      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

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

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

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

        【讨论】:

          【解决方案9】:

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

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

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

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

          【讨论】:

            【解决方案10】:

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

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

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

            【讨论】:

            • 感谢@Rahul,但我也想知道与 Xcode 的合作。例如,使用您提到的所有内容,然后使用 vim 编辑文本文件。或者这可能没有意义?
            • 您可以使用 vim 编辑 .h 和 .m 文件,这是您的选择,但最好坚持使用 xcode,它有一些漂亮的主题和代码缩进以及更多您在 vim 中找不到的东西。跨度>
            • Rahul 你可能没抓住重点。他希望在有意义的地方从 vim 中受益,并在必要时使用 XCode,以及如何最好地实现这一点。目标不是替代 XCode,而是补充它。这种误解与所有这些可怕的 vim-vs.-emacs 枪战有着相同的根源。
            • 你可以随时在Xcode下使用优秀的XVim插件,那么你就拥有了Xcode的所有功能+Vim优秀的文本编辑能力(你可以在我的screencast看到一些)
            猜你喜欢
            • 1970-01-01
            • 2010-09-10
            • 2013-10-24
            • 2010-11-27
            • 1970-01-01
            • 2018-04-28
            • 2010-11-02
            • 2012-06-06
            • 2011-05-30
            相关资源
            最近更新 更多