README.md 6.71 KB
Newer Older
Justin M. Keyes's avatar
Justin M. Keyes committed
1
[![Neovim](https://raw.githubusercontent.com/neovim/neovim.github.io/master/logos/neovim-logo-600x173.png)](https://neovim.io)
Justin M. Keyes's avatar
Justin M. Keyes committed
2

Justin M. Keyes's avatar
Justin M. Keyes committed
3 4 5 6
[Wiki](https://github.com/neovim/neovim/wiki) |
[Documentation](https://neovim.io/doc) |
[Twitter](https://twitter.com/Neovim) |
[Community](https://neovim.io/community/) |
Justin M. Keyes's avatar
Justin M. Keyes committed
7
[Gitter **Chat**](https://gitter.im/neovim/neovim)
8

TJ Rana's avatar
TJ Rana committed
9 10 11 12 13 14
[![Travis build status](https://travis-ci.org/neovim/neovim.svg?branch=master)](https://travis-ci.org/neovim/neovim)
[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/urdqjrik5u521fac/branch/master?svg=true)](https://ci.appveyor.com/project/neovim/neovim/branch/master)
[![Codecov coverage](https://img.shields.io/codecov/c/github/neovim/neovim.svg)](https://codecov.io/gh/neovim/neovim)
[![Coverity Scan analysis](https://scan.coverity.com/projects/2227/badge.svg)](https://scan.coverity.com/projects/2227)
[![Clang analysis](https://neovim.io/doc/reports/clang/badge.svg)](https://neovim.io/doc/reports/clang)
[![PVS-Studio analysis](https://neovim.io/doc/reports/pvs/badge.svg)](https://neovim.io/doc/reports/pvs/PVS-studio.html.d)
15

16
[![Packages](https://repology.org/badge/tiny-repos/neovim.svg)](https://repology.org/metapackage/neovim)
Justin M. Keyes's avatar
Justin M. Keyes committed
17
[![Debian CI](https://badges.debian.net/badges/debian/testing/neovim/version.svg)](https://buildd.debian.org/neovim)
Justin M. Keyes's avatar
Justin M. Keyes committed
18
[![Downloads](https://img.shields.io/github/downloads/neovim/neovim/total.svg?maxAge=2592001)](https://github.com/neovim/neovim/releases/)
19

20
Neovim is a project that seeks to aggressively refactor Vim in order to:
21

22
- Simplify maintenance and encourage [contributions](CONTRIBUTING.md)
aph's avatar
aph committed
23
- Split the work between multiple developers
Justin M. Keyes's avatar
Justin M. Keyes committed
24 25 26
- Enable [advanced UIs] without modifications to the core
- Maximize [extensibility](https://github.com/neovim/neovim/wiki/Plugin-UI-architecture)

TJ Rana's avatar
TJ Rana committed
27
See the [Introduction](https://github.com/neovim/neovim/wiki/Introduction) wiki page and [Roadmap]
Justin M. Keyes's avatar
Justin M. Keyes committed
28
for more information.
29

Justin M. Keyes's avatar
Justin M. Keyes committed
30 31
[![Throughput Graph](https://graphs.waffle.io/neovim/neovim/throughput.svg)](https://waffle.io/neovim/neovim/metrics)

32 33 34 35 36
Features
--------

- Modern [GUIs](https://github.com/neovim/neovim/wiki/Related-projects#gui)
- [API](https://github.com/neovim/neovim/wiki/Related-projects#api-clients)
TJ Rana's avatar
TJ Rana committed
37 38
  access from any language including Clojure, Lisp, Go, Haskell, Lua,
  JavaScript, Perl, Python, Ruby, and Rust
39 40 41 42
- Embedded, scriptable [terminal emulator](https://neovim.io/doc/user/nvim_terminal_emulator.html)
- Asynchronous [job control](https://github.com/neovim/neovim/pull/2247)
- [Shared data (shada)](https://github.com/neovim/neovim/pull/2506) among multiple editor instances
- [XDG base directories](https://github.com/neovim/neovim/pull/3470) support
TJ Rana's avatar
TJ Rana committed
43
- Compatible with most Vim plugins, including Ruby and Python plugins
44 45 46

See [`:help nvim-features`][nvim-features] for the full list!

Justin M. Keyes's avatar
Justin M. Keyes committed
47 48 49 50 51 52 53 54 55
Install from package
--------------------

Pre-built packages for Windows, macOS, and Linux are found on the
[Releases](https://github.com/neovim/neovim/releases/) page.

Managed packages are in [Homebrew], [Debian], [Ubuntu], [Fedora], [Arch Linux], [Gentoo],
and [more](https://github.com/neovim/neovim/wiki/Installing-Neovim)!

Justin M. Keyes's avatar
Justin M. Keyes committed
56 57 58 59 60 61
Install from source
-------------------

    make CMAKE_BUILD_TYPE=RelWithDebInfo
    sudo make install

62
To install to a non-default location, set `CMAKE_INSTALL_PREFIX`:
Justin M. Keyes's avatar
Justin M. Keyes committed
63 64 65 66

    make CMAKE_EXTRA_FLAGS="-DCMAKE_INSTALL_PREFIX=/full/path/"
    make install

Justin M. Keyes's avatar
Justin M. Keyes committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
To skip bundled (`third-party/*`) dependencies:

1. Install the dependencies using a package manager.
   ```
   sudo apt install gperf luajit luarocks libuv1-dev libluajit-5.1-dev libunibilium-dev libmsgpack-dev libtermkey-dev libvterm-dev libjemalloc-dev
   sudo luarocks build mpack
   sudo luarocks build lpeg
   sudo luarocks build inspect
   ```
2. Build with `USE_BUNDLED=OFF`:
   ```
   make CMAKE_BUILD_TYPE=RelWithDebInfo USE_BUNDLED=OFF
   sudo make install
   ```

CMake features:

- List all build targets:
  ```
  cmake --build build --target help
  ```
- Print all variable definitions:
  ```
  cmake -LAH
  ```
- `build/CMakeCache.txt` contains the resolved values of all CMake variables.
- `build/compile_commands.json` shows the full compiler invocations for each translation unit.
94

TJ Rana's avatar
TJ Rana committed
95
See the [Building Neovim](https://github.com/neovim/neovim/wiki/Building-Neovim) wiki page for details.
Justin M. Keyes's avatar
Justin M. Keyes committed
96

97 98 99 100 101
Transitioning from Vim
--------------------

See [`:help nvim-from-vim`](https://neovim.io/doc/user/nvim.html#nvim-from-vim) for instructions.

102 103 104
Project layout
--------------

Justin M. Keyes's avatar
Justin M. Keyes committed
105 106 107
    ├─ ci/              build automation
    ├─ cmake/           build scripts
    ├─ runtime/         user plugins/docs
Justin M. Keyes's avatar
Justin M. Keyes committed
108
    ├─ src/nvim/        application source code (see src/nvim/README.md)
Justin M. Keyes's avatar
Justin M. Keyes committed
109 110 111 112 113
    │  ├─ api/          API subsystem
    │  ├─ eval/         VimL subsystem
    │  ├─ event/        event-loop subsystem
    │  ├─ generators/   code generation (pre-compilation)
    │  ├─ lib/          generic data structures
TJ Rana's avatar
TJ Rana committed
114
    │  ├─ lua/          Lua subsystem
Justin M. Keyes's avatar
Justin M. Keyes committed
115 116 117
    │  ├─ msgpack_rpc/  RPC subsystem
    │  ├─ os/           low-level platform code
    │  └─ tui/          built-in UI
TJ Rana's avatar
TJ Rana committed
118
    ├─ third-party/     CMake subproject to build dependencies
Justin M. Keyes's avatar
Justin M. Keyes committed
119 120
    └─ test/            tests (see test/README.md)

Justin M. Keyes's avatar
Justin M. Keyes committed
121 122
License
-------
aph's avatar
aph committed
123

124 125 126
Neovim is licensed under the terms of the Apache 2.0 license, except for
parts that were contributed under the Vim license.

127 128
- Contributions committed before [b17d96][license-commit] remain under the Vim
  license.
129 130

- Contributions committed after [b17d96][license-commit] are licensed under
131
  Apache 2.0 unless those contributions were copied from Vim (identified in
132 133
  the commit logs by the `vim-patch` token).

134
See `LICENSE` for details.
aph's avatar
aph committed
135 136 137 138 139 140 141 142 143 144 145 146

    Vim is Charityware.  You can use and copy it as much as you like, but you are
    encouraged to make a donation for needy children in Uganda.  Please see the
    kcc section of the vim docs or visit the ICCF web site, available at these URLs:

            http://iccf-holland.org/
            http://www.vim.org/iccf/
            http://www.iccf.nl/

    You can also sponsor the development of Vim.  Vim sponsors can vote for
    features.  The money goes to Uganda anyway.

Justin M. Keyes's avatar
Justin M. Keyes committed
147
[license-commit]: https://github.com/neovim/neovim/commit/b17d9691a24099c9210289f16afb1a498a89d803
Justin M. Keyes's avatar
Justin M. Keyes committed
148 149
[nvim-features]: https://neovim.io/doc/user/vim_diff.html#nvim-features
[Roadmap]: https://neovim.io/roadmap/
Justin M. Keyes's avatar
Justin M. Keyes committed
150
[advanced UIs]: https://github.com/neovim/neovim/wiki/Related-projects#gui
Justin M. Keyes's avatar
Justin M. Keyes committed
151 152 153
[Homebrew]: https://github.com/neovim/homebrew-neovim#installation
[Debian]: https://packages.debian.org/testing/neovim
[Ubuntu]: http://packages.ubuntu.com/search?keywords=neovim
TJ Rana's avatar
TJ Rana committed
154
[Fedora]: https://apps.fedoraproject.org/packages/neovim
Justin M. Keyes's avatar
Justin M. Keyes committed
155
[Arch Linux]: https://www.archlinux.org/packages/?q=neovim
Jonas Stein's avatar
Jonas Stein committed
156
[Gentoo]: https://packages.gentoo.org/packages/app-editors/neovim
157

158
<!-- vim: set tw=80: -->