Home

Awesome

setup-vim

Test Lint

setup-vim is a GitHub Action to setup Vim, Neovim, or MacVim.

Usage

Basic:

# Setup the head version of Vim
- uses: thinca/action-setup-vim@v2

With options:

- uses: thinca/action-setup-vim@v2
  with:
    vim_version: v9.1.0000

Setup Vim and Neovim with 2 versions for each platforms using matrix:

strategy:
  matrix:
    vim_type: ['Vim', 'Neovim']
    version: ['head', 'stable']
    os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
    include:
      - vim_type: 'Vim'
        version: 'stable'
        vim_version: 'v9.1.0000'
runs-on: '${{ matrix.os }}'
steps:
  - uses: 'actions/checkout@v4'
  - name: 'Setup Vim'
    id: 'vim'
    uses: 'thinca/action-setup-vim@v2'
    with:
      vim_version: '${{ matrix.vim_version || matrix.version }}'
      vim_type: '${{ matrix.vim_type }}'
  - name: 'Run test'
    run: |
      # Show Vim's version
      ${{ steps.vim.outputs.executable }} --version
      # ... run tests ...

About installation

This action provides two ways to setup Vim.

  1. Build Vim from source code. You can specify Git's ref(tag, branch, or sha1) for vim_version. The result is cached by default. See cache input.

  2. Download pre-built Vim from releases page. You can specify semver(v9.1.0146, v0.9.5) or tag name of GitHub Release for vim_version.

Some combinations not available. See the following. By default, uses download if available, otherwise uses build.

Vim

OSwayGUIInstallation
LinuxbuildgvimSources from vim/vim.
LinuxdownloadgvimReleases from vim/vim-appimage. (*)
MacOSbuildgvimSources from vim/vim.
MacOSdownloadN/ANot available.
WindowsbuildgvimSources from vim/vim.
WindowsdownloadgvimReleases from vim/vim-win32-installer.

(*) Downloading Vim from AppImage is available from v8.1.1239. Before v8.1.1234 cannot start vim. This was fixed by vim/vim-appimage#6.

Neovim

OSwayGUIInstallation
LinuxbuildN/ASources from neovim/neovim.
LinuxdownloadN/AReleases from neovim/neovim.
MacOSbuildN/ASources from neovim/neovim. (**)
MacOSdownloadN/AReleases from neovim/neovim.
WindowsbuildN/ANot available(Help wanted).
Windowsdownloadnvim-qt.exeReleases from neovim/neovim.

(**) Building Neovim on MacOS(Catalina) has a problem.

Building v0.4.3 and before versions will be failure. See neovim/neovim#11412 for the detail.

MacVim

OSwayGUIInstallation
LinuxbuildN/ANot available.
LinuxdownloadN/ANot available.
MacOSbuildN/ASources from macvim-dev/macvim.
MacOSdownloadN/AReleases from macvim-dev/macvim.
WindowsbuildN/ANot available.
WindowsdownloadN/ANot available.

MacVim has a GUI version, but it is not supported yet because it is too difficult treating on CI.

Building snapshot-157 and before versions will be failure. See macvim-dev/macvim#946 for the detail.

Action Inputs

vim_version

Version of Vim. The meaning of this value depends on vim_type and download.

The value head is always head version: When download is on, this points head of release. When download is off, this points master of repository.

When download is on and specified a semver such as v8.2.0000, this action finds a minimum version that is higher than a specified version. For example, when there are some released versions: v8.2.0052 v8.2.0057 v8.2.0065 And when a specified version is v8.2.0055, v8.2.0057 is actually selected. Also, when a specified version is v8.2.0060, v8.2.0065 is actually selected.

When download is off, this is a tag of repository. Note that the repository of MacVim has tags like release-xxx instead of like vx.x.xxx.

default: head

vim_type

Type of Vim. This is one of vim, neovim, or macvim.

default: vim

gui

When this is yes, setups the GUI version. And outputs.executable points to GUI version of Vim.

default: no

arch

Architecture of Vim. This is either of x86_64 or x86, enable when vim_type is vim on Windows.

default: x86_64

download

When this is always, downloads the officially released binary, or fail if unavailable. When this is available, downloads the officially released binary if available, otherwise builds from source code. When this is never, always builds from source code.

default: available

cache

When this is true(default), cache the built Vim.

This uses same caching mechanism from actions/cache. Therefore, this consumes the limitation of cache size.

Ref: Caching dependencies to speed up workflows#Usage limits and eviction policy

This is automatically disabled when download is on.

default: true

github_token

Your GitHub API token to access to releases of repositories without limit. Normally this is automatically set so you do not need set this.

default: ${{ github.token }}

Action Outputs

executable

The name of executable file. This is not a full path, just name. When gui is yes, this points to GUI version. e.g. vim nvim gvim

executable_path

The full path of executable file.

actual_vim_version

Version of Vim actually installed. e.g. v8.2.0123 v0.4.3 49cd750d6a72efc0571a89d7a874bbb01081227f

install_type

Install was done with build or download.

install_path

Base path of installed Vim. Note that this does not point to bin.

cache_hit

When cache is enabled and cache was found, this is true. Otherwise this is false.

License

zlib License

Author

thinca thinca@gmail.com