Xcode附带了许多对于构建iPhone和/或iPad必不可少的东西。实际上,我什至没有意识到很多,因为它是如此的“幕后”。
另一方面,我最近接触到了使用Vim作为编辑器的优势。在针对iOS平台进行开发时,是否有任何设置可以使使用Vim成为有效的选择?还是将两者结合起来以解决这个问题会如此复杂?
换句话说,如果一起使用Vim和Xcode时,如果您有任何提示,建议或警告,我将为您服务!
Xcode附带了许多对于构建iPhone和/或iPad必不可少的东西。实际上,我什至没有意识到很多,因为它是如此的“幕后”。
另一方面,我最近接触到了使用Vim作为编辑器的优势。在针对iOS平台进行开发时,是否有任何设置可以使使用Vim成为有效的选择?还是将两者结合起来以解决这个问题会如此复杂?
换句话说,如果一起使用Vim和Xcode时,如果您有任何提示,建议或警告,我将为您服务!
Answers:
使用Vim为iOS或Mac进行开发可以非常强大,快速,尤其是在使用TDD或需要快速反馈的情况下。
但是要使其正常工作需要一些麻烦。您需要了解的一些重要事项是:
xcodebuild
命令行工具从某些vimscript运行构建和单元。clang_complete
插件可以在vim中为您提供完整的代码完成。ios.vim
和cocoa.vim
插件进行导航。这是我首选的工作方法。实际上,我写了这个ios.vim
插件是为了让更多人更容易使用。
我去过那里...
我喜欢vim,并且经常在* nix平台上的日常C ++开发中使用它,但是我也喜欢Xcode的所有功能,尤其是在最新的Xcode> = 4.3和clang后端的情况下,在自动方面具有真正的优势。 -完成和符号引用。
我想我已经找到了出色的XVim插件(尽管Apple尚未正式支持)的最佳解决方案。
希望将来的Xcode升级不会破坏它(它在最新的开发人员的4.5预览版中仍然可以正常工作),这确实使您可以像在Vim中使用Xcode所做的那样,保持手指的移动。 ,对我来说是最佳的解决方案。
如果您不打算同时在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进行其余的工作。
甚至认为MacVim和YouCompleteMe是我在OSX上进行开发的主要环境,我更喜欢在XCode中完成一些任务,例如调试和分析。对于这些情况,我使用XVim,它向XCode添加了VIM编辑功能。
在XCode 5.1上,XVim崩溃很多。但是它进展了,到目前为止,它现在与XCode 6都可以很好地工作。但是您只能通过这种方式获得VIM的一个子集,例如,您无法拆分编辑器以同时查看两个文件。您可以使用Shift-Command-X轻松启用/禁用它。
(很抱歉将其作为答案而不是作为评论发布,但是stackoverflow的信誉系统使我无法实现)
我不能推荐YouCompleteMe!除了其代码完成之外,它还向您显示受影响行上的动态语法错误,而无需手动触发编译器(即,非常类似于XCode编辑器的功能)。YCM创建者的描述非常有用:
YouCompleteMe是用于Vim的快速,按需输入,模糊搜索代码完成引擎。它具有多个完成引擎:与每种编程语言一起使用的基于标识符的引擎,为C / C ++ / Objective-C / Objective-C ++提供本机语义代码完成的基于语义,基于Clang的引擎(从现在开始称为“ C族语言”)...
要使其运行:
编辑:
如果没有类似YouCompleteMe的插件,VIM只能完成基本的单词补全(Ctrl-N),既不能知道您正在使用的编程语言,也不能知道属于您项目的所有其他文件。键入“。”后,您也不会获得对象成员的列表。或“->”。因此,您会在XCode键入时给您带来很多帮助(因此也无法提高速度)。当您在输入中输入错误或其他错误时,VIM也不会警告您喜欢XCode。YouCompleteMe正是将那些缺少的功能添加到了VIM中,并使在VIM中进行iOS开发变得很高兴。
您可以xcodebuild
用来构建和运行项目,但就我个人而言,我更喜欢同时使用VIM和XCode。两个文件都被另一个文件修改后,它们会自动重新加载。保留XCode进行调试,分析和部署。
与Xcode并行使用AppCode真是太神奇了。代码更改立即同步!我对此设置感到非常满意,因为在编写iOS应用程序时最终可以使用vim(作为AppCode插件)。AppCode具有其他优点,因此我真的建议您检查一下。重构工具也是更好的恕我直言。例如,它可以提取Xcode由于某种原因而无法执行的方法,如果无法提取方法,它将至少告诉您原因。
我认为Xcode是更好的解决方案。它具有许多功能,您无法在Vim中找到/添加。他们之中有一些是:
该列表很长,Apple始终鼓励您使用Xcode,而不是其他任何IDE。