mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
Update documentation
This commit is contained in:
parent
c225fb0003
commit
492a6d7a2f
190
README.md
190
README.md
@ -10,200 +10,36 @@ the additional config file for GUI client of Neovim (I am using
|
|||||||
[neovim-qt](https://github.com/equalsraf/neovim-qt) for now on Windows).
|
[neovim-qt](https://github.com/equalsraf/neovim-qt) for now on Windows).
|
||||||
|
|
||||||
My configurations are heavily documented to make it as clear as possible. While
|
My configurations are heavily documented to make it as clear as possible. While
|
||||||
you can download the whole configuration and replace yours, it is not
|
you can download the whole repository and use it, it is not recommended to do
|
||||||
recommended to do so. Good configurations are personal. Everyone should have
|
so. Good configurations are personal. Everyone should have his or her unique
|
||||||
his or her unique configuration. You are encouraged to copy from this
|
config file. You are encouraged to copy from this this repo the part you feel
|
||||||
configuration the part you feel useful and add it to your own configuration.
|
useful and add it to your own Nvim config.
|
||||||
|
|
||||||
See [this wiki page](https://github.com/jdhao/nvim-config/wiki/Nvim-setup-in-Linux) on
|
See [doc here](docs/README.md) on how to install Nvim's dependencies, Nvim
|
||||||
how to install Nvim dependencies as well as nvim on Linux environment.
|
itself and the configuration on different platforms (Linux, MacOS and Windows).
|
||||||
|
|
||||||
## Features ##
|
## Features ##
|
||||||
|
|
||||||
+ Auto-completion for Python via [Deoplete](https://github.com/Shougo/deoplete.nvim).
|
+ Auto-completion for Python via [Deoplete](https://github.com/Shougo/deoplete.nvim).
|
||||||
+ Source code linting via [Neomake](https://github.com/neomake/neomake).
|
+ Source code linting via [Neomake](https://github.com/neomake/neomake).
|
||||||
|
+ Code formatting via [Neoformat](https://github.com/sbdchd/neoformat).
|
||||||
|
+ Markdown writing and syntax highlighting via [vim-markdown](https://github.com/plasticboy/vim-markdown) and [vim-pandoc-syntax](https://github.com/vim-pandoc/vim-pandoc-syntax).
|
||||||
|
+ LaTeX editing via [vimtex](https://github.com/lervag/vimtex).
|
||||||
|
+ Git integration via [vim-fugitive](https://github.com/tpope/vim-fugitive).
|
||||||
|
+ Fast buffer jump via [vim-sneak](https://github.com/justinmk/vim-sneak).
|
||||||
|
+ Open a file in current project quickly via [LeaderF](https://github.com/Yggdroot/LeaderF).
|
||||||
+ Beautiful status line via [vim-airline](https://github.com/vim-airline/vim-airline).
|
+ Beautiful status line via [vim-airline](https://github.com/vim-airline/vim-airline).
|
||||||
+ Powerful sidebar via [Nerdtree](https://github.com/scrooloose/nerdtree).
|
+ Powerful sidebar via [Nerdtree](https://github.com/scrooloose/nerdtree).
|
||||||
+ Tags navigation via [tagbar](https://github.com/majutsushi/tagbar).
|
+ Tags navigation via [tagbar](https://github.com/majutsushi/tagbar).
|
||||||
+ Fast buffer jump via [vim-sneak](https://github.com/justinmk/vim-sneak).
|
|
||||||
+ Open a file in current project quickly via [LeaderF](https://github.com/Yggdroot/LeaderF).
|
|
||||||
+ ......
|
+ ......
|
||||||
|
|
||||||
# Pre-requisite
|
|
||||||
|
|
||||||
There are a few requirements if you want to use Neovim for efficient editing.
|
|
||||||
|
|
||||||
## Python
|
|
||||||
|
|
||||||
To use auto-completion and other features, you must install Python 3. The
|
|
||||||
easiest way to install Python 3 is via
|
|
||||||
[Anaconda](https://www.anaconda.com/distribution/#download-section). Make sure
|
|
||||||
that the output of `python --version` shows that Python 3.x is installed.
|
|
||||||
|
|
||||||
## Pynvim
|
|
||||||
|
|
||||||
Neovim relies on [pynvim](https://github.com/neovim/pynvim) to communicate with
|
|
||||||
plugins which utilizes its Python binding. Pynvim is required by plugin such as
|
|
||||||
Deoplete.
|
|
||||||
|
|
||||||
## Jedi
|
|
||||||
|
|
||||||
For Python code auto-completion to work, you need to install
|
|
||||||
[Jedi](https://github.com/davidhalter/jedi):
|
|
||||||
|
|
||||||
```
|
|
||||||
pip install jedi
|
|
||||||
```
|
|
||||||
|
|
||||||
## Git
|
|
||||||
|
|
||||||
Git is used by plugin manager vim-plug to download plugins from GitHub or
|
|
||||||
other Git repositories.
|
|
||||||
|
|
||||||
Since Git is usually pre-installed on Linux and Mac, you do not need to worry
|
|
||||||
if you are on these two platforms. For Windows, install [Git for
|
|
||||||
Windows](https://git-scm.com/download/win) and make sure you can call `git`
|
|
||||||
from the command line.
|
|
||||||
|
|
||||||
## ctags
|
|
||||||
|
|
||||||
In order to use tags related plugins such as
|
|
||||||
[tagbar](/github.com/majutsushi/tagbar) and
|
|
||||||
[gutentags](https://github.com/ludovicchabant/vim-gutentags), you need to
|
|
||||||
install a ctags distribution. Universal ctags is preferred.
|
|
||||||
|
|
||||||
To install ctags on Mac, [use Homebrew](https://github.com/universal-ctags/homebrew-universal-ctags).
|
|
||||||
To install it Windows, [use chocolatey](https://chocolatey.org/packages/universal-ctags):
|
|
||||||
|
|
||||||
```
|
|
||||||
choco install universal-ctags
|
|
||||||
```
|
|
||||||
|
|
||||||
To install it on Linux, you need to build it yourself. See
|
|
||||||
[here](https://askubuntu.com/questions/796408/installing-and-using-universal-ctags-instead-of-exuberant-ctags/836521#836521).
|
|
||||||
|
|
||||||
Set its PATH properly and make sure you can call `ctags` from command line.
|
|
||||||
|
|
||||||
## Ripgrep
|
|
||||||
|
|
||||||
Ripgrep is fast grep tool available for both Linux, Windows and Mac. It is used
|
|
||||||
by several searching plugins.
|
|
||||||
|
|
||||||
For Windows and Mac, you can install it via chocolatey and homebrew. For Linux,
|
|
||||||
you can download from its [release
|
|
||||||
page](https://github.com/BurntSushi/ripgrep/releases) and install it.
|
|
||||||
|
|
||||||
## Linters
|
|
||||||
|
|
||||||
A linter is a tool to check your code for possible issues or errors. Based on
|
|
||||||
your programming languages, you may need to install various linters.
|
|
||||||
|
|
||||||
+ Python: [pylint](https://github.com/PyCQA/pylint) and
|
|
||||||
[flake8](https://github.com/PyCQA/flake8).
|
|
||||||
+ Vim script: [vint](https://github.com/Kuniwak/vint) (You may need to install
|
|
||||||
the pre-release versions because of [this issue](https://github.com/Kuniwak/vint/issues/290)).
|
|
||||||
|
|
||||||
For other linters, please consult the plugin documentation. For Neomake (which
|
|
||||||
is the linting plugin I currently use), a list of makers (i.e., linters) for
|
|
||||||
different languages is listed
|
|
||||||
[here](https://github.com/neomake/neomake/wiki/Makers).
|
|
||||||
|
|
||||||
## Terminal emulators
|
|
||||||
|
|
||||||
Which [terminal emulator](https://en.wikipedia.org/wiki/Terminal_emulator) you
|
|
||||||
are using greatly affects the appearance and functionalities of Neovim. Since
|
|
||||||
Neovim supports true colors, terminals which support true colors are
|
|
||||||
recommended. For a list of terminals which support true colors, see
|
|
||||||
[here](https://github.com/termstandard/colors).
|
|
||||||
|
|
||||||
For Mac, you can use [iterm2](https://www.iterm2.com/). If you connect to Linux
|
|
||||||
server on Windows, I recommend [wsltty](https://github.com/mintty/wsltty) and
|
|
||||||
[Cygwin](https://www.cygwin.com/), both of them use
|
|
||||||
[mintty](https://github.com/mintty/mintty) as the terminal emulator.
|
|
||||||
|
|
||||||
## Font
|
|
||||||
|
|
||||||
Since Vim-airline uses several symbols not available in normal font, you need
|
|
||||||
to install [fonts here](https://github.com/powerline/fonts) to make vim-airline
|
|
||||||
look pretty. I am using
|
|
||||||
[Hack](https://github.com/powerline/fonts/tree/master/Hack), and it looks
|
|
||||||
great.
|
|
||||||
|
|
||||||
# How to Install Neovim
|
|
||||||
|
|
||||||
There are various ways to install Neovim based on your system.
|
|
||||||
|
|
||||||
## Linux
|
|
||||||
|
|
||||||
Follow the official guide and download the appimage from the [release
|
|
||||||
page](https://github.com/neovim/neovim/releases/nightly).
|
|
||||||
|
|
||||||
For some Linux systems, you may not be able to run the appimage. You can
|
|
||||||
directly download the tar ball from
|
|
||||||
[here](https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz)
|
|
||||||
and extract it to run Neovim.
|
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
The easiest way to install Neovim on Windows is via
|
|
||||||
[chocolatey](https://chocolatey.org/install). First, install chocolatey. Then
|
|
||||||
you can install neovim easily with
|
|
||||||
|
|
||||||
```
|
|
||||||
# install latest version of neovim
|
|
||||||
# choco install neovim --pre
|
|
||||||
|
|
||||||
choco install neovim
|
|
||||||
```
|
|
||||||
|
|
||||||
The Neovim that chocolatey installs may not the latest version. To keep
|
|
||||||
up-to-date with the latest features of Neovim, you may download the latest
|
|
||||||
release from GitHub and manually extract it.
|
|
||||||
|
|
||||||
## Mac
|
|
||||||
|
|
||||||
It is recommended to install neovim via [Homebrew](https://brew.sh/) on MacOS.
|
|
||||||
Simply run the following command:
|
|
||||||
|
|
||||||
```
|
|
||||||
brew install neovim
|
|
||||||
# If you want to install latest version of neovim, use the following command
|
|
||||||
# instead.
|
|
||||||
# brew install --HEAD neovim
|
|
||||||
```
|
|
||||||
|
|
||||||
After installing Neovim, you may need to add the directory where the Neovim
|
|
||||||
executable (`nvim` on Linux and Mac, `nvim.exe` on Windows) resides to your
|
|
||||||
system `PATH`.
|
|
||||||
|
|
||||||
Make sure that you can call `nvim` from the command line after all these setup.
|
|
||||||
|
|
||||||
# Nvim settings
|
|
||||||
|
|
||||||
# How to install this configuration
|
|
||||||
|
|
||||||
On Windows, the config directory is `$HOME/AppData/Local/nvim`[^1]. On Linux
|
|
||||||
and Mac, the directory is `~/.config/nvim`. First, you need to remove all the
|
|
||||||
files under the config directory (including dot files), then use the following
|
|
||||||
command to install this configuration:
|
|
||||||
|
|
||||||
```
|
|
||||||
git clone https://github.com/jdhao/nvim-config.git .
|
|
||||||
```
|
|
||||||
|
|
||||||
After that, when you first open nvim, all the plugins included in this
|
|
||||||
configuration will be installed automatically for you. Since I use quite a lot
|
|
||||||
of plugins (around 60 plugins), it may take some time to install all of them,
|
|
||||||
depending on your network connection speed.
|
|
||||||
|
|
||||||
# Trouble shooting
|
# Trouble shooting
|
||||||
|
|
||||||
If you come across an issue, you can first use `:checkhealth` command provided
|
If you come across an issue, you can first use `:checkhealth` command provided
|
||||||
by `nvim` to trouble-shoot yourself. Please read carefully the messages
|
by `nvim` to trouble-shoot yourself. Please read carefully the messages
|
||||||
provided by health check.
|
provided by health check.
|
||||||
|
|
||||||
If you still have an issue, you may
|
If you still have an issue, you may [open a new issue](https://github.com/jdhao/nvim-config/issues).
|
||||||
[open a new issue](https://github.com/jdhao/nvim-config/issues).
|
|
||||||
|
|
||||||
# Further readings
|
# Further readings
|
||||||
|
|
||||||
|
|||||||
154
docs/Nvim_setup.sh
Executable file
154
docs/Nvim_setup.sh
Executable file
@ -0,0 +1,154 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -exu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# Whether to python has been installed
|
||||||
|
PYTHON_INSTALLED=false
|
||||||
|
|
||||||
|
# If Python has been installed, then we need to know whether Python is provided
|
||||||
|
# by the system, or you have already installed Python under your HOME.
|
||||||
|
SYSTEM_PYTHON=true
|
||||||
|
|
||||||
|
# Whether to add the path of the installed executables to system PATH
|
||||||
|
ADD_TO_SYSTEM_PATH=false
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Anaconda or miniconda install #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
if [[ ! "$PYTHON_INSTALLED" = true ]]; then
|
||||||
|
echo "Installing Python in user HOME"
|
||||||
|
|
||||||
|
SYSTEM_PYTHON=false
|
||||||
|
|
||||||
|
# Whether to install Anaconda (INSTALL_ANACONDA=true) or Miniconda (INSTALL_ANACONDA=false)
|
||||||
|
INSTALL_ANACONDA=false
|
||||||
|
if [[ "$INSTALL_ANACONDA" = true ]]; then
|
||||||
|
CONDA_DIR=$HOME/tools/anaconda
|
||||||
|
CONDA_NAME=Anaconda.sh
|
||||||
|
CONDA_LINK="https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh"
|
||||||
|
else
|
||||||
|
CONDA_DIR=$HOME/tools/miniconda
|
||||||
|
CONDA_NAME=Miniconda.sh
|
||||||
|
CONDA_LINK="https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading and installing conda"
|
||||||
|
|
||||||
|
if [[ ! -f "$HOME/packages/$CONDA_NAME" ]]; then
|
||||||
|
curl -Lo "$HOME/packages/$CONDA_NAME" $CONDA_LINK
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install conda silently
|
||||||
|
if [[ -d $CONDA_DIR ]]; then
|
||||||
|
rm -rf "$CONDA_DIR"
|
||||||
|
fi
|
||||||
|
bash "$HOME/packages/$CONDA_NAME" -b -p "$CONDA_DIR"
|
||||||
|
|
||||||
|
# Setting up environment variables
|
||||||
|
if [[ "$ADD_TO_SYSTEM_PATH" = true ]]; then
|
||||||
|
echo "export PATH=$CONDA_DIR/bin:$PATH" >> "$HOME/.bash_profile"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install some Python packages
|
||||||
|
echo "Install pynvim, pylint flake8, jedi"
|
||||||
|
|
||||||
|
if [[ "$SYSTEM_PYTHON" = true ]]; then
|
||||||
|
echo "Using system Python"
|
||||||
|
|
||||||
|
# If we use system Python, we need to install these Python packages under user HOME,
|
||||||
|
# since we do not have permission to install them under system directories.
|
||||||
|
pip install --user pynvim pylint jedi flake8 black
|
||||||
|
else
|
||||||
|
echo "Using custom Python"
|
||||||
|
pip install pynvim pylint jedi flake8 black
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Ripgrep part #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
echo "Install ripgrep"
|
||||||
|
RIPGREP_DIR=$HOME/tools/ripgrep
|
||||||
|
RIPGREP_SRC_NAME=$HOME/packages/ripgrep.tar.gz
|
||||||
|
RIPGREP_LINK="https://github.com/BurntSushi/ripgrep/releases/download/11.0.2/ripgrep-11.0.2-x86_64-unknown-linux-musl.tar.gz"
|
||||||
|
|
||||||
|
if [[ ! -f $RIPGREP_SRC_NAME ]]; then
|
||||||
|
echo "Downloading ripgrep and renaming"
|
||||||
|
wget $RIPGREP_LINK -O "$RIPGREP_SRC_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$RIPGREP_DIR" ]]; then
|
||||||
|
echo "Creating ripgrep directory under tools directory"
|
||||||
|
mkdir -p "$RIPGREP_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Extracting to $HOME/tools/ripgrep directory"
|
||||||
|
tar zxvf "$RIPGREP_SRC_NAME" -C "$RIPGREP_DIR" --strip-components 1
|
||||||
|
|
||||||
|
if [[ "$ADD_TO_SYSTEM_PATH" = true ]]; then
|
||||||
|
echo "export PATH=$RIPGREP_DIR:$PATH" >> "$HOME/.bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Ctags install #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
echo "Install ctags"
|
||||||
|
CTAGS_SRC_DIR=$HOME/packages/ctags
|
||||||
|
CTAGS_DIR=$HOME/tools/ctags
|
||||||
|
CTAGS_LINK="https://github.com/universal-ctags/ctags.git"
|
||||||
|
|
||||||
|
if [[ ! -d $CTAGS_SRC_DIR ]]; then
|
||||||
|
mkdir -p "$CTAGS_SRC_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$CTAGS_SRC_DIR"
|
||||||
|
git clone $CTAGS_LINK .
|
||||||
|
./autogen.sh && ./configure --prefix="$CTAGS_DIR"
|
||||||
|
make -j && make install
|
||||||
|
|
||||||
|
if [[ "$ADD_TO_SYSTEM_PATH" = true ]]; then
|
||||||
|
echo "export PATH=$CTAGS_DIR/bin:$PATH" >> "$HOME/.bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Nvim install #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
echo "Installing Neovim"
|
||||||
|
echo "Creating nvim directory under tools directory"
|
||||||
|
NVIM_DIR=$HOME/tools/nvim
|
||||||
|
NVIM_SRC_NAME=$HOME/packages/nvim-linux64.tar.gz
|
||||||
|
NVIM_CONFIG_DIR=$HOME/.config/nvim
|
||||||
|
NVIM_LINK="https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz"
|
||||||
|
|
||||||
|
if [[ ! -d "$NVIM_DIR" ]]; then
|
||||||
|
mkdir -p "$NVIM_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading Neovim"
|
||||||
|
if [[ ! -f $NVIM_SRC_NAME ]]; then
|
||||||
|
wget "$NVIM_LINK" -O "$NVIM_SRC_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Extracting neovim"
|
||||||
|
tar zxvf "$NVIM_SRC_NAME" --strip-components 1 -C "$NVIM_DIR"
|
||||||
|
|
||||||
|
echo "Setting up config and installing plugins"
|
||||||
|
git clone https://github.com/jdhao/nvim-config.git "$NVIM_CONFIG_DIR" \
|
||||||
|
&& "$NVIM_DIR/bin/nvim" +PlugInstall +qall
|
||||||
|
|
||||||
|
if [[ "$ADD_TO_SYSTEM_PATH" = true ]]; then
|
||||||
|
echo "export PATH=$NVIM_DIR/bin:$PATH" >> "$HOME/.bash_profile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Post processing #
|
||||||
|
#######################################################################
|
||||||
|
# Let PATH changes take effect
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
source "$HOME/.bash_profile"
|
||||||
176
docs/README.md
Normal file
176
docs/README.md
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
# Pre-requisite
|
||||||
|
|
||||||
|
There are a few requirements if you want to use Neovim for efficient editing
|
||||||
|
and development work.
|
||||||
|
|
||||||
|
## Python
|
||||||
|
|
||||||
|
To use auto-completion and other features, you must install Python 3. The
|
||||||
|
easiest way to install Python 3 is via
|
||||||
|
[Anaconda](https://www.anaconda.com/distribution/#download-section). Make sure
|
||||||
|
that the output of `python --version` shows that Python 3.x is installed.
|
||||||
|
|
||||||
|
## Pynvim
|
||||||
|
|
||||||
|
Neovim relies on [pynvim](https://github.com/neovim/pynvim) to communicate with
|
||||||
|
plugins which utilizes its Python binding. Pynvim is required by plugin such as
|
||||||
|
Deoplete.
|
||||||
|
|
||||||
|
## Jedi
|
||||||
|
|
||||||
|
For Python code auto-completion to work, you need to install
|
||||||
|
[Jedi](https://github.com/davidhalter/jedi):
|
||||||
|
|
||||||
|
```
|
||||||
|
pip install jedi
|
||||||
|
```
|
||||||
|
|
||||||
|
## Git
|
||||||
|
|
||||||
|
Git is used by plugin manager vim-plug to download plugins from GitHub or
|
||||||
|
other Git repositories.
|
||||||
|
|
||||||
|
Since Git is usually pre-installed on Linux and Mac, you do not need to worry
|
||||||
|
if you are on these two platforms. For Windows, install [Git for
|
||||||
|
Windows](https://git-scm.com/download/win) and make sure you can call `git`
|
||||||
|
from the command line.
|
||||||
|
|
||||||
|
## ctags
|
||||||
|
|
||||||
|
In order to use tags related plugins such as
|
||||||
|
[tagbar](/github.com/majutsushi/tagbar) and
|
||||||
|
[gutentags](https://github.com/ludovicchabant/vim-gutentags), you need to
|
||||||
|
install a ctags distribution. Universal ctags is preferred.
|
||||||
|
|
||||||
|
To install ctags on Mac, [use Homebrew](https://github.com/universal-ctags/homebrew-universal-ctags).
|
||||||
|
To install it Windows, [use chocolatey](https://chocolatey.org/packages/universal-ctags):
|
||||||
|
|
||||||
|
```
|
||||||
|
choco install universal-ctags
|
||||||
|
```
|
||||||
|
|
||||||
|
To install it on Linux, you need to build it yourself. See
|
||||||
|
[here](https://askubuntu.com/questions/796408/installing-and-using-universal-ctags-instead-of-exuberant-ctags/836521#836521).
|
||||||
|
|
||||||
|
Set its PATH properly and make sure you can call `ctags` from command line.
|
||||||
|
|
||||||
|
## Ripgrep
|
||||||
|
|
||||||
|
Ripgrep is fast grep tool available for both Linux, Windows and Mac. It is used
|
||||||
|
by several searching plugins.
|
||||||
|
|
||||||
|
For Windows and Mac, you can install it via chocolatey and homebrew. For Linux,
|
||||||
|
you can download from its [release
|
||||||
|
page](https://github.com/BurntSushi/ripgrep/releases) and install it.
|
||||||
|
|
||||||
|
## Linters
|
||||||
|
|
||||||
|
A linter is a tool to check your code for possible issues or errors. Based on
|
||||||
|
your programming languages, you may need to install various linters.
|
||||||
|
|
||||||
|
+ Python: [pylint](https://github.com/PyCQA/pylint) and
|
||||||
|
[flake8](https://github.com/PyCQA/flake8).
|
||||||
|
+ Vim script: [vint](https://github.com/Kuniwak/vint) (You may need to install
|
||||||
|
the pre-release versions because of [this issue](https://github.com/Kuniwak/vint/issues/290)).
|
||||||
|
|
||||||
|
For other linters, please consult the plugin documentation. For Neomake (which
|
||||||
|
is the linting plugin I currently use), a list of makers (i.e., linters) for
|
||||||
|
different languages is listed
|
||||||
|
[here](https://github.com/neomake/neomake/wiki/Makers).
|
||||||
|
|
||||||
|
## Terminal emulators
|
||||||
|
|
||||||
|
Which [terminal emulator](https://en.wikipedia.org/wiki/Terminal_emulator) you
|
||||||
|
are using greatly affects the appearance and functionalities of Neovim. Since
|
||||||
|
Neovim supports true colors, terminals which support true colors are
|
||||||
|
recommended. For a list of terminals which support true colors, see
|
||||||
|
[here](https://github.com/termstandard/colors).
|
||||||
|
|
||||||
|
For Mac, you can use [iterm2](https://www.iterm2.com/). If you connect to Linux
|
||||||
|
server on Windows, I recommend [wsltty](https://github.com/mintty/wsltty) and
|
||||||
|
[Cygwin](https://www.cygwin.com/), both of them use
|
||||||
|
[mintty](https://github.com/mintty/mintty) as the terminal emulator.
|
||||||
|
|
||||||
|
## Font
|
||||||
|
|
||||||
|
Since Vim-airline uses several symbols not available in normal font, you need
|
||||||
|
to install [fonts here](https://github.com/powerline/fonts) to make vim-airline
|
||||||
|
look pretty. I am using
|
||||||
|
[Hack](https://github.com/powerline/fonts/tree/master/Hack), and it looks
|
||||||
|
great.
|
||||||
|
|
||||||
|
# How to Install Neovim
|
||||||
|
|
||||||
|
There are various ways to install Neovim based on your system.
|
||||||
|
|
||||||
|
## Linux
|
||||||
|
|
||||||
|
Follow the official guide and download the appimage from the [release
|
||||||
|
page](https://github.com/neovim/neovim/releases/nightly).
|
||||||
|
|
||||||
|
For some Linux systems, you may not be able to run the appimage. You can
|
||||||
|
directly download the tar ball from
|
||||||
|
[here](https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz)
|
||||||
|
and extract it to run Neovim.
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
The easiest way to install Neovim on Windows is via
|
||||||
|
[chocolatey](https://chocolatey.org/install). First, install chocolatey. Then
|
||||||
|
you can install neovim easily with
|
||||||
|
|
||||||
|
```
|
||||||
|
# install latest version of neovim
|
||||||
|
# choco install neovim --pre
|
||||||
|
|
||||||
|
choco install neovim
|
||||||
|
```
|
||||||
|
|
||||||
|
The Neovim that chocolatey installs may not the latest version. To keep
|
||||||
|
up-to-date with the latest features of Neovim, you may download the latest
|
||||||
|
release from GitHub and manually extract it.
|
||||||
|
|
||||||
|
## Mac
|
||||||
|
|
||||||
|
It is recommended to install neovim via [Homebrew](https://brew.sh/) on MacOS.
|
||||||
|
Simply run the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
brew install neovim
|
||||||
|
# If you want to install latest version of neovim, use the following command
|
||||||
|
# instead.
|
||||||
|
# brew install --HEAD neovim
|
||||||
|
```
|
||||||
|
|
||||||
|
After installing Neovim, you may need to add the directory where the Neovim
|
||||||
|
executable (`nvim` on Linux and Mac, `nvim.exe` on Windows) resides to your
|
||||||
|
system `PATH`.
|
||||||
|
|
||||||
|
Make sure that you can call `nvim` from the command line after all these setup.
|
||||||
|
|
||||||
|
# Setting up Nvim
|
||||||
|
|
||||||
|
## How to install this configuration
|
||||||
|
|
||||||
|
On Windows, the config directory is `$HOME/AppData/Local/nvim`[^1]. On Linux
|
||||||
|
and Mac, the directory is `~/.config/nvim`. First, you need to remove all the
|
||||||
|
files under the config directory (including dot files), then use the following
|
||||||
|
command to install this configuration:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/jdhao/nvim-config.git .
|
||||||
|
```
|
||||||
|
|
||||||
|
After that, when you first open nvim, all the plugins included in this
|
||||||
|
configuration will be installed automatically for you. Since I use quite a lot
|
||||||
|
of plugins (around 60 plugins), it may take some time to install all of them,
|
||||||
|
depending on your network connection speed.
|
||||||
|
|
||||||
|
# Automatic Installation #
|
||||||
|
|
||||||
|
To set up a workable Neovim environment in Linux, I use the script
|
||||||
|
[`Nvim_setup.sh`](Nvim_setup.sh) to automatically install necessary
|
||||||
|
dependencies, Neovim itself and Nvim configs in this repo.
|
||||||
|
|
||||||
|
Note that the variable `PYTHON_INSTALLED`, `SYSTEM_PYTHON` and
|
||||||
|
`ADD_TO_SYSTEM_PATH` should be set properly based on your situation.
|
||||||
Loading…
x
Reference in New Issue
Block a user