使用Vim而不是(或与)Xcode的iOS开发
Xcode附带了很多对于构buildiPhone和/或iPad非常重要的东西。 其实很多我都没有意识到,因为它是幕后的。
另一方面,我最近暴露了使用Vim作为编辑的好处。 有没有什么设置可以在开发iOS平台时使Vim成为高效的select? 或者把这两个问题结合起来使这个问题没有实际意义呢?
换句话说,如果你在使用Vim和Xcode的时候有任何提示,build议或者警告,那我真是耳熟能详!
使用Vim进行iOS或Mac开发可以非常强大和快速,尤其是在使用TDD或者需要快速反馈的情况下。
但是需要一点努力才能实现。 你需要知道的几件重要的事情是:
- 使用
xcodebuild
命令行工具从一些vimscript运行你的构build和单元。 - 使用
clang_complete
插件为您提供从vim中完整的代码完成。 - 使用
ios.vim
和cocoa.vim
插件进行导航。
这是我首选的工作方法。 事实上,我写了ios.vim
插件,让更多的人更容易。
我已经在那里了…
我喜欢vim,经常在* nix平台上进行日常的C ++开发,但是我也喜欢所有Xcode的特性,特别是最新的Xcode> 4.3和铿锵的后端,在auto完成和符号引用。
我想我已经find了最好的解决scheme(虽然不是由苹果正式支持)的XVIM插件 。
希望未来的Xcode升级不会破坏它(它仍然可以和最新的开发者预览版本4.5一起工作),这确实可以让你保持手指移动,就像你在Vim中学习Xcode一样,正如我之前所说,是我的最佳解决scheme。
如果你不想在Vim和XCode编辑器中同时编辑相同的文件,Vim和XCode将很好地共存。 如果你这样做,那么每个人都会给你一个关于被外部修改的文件的警告。 Vim的terminal版本在这个特殊的方面稍微容易一些:它只会在你保存文件时发出警告,问你确定 ,而MacVim和XCode编辑器会在你每次返回的时候提醒你到文件。
XCode确实允许您在按文件types打开文件时select外部应用程序。 在XCode首选项中,转到文件types选项卡,然后select文件 – >文本 – >源代码 。 首选编辑器可以设置为外部程序,如MacVim; 注意Emacs应该已经被列为一个select:当selectEmacs时,XCode在terminal中启动带有Emacs的Terminal.app。 这个首选编辑器设置有一个问题,您将得到一个新的窗口与每个打开的文件,这可能不符合您的工作stream程。
Vim的remote
function在这里可能是有用的,请参阅:help remote
。 通过一些工作和上面的首选编辑器首选项,可以将要编辑的文件发送到Vim的任何实例,包括在xterm
运行的现有Vim。 我似乎记得Emacs提供了类似的东西。
但是这些都不能阻止你使用Vim 而不设置Preferred Editor :只需在Vim中打开和编辑你的项目文件。
您的工作stream程可能是使用Vim编辑代码,切换到XCode来构build项目,但是Vim也可以运行XCode使用的相同的构build工具,并且只需要多一点工作,您甚至可以跳到这些行有错误。 XCode依靠gdb进行debugging,通过插件也可以很好的使用Vim。
当然Vim不能被期望替代像Interface Builder这样的东西,但是iOS开发的其他方面可以通过Vim-only解决scheme来实现。
或者只是使用Vim 更快地编辑你的代码 ,并继续使用XCode。
甚至认为带有YouCompleteMe的MacVim是我在OSX上开发的主要环境,在XCode中我喜欢做的任务,比如debugging和分析。 对于这些场景,我使用XVIM ,将VIM编辑function添加到XCode中。
在XCode 5.1上XVim坠毁了不less。 但是,它进步了,到目前为止,XCode 6已经可以很好地工作了。 但是你只能通过这种方式得到VIM的一个子集,例如你不能将编辑器拆分成同时查看两个文件。 使用Shift-Command-X可以很容易地启用/禁用它。
(对不起,发表这个答案,而不是作为一个评论,但stackoverflow的声誉系统并没有使我可能)
使用外部编辑器肯定有一些优势(但是emacs比vim好一千万倍)}。
坚持使用Xcode的大多数东西,但是当你需要emacs的力量,或者可能是vim(批量重复编辑macros是我的主要原因)时,只需使用show in finder编辑文件并打开,或者只需切换到编辑器导航从那里的文件。 当你切换回文件已经改变时,XCode会实现。
对于简单的代码,我会坚持使用Xcode,它的代码完成基于更多的代码知识,所以打败了emacs或vim的手。 连续的代码检查是无价的,正如已经提到的那样,直接访问文档是非常棒的(如果你还没有find它,可以点击选项)。
我不能推荐YouCompleteMe足够! 除了代码完成之外,它还可以显示受影响行上的语法错误,而无需手动触发编译器(即与XCode编辑器的function非常相似)。 YCM创build者的描述非常丰富:
YouCompleteMe是Vim的一种快速,即用型的模糊search代码完成引擎。 它有几个完成引擎:一个基于标识符的引擎,与每一种编程语言一起工作,一个基于Clang的语义引擎,为C / C ++ / Objective-C / Objective-C ++提供本地语义代码完成(从现在开始称为“C族语言”)…
为了让它运行:
- 按照“Mac OS X超级快速安装”一节
- 不要忘记将.ycm_extra_conf.py文件添加到项目文件夹的根目录下
编辑:
没有像YouCompleteMe这样的插件,VIM只能做基本的单词完成(Ctrl-N),它既不知道你正在使用的编程语言,也不知道属于你的项目的所有其他文件。 input'。'后,也不会得到对象的成员列表。 或' – >'。 所以你错过了很多的帮助(因此速度),XCode在键入时给你。 当您在代码中进行拼写错误或其他错误时,VIM也不会像XCode一样提醒您。 YouCompleteMe正是将这些缺失的function添加到VIM中,并使VIM中的iOS开发变得快乐。
您可以使用xcodebuild
来构build和运行您的项目,但是我个人更喜欢同时使用VIM和XCode。 两者在被另一个修改后自动重新加载文档。 保持XCode进行debugging,分析和部署。
我喜欢Xcode的XVim 。 不幸的是,它打破了XCode 5.1(有些人得到了发展部门的工作,但我不能)。
经过试用,我最终转向了AppCode ,我非常喜欢Tabpipe理,重构和代码分析。 代码会自动与XCode同步,所以我运行这两个(XCode的构build设置,pipe理资产目录,AppCode的一切)。
第一天我下载了它,我安装了IdeaVim,所以我仍然可以使用一些Vim键盘快捷键。
虽然你不会用插件获得完整的Vi / Vimfunction。 我发现混合使用本地IDE命令是足够的补偿。
根据我的意见Xcode是更好的解决scheme。 它有很多function,你不能在Vim中find/添加。 他们之中有一些是:
- 界面生成器(在较短的时间内创build良好的lookin界面)
- ARC(自动引用计数 – 内存pipe理)
- 自动处理代码签名和app store提交的过程
名单很长,苹果总是鼓励你使用Xcode,而不是其他的IDE。