Skip to content
Wojciech Kulik edited this page Oct 20, 2024 · 32 revisions

1. Requirements

Neovim environment

External tools

  • xcbeautify to format Xcode logs (you can set a different tool or disable formatting in the config).
  • Xcodeproj to manage project files within Neovim.
  • Ruby to use Xcodeproj gem.
  • pymobiledevice3 to debug on physical devices and/or run apps on devices below iOS 17.
  • xcode-build-server to make LSP work properly with xcodeproj/xcworkspace.
  • codelldb to debug applications.
  • Xcode to build, run, and test apps. Make sure that xcodebuild and xcrun simctl work correctly. Tested with Xcode 15.

 

2. Install the plugin using your preferred package manager

💤 lazy.nvim

return {
  "wojciech-kulik/xcodebuild.nvim",
  dependencies = {
    "nvim-telescope/telescope.nvim",
    "MunifTanjim/nui.nvim",
    "nvim-tree/nvim-tree.lua", -- (optional) to manage project files
    "stevearc/oil.nvim", -- (optional) to manage project files
    "nvim-treesitter/nvim-treesitter", -- (optional) for Quick tests support (required Swift parser)
  },
  config = function()
    require("xcodebuild").setup({
        -- put some options here or leave it empty to use default settings
    })
  end,
}

Below setup you can add some bindings. Check out here for suggested key bindings.

 

3. Install external tools

brew install xcode-build-server xcbeautify ruby pipx
gem install xcodeproj
pipx install pymobiledevice3

To quickly install all required tools you can run:

cd ~/.local/share/nvim/lazy/xcodebuild.nvim
make install

 

4. Setup Neovim for iOS development

I wrote an article that gathers all the steps required to set up Neovim from scratch to develop iOS and macOS apps: The Complete Guide To iOS & macOS Development In Neovim. You can also check out the sample Neovim configuration that I prepared for iOS development: ios-dev-starter-nvim.

 

5. Configure integrations

Here you can find all available integrations. Pick which one you want to use and configure them.

 

6. Improve build time

Optionally, you can apply this workaround to improve build time.

 

7. Usage

Make sure to open your project's root directory and run XcodebuildSetup to configure it. The plugin needs several information like project file, scheme, config, device, and test plan to run commands.

Remember, that all the information are available in the help :h xcodebuild. Every function is documented and described both in the help and in the code.

API: If you want to use functions directly instead of user commands, then please see xcodebuild.actions module.

 

Useful Help Tags

  • :h xcodebuild
  • :h xcodebuild.config
  • :h xcodebuild.keys
  • :h xcodebuild.tools
  • :h xcodebuild.commands
  • :h xcodebuild.events
  • :h xcodebuild.highlights
  • :h xcodebuild.dap
Clone this wiki locally