Skip to content
Wojciech Kulik edited this page Nov 11, 2024 · 32 revisions

1. Requirements

Below is a list of all dependencies. However, you don't have to install all of them in this step.

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.
  • ripgrep to find matching test files when using Swift Testing framework.
  • Xcode to build, run, and test apps. Make sure that xcodebuild and xcrun simctl work correctly. Tested with Xcode 15 & 16.

 

2. Install plugin

💤 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 suggested key bindings.

 

3. Install external tools

brew install xcode-build-server xcbeautify ruby pipx rg
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

Follow the guide: Neovim Configuration.

 

5. Configure integrations

Check out available integrations and pick which one you want to use.

 

6. Improve build time

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

 

7. Usage

Make sure to start Neovim in 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.

Once the project is configured you can run :XcodebuildPicker to see all available actions.

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