4

I can check vim's version by using v:version, and I can check if I am running in nvim by doing has('nvim'). Is there a variable like v:version in neovim to let me know the nvim version, like 0.1.4 or 0.1.6?

  • 1
    Are you testing for a Neovim-only feature? If so, you can just use has('feature') or has('*function_name'). If not, you can still use has("patch-7.4.123") to see if what you need is available. I made the plugin helpful.vim which can help you find the version numbers you would want to test. – Tommy A Oct 18 '16 at 13:41
  • As of 0.1.6, you will be able to check has('nvim-1.2.3') – Tommy A Nov 5 '16 at 1:51
5

There is probably a direct way (?); if not, here's a function that parses :version to extract and return the actual value (as string):

function! GetNVimVersion()
    redir => s
    silent! version
    redir END
    return matchstr(s, 'NVIM v\zs[^\n]*')
endfunction

.. so that you can show it with: echo GetNVimVersion() or store it in some variable.

  • 2
    Actually, with execute(), this can be more compact: let version = matchstr(execute('version'), 'NVIM v\zs[^\n]*'). But, the function was added in nvim 0.1.5 and vim 7.4.2008 – Tommy A Oct 18 '16 at 1:35
  • That's good to know, thanks! Although a little ironic in this case - since the version isn't known, adding another branch for this situation - if exists('*execute') - actually makes the code bigger (since you can't rely on the function to exist in your (n)vim - for some time, at least). – VanLaser Oct 18 '16 at 9:00
  • From what I noticed, Neovim users tend to upgrade to the latest stable release since they're responsible for accessing distribution channels. Once it's in official package repositories, the problem you mentioned will be a more concrete reality when a version is frozen for a stable OS release. If I'm reading it right, Neovim 0.1.5 will be available in Debian Stretch. – Tommy A Oct 18 '16 at 13:37
  • Sure, if I'd need the version number myself, I'd certainly use your execute()-based one liner (because I know what I install). – VanLaser Oct 18 '16 at 20:22
  • It was just a thought about figuring out a baseline version if you really had to. The point is moot since the only good reason you'd want to get the version is to print it. I think there are better ways to test capabilities as I mentioned in the OP. – Tommy A Oct 19 '16 at 5:33
4

As mentioned in comments elsewhere, you can use has. For generic "is this neovim":

:echo has('nvim')

For at least minor version 0.1 (latest as of this writing):

:echo has('nvim-0.1')

For at least patch version 0.1.6:

:echo has('nvim-0.1.6')

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.