使用Vim代替Xcode(或与之一起使用)进行iOS开发


67

Xcode附带了许多对于构建iPhone和/或iPad必不可少的东西。实际上,我什至没有意识到很多,因为它是如此的“幕后”。

另一方面,我最近接触到了使用Vim作为编辑器的优势。在针对iOS平台进行开发时,是否有任何设置可以使使用Vim成为有效的选择?还是将两者结合起来以解决这个问题会如此复杂?

换句话说,如果一起使用Vim和Xcode时,如果您有任何提示,建议或警告,我将为您服务!

Answers:


94

使用Vim为iOS或Mac进行开发可以非常强大,快速,尤其是在使用TDD或需要快速反馈的情况下。

但是要使其正常工作需要一些麻烦。您需要了解的一些重要事项是:

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

这是我首选的工作方法。实际上,我写了这个ios.vim插件是为了让更多人更容易使用。


关于VIM为开发带来的生产力提升,我也受到启发。@eraserhd无疑证明了将其应用于iOS / Cocoa开发。我会挖自己的。
levous

这在Linux下有效吗?并且您可以通过此设置使用Appstore吗?
pfnuesel

21

我去过那里...

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

我想我已经找到了出色的XVim插件(尽管Apple尚未正式支持)的最佳解决方案。

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


xvims似乎有很多错误,某些vim命令无法使用
Albert.Qing 2015年

自2019
Wiget

XVim2似乎正在工作。在Xcode 11.4.1中测试。github.com/XVimProject/XVim2
David James

7

如果您不打算同时在Vim和XCode编辑器编辑相同的文件,则Vim和XCode可以很好地共存。如果这样做,则每个操作都会向您发出有关文件正在外部修改的警告。在特定方面,Vim的终端版本更易于使用:它只会在您尝试保存文件时向您发出警告,询问您是否确定,而MacVim和XCode编辑器将在您每次返回时向您发出警告到文件。

XCode允许您在打开文件时按文件类型选择外部应用程序。在“ XCode首选项”中,转到“文件类型”选项卡,然后转到“文件”- >“文本”->“源代码”。可以将“首选编辑器”设置为外部程序,例如MacVim;请注意,Emacs应该已经被列为选择:选择Emacs时,XCode将在终端中启动Emacs并启动Terminal.app。此“首选编辑器”设置存在以下问题:每个打开的文件都会显示一个新窗口,该窗口可能与您的工作流程不匹配。

Vim的remote功能在这里可能会很有用,请参见:help remote。只需做一些工作,并使用上面的Preferred Editor首选项,就可以将要编辑的文件发送到Vim的任何实例,包括运行在中的现有Vim xterm。我似乎记得Emacs提供了类似的功能。

但是,所有这些都不能阻止您在设置Preferred Editor的情况下使用Vim :只需像往常一样在Vim中打开和编辑项目文件即可。

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

当然,不能期望Vim会取代Interface Builder这样的东西,但是iOS开发的几乎所有其他方面都可以通过仅Vim的解决方案来实现。

或者只是使用Vim更快编辑代码,然后继续使用XCode进行其余的工作。


我记得文件类型,但是我在研究答案时一直在寻找它,现在没有迹象表明。我希望有。我尝试了一些替代方法,教查找器如何打开.m和.h文件,但仍然没有乐趣。vim的远程声音类似于emacs服务器模式和emacsclient。这可以解决终端问题。Aquamacs将在单独的缓冲区(选项卡)中打开。
Gordon Dove 2012年

2

甚至认为MacVim和YouCompleteMe是我在OSX上进行开发的主要环境,我更喜欢在XCode中完成一些任务,例如调试和分析。对于这些情况,我使用XVim,它向XCode添加了VIM编辑功能。

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

(很抱歉将其作为答案而不是作为评论发布,但是stackoverflow的信誉系统使我无法实现)


1

我不能推荐YouCompleteMe!除了其代码完成之外,它还向您显示受影响行上的动态语法错误,而无需手动触发编译器(即,非常类似于XCode编辑器的功能)。YCM创建者的描述非常有用:

YouCompleteMe是用于Vim的快速,按需输入,模糊搜索代码完成引擎。它具有多个完成引擎:与每种编程语言一起使用的基于标识符的引擎,为C / C ++ / Objective-C / Objective-C ++提供本机语义代码完成的基于语义,基于Clang的引擎(从现在开始称为“ C族语言”)...

要使其运行:

  • 遵循“ Mac OS X快速安装”部分
  • 不要忘记将.ycm_extra_conf.py文件添加到项目文件夹的根目录中

编辑:

如果没有类似YouCompleteMe的插件,VIM只能完成基本的单词补全(Ctrl-N),既不能知道您正在使用的编程语言,也不能知道属于您项目的所有其他文件。键入“。”后,您也不会获得对象成员的列表。或“->”。因此,您会在XCode键入时给您带来很多帮助(因此也无法提高速度)。当您在输入中输入错误或其他错误时,VIM也不会警告您喜欢XCode。YouCompleteMe正是将那些缺少的功能添加到了VIM中,并使在VIM中进行iOS开发变得很高兴。

您可以xcodebuild用来构建和运行项目,但就我个人而言,我更喜欢同时使用VIM和XCode。两个文件都被另一个文件修改后,它们会自动重新加载。保留XCode进行调试,分析和部署。


1
这可能有帮助,但是OP似乎在询问有关iOS特定功能的更多信息。
matsjoyce 2014年

@matsjoyce:YouCompleteMe支持iOS的主要语言Objective-C和C ++(尚不支持Swift),因此,我认为它与OP“使用Vim而不是(或使用)Xcode进行iOS开发”非常相关。但是我想我应该补充一点,我仍然使用XCode进行调试,分析等。
塞缪尔·盖维勒

0

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

坚持使用Xcode来处理大多数内容,但是当您需要emacs或可能的vim的功能(我主要是使用批量重复性编辑器宏)时,只需在finder中使用show编辑文件并打开,或者通过切换到编辑器导航从那里到文件。当您切换回该文件时,XCode将意识到。

对于纯代码,我会坚持使用Xcode,它的代码完成是基于对代码的更多了解,因此请击败emacs或vim。连续的代码检查非常宝贵,并且正如已经提到的,直接访问文档非常棒(如果尚未找到,请单击选项)。


0

我喜欢XVim for XCode。不幸的是,它对于XCode 5.1而言是无效的(有些人可以使用Development分支,但我不能这样做)。

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

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

尽管您将无法使用该插件获得完整的Vi / Vim功能。我发现与本机IDE命令的混合使用足以弥补这一不足。


0

与Xcode并行使用AppCode真是太神奇了。代码更改立即同步!我对此设置感到非常满意,因为在编写iOS应用程序时最终可以使用vim(作为AppCode插件)。AppCode具有其他优点,因此我真的建议您检查一下。重构工具也是更好的恕我直言。例如,它可以提取Xcode由于某种原因而无法执行的方法,如果无法提取方法,它将至少告诉您原因。


-3

我认为Xcode是更好的解决方案。它具有许多功能,您无法在Vim中找到/添加。他们之中有一些是:

  • Interface Builder(在更少的时间内创建良好的查找界面)
  • ARC(自动参考计数—内存管理)
  • 用于管理代码签名和应用商店提交的自动化流程

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


感谢@Rahul,但我也想知道与Xcode的协作。例如,使用您提到的所有内容,然后使用vim编辑文本文件。也许这没有意义?
埃里克·布罗托

您可以使用vim编辑.h和.m文件,但这是您的选择,但最好还是坚持使用xcode,因为它具有一些漂亮的主题和代码缩进以及许多其他在vim中找不到的内容。
Rahul Vyas

3
拉胡尔,您可能会漏掉这一点。他想从合理的vim中受益,并在必要时使用XCode以及如何最好地实现这一点。目标不是替代XCode,而是对其进行补充。这种误解与所有这些可怕的vim-vs.-emacs枪战有着相同的根源。
sjas 2013年

您始终可以在Xcode下使用出色的XVim插件,然后就拥有了Xcode的所有功能以及Vim出色的文本编辑功能(您可以在我的截屏视频中看到其中的一些内容)
Stefan Ogonek 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.