Utiliser Vim au lieu de (ou avec) Xcode pour le développement iOS

Xcode est livré avec beaucoup d’éléments essentiels à la création sur iPhone et / ou iPad. En fait, je ne suis même pas au courant de cela car il est tellement «dans les coulisses».

D’autre part, j’ai récemment été exposé aux avantages de l’utilisation de Vim en tant qu’éditeur. Y a-t-il une configuration qui ferait de l’utilisation de Vim une option efficace lors du développement pour les plates-formes iOS? Ou serait-il si compliqué de combiner les deux pour que cette question ne soit pas posée?

En d’autres termes, si vous avez des astuces, des conseils ou des avertissements lorsque vous utilisez Vim et Xcode ensemble, je suis tout à fait à l’écoute!

Développer pour iOS ou Mac avec Vim peut être très puissant et rapide, surtout si vous utilisez TDD ou si vous souhaitez un retour rapide.

Mais ça prend un peu de mal à le faire fonctionner. Les quelques choses importantes que vous devez savoir sont les suivantes:

  • Utilisez l’outil de ligne de commande xcodebuild pour exécuter votre build et les unités à partir de vimscript.
  • Utilisez le plugin clang_complete pour vous assurer que le code est complet à partir de vim.
  • Utilisez les ios.vim -ins ios.vim et cocoa.vim pour la navigation.

C’est ma méthode de travail préférée. En fait, j’ai écrit le ios.vim in ios.vim pour faciliter cela pour plus de gens.

J’y suis déjà allé …

J’adore vim et l’utilise régulièrement dans mes développements quotidiens en C ++ sur les plates-formes * nix, mais j’aime aussi toutes les fonctionnalités de Xcode qui, spécialement avec la dernière version de Xcode> = 4.3 et clang backend, donnent un vrai plus -completion et référencement de symboles.

Je pense avoir trouvé la solution optimale avec l’excellent plugin XVim (bien que n’étant pas officiellement pris en charge par Apple).

En espérant que les futures mises à jour de Xcode ne le casseront pas (cela fonctionne toujours très bien avec les aperçus 4.5 des derniers développeurs), cela vous permet vraiment de garder vos doigts en mouvement comme vous l’avez appris dans Vim tout en travaillant avec Xcode. , est pour moi la solution optimale.

Vim et XCode coexisteront assez bien ensemble, à condition que vous n’essayiez pas d’éditer les mêmes fichiers dans Vim et l’éditeur XCode en même temps . Si vous le faites, chacun d’entre eux vous avertira de la modification externe du fichier. La version terminale de Vim est un peu plus facile à vivre à cet égard: elle ne vous avertira que lorsque vous essayerez de sauvegarder le fichier, vous demandant si vous êtes sûr , alors que MacVim et l’éditeur XCode vous avertiront à chaque retour au fichier.

XCode vous permet de sélectionner une application externe lorsque vous ouvrez des fichiers, par type de fichier. Dans les préférences XCode, accédez à l’onglet Types de fichiers , puis cliquez sur fichier-> texte-> code source . Preferred Editor peut être défini sur un programme externe tel que MacVim; Notez qu’Emacs devrait déjà être répertorié comme une sélection: lorsque Emacs est sélectionné, XCode lance Terminal.app avec Emacs dans un terminal. Ce paramètre de l’ Éditeur préféré a le problème que vous obtiendrez une nouvelle fenêtre avec chaque fichier ouvert, qui peut ne pas correspondre à votre stream de travail.

La fonction remote de Vim peut être utile ici, voir :help remote . Avec un peu de travail et les préférences de l’éditeur préféré ci-dessus, il faut pouvoir envoyer le fichier à éditer à n’importe quelle instance de Vim, y compris un fichier Vim existant dans un xterm . Je semble rappeler que Emacs fournit quelque chose de similaire.

Mais rien de tout cela ne vous empêche d’utiliser Vim sans définir Preferred Editor : ouvrez et modifiez simplement vos fichiers de projet dans Vim comme vous le feriez normalement.

Votre stream de travail pourrait consister à utiliser Vim pour modifier le code et à passer à XCode pour créer le projet, mais Vim peut également exécuter les mêmes outils de génération que XCode et, avec un peu plus de travail, vous pourrez même sauter aux lignes. avec des erreurs. XCode s’appuie sur gdb pour le débogage, qui peut également être utilisé avec Vim, via un plugin.

Bien sûr, on ne peut pas s’attendre à ce que Vim remplace quelque chose comme Interface Builder, mais presque tous les autres aspects d’iOS dev peuvent être réalisés avec une solution uniquement Vim.

Ou utilisez simplement Vim pour modifier votre code plus rapidement et continuer à utiliser XCode pour le rest.

Même si MacVim avec YouCompleteMe est mon environnement principal pour le développement sous OSX, il y a des tâches que je préfère effectuer dans XCode, comme le débogage et le profilage. Pour ces scénarios, j’utilise XVim qui ajoute des fonctionnalités d’édition VIM à XCode.

Sur XCode 5.1, XVim a planté beaucoup. Mais il a progressé et il fonctionne maintenant très bien avec XCode 6 jusqu’à présent. Mais vous ne disposez que d’un sous-ensemble de VIM, par exemple, vous ne pouvez pas diviser l’éditeur pour afficher deux fichiers en même temps. Vous pouvez l’activer / désactiver assez facilement avec Shift-Command-X.

(Désolé de poster ceci comme réponse et non comme un commentaire, mais le système de réputation de stackoverflow ne m’a pas permis)

Il y a certainement des avantages à utiliser des éditeurs externes (cependant, emacs est dix millions de fois mieux que vim:}).

Reste avec Xcode pour la plupart des choses, mais quand tu as besoin de la puissance d’Emacs, ou peut-être de vim (les macros d’éditeur répétitifs en vrac sont ma raison principale), édite le fichier en utilisant show in finder et ouvre avec ou navigue dans ton éditeur au fichier à partir de là. XCode se rendra compte lorsque vous revenez que le fichier a changé.

Pour le code simple, je restrais avec Xcode, la complétion du code est basée sur une plus grande connaissance du code, donc battez emacs ou vim de haut en bas. La vérification continue du code est inestimable et, comme nous l’avons déjà mentionné, l’access direct à la documentation est génial (option clic si vous ne l’avez pas déjà trouvé).

Je ne peux pas recommander YouCompleteMe Assez! En plus de l’achèvement du code, il affiche également des erreurs syntaxiques à la volée sur la ligne concernée sans avoir à déclencher manuellement votre compilateur (c’est-à-dire très similaire aux fonctionnalités de l’éditeur XCode). La description du créateur de YCM est assez informative:

YouCompleteMe est un moteur de complétion rapide de code de recherche floue pour Vim. Il dispose de plusieurs moteurs d’achèvement: un moteur basé sur des identifiants qui fonctionne avec tous les langages de programmation, un moteur sémantique basé sur Clang permettant de compléter le code sémantique natif pour C / C ++ / Objective-C / Objective-C ++ “les langues de la famille C”) …

Pour le faire fonctionner:

  • Suivez la section ‘Installation super rapide de Mac OS X’
  • N’oubliez pas d’append un fichier .ycm_extra_conf.py à la racine de votre dossier de projet

Modifier:

Sans un plugin comme YouCompleteMe, VIM ne peut effectuer que l’exécution de mots rudimentaires (Ctrl-N) qui n’est pas au courant du langage de programmation que vous utilisez ni de tous les autres fichiers appartenant à votre projet. Vous n’avez pas non plus de liste des membres d’un object après avoir tapé ‘.’ ou ‘->’. Donc, vous manquez beaucoup d’aide (et donc de rapidité) que XCode vous offre lors de la frappe. VIM ne vous prévient pas non plus comme XCode lorsque vous faites des fautes de frappe ou d’autres erreurs dans votre code. YouCompleteMe ajoute exactement les fonctionnalités manquantes à VIM et fait du développement iOS dans VIM un véritable plaisir.

Vous pouvez utiliser xcodebuild pour construire et exécuter votre projet, mais personnellement, je préfère travailler avec VIM et XCode en même temps. Les deux rechargent les documents automatiquement après leur modification par l’autre. Gardez XCode pour le débogage, le profilage et le déploiement.

J’aime XVim pour XCode. Malheureusement, il casse pour XCode 5.1 (certaines personnes ont la twig de développement qui fonctionne, mais je ne pouvais pas).

J’ai fini par passer à AppCode après un essai, j’ai vraiment aimé la gestion des tabs, le refactoring et l’parsing du code. Le code est automatiquement synchronisé avec XCode, alors je les exécute tous les deux (XCode pour les parameters de construction, gestion du catalogue d’actifs, AppCode pour tout le rest).

Le premier jour, je l’ai téléchargé, j’ai installé IdeaVim afin que je puisse encore utiliser certains des raccourcis clavier de Vim.

Bien que vous n’ayez pas toutes les fonctionnalités de Vi / Vim avec le plugin. Je trouve que l’utilisation du mixage avec les commandes IDE natives suffit à compenser.

Selon moi, Xcode est la meilleure solution. Il a tellement de fonctionnalités que vous ne pouvez pas trouver / append dans Vim. Certains d’entre eux sont:

  • Interface Builder (pour créer de bonnes interfaces en moins de temps)
  • ARC (comptage automatique des références – gestion de la mémoire)
  • Processus automatisé de gestion de la signature du code et de la soumission du magasin d’applications

La liste est très longue et Apple vous encourage toujours à utiliser Xcode, pas un autre IDE.