1
0
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:
jdhao 2019-12-26 00:40:26 +08:00
parent c225fb0003
commit 492a6d7a2f
3 changed files with 343 additions and 177 deletions

190
README.md
View File

@ -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).
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
recommended to do so. Good configurations are personal. Everyone should have
his or her unique configuration. You are encouraged to copy from this
configuration the part you feel useful and add it to your own configuration.
you can download the whole repository and use it, it is not recommended to do
so. Good configurations are personal. Everyone should have his or her unique
config file. You are encouraged to copy from this this repo the part you feel
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
how to install Nvim dependencies as well as nvim on Linux environment.
See [doc here](docs/README.md) on how to install Nvim's dependencies, Nvim
itself and the configuration on different platforms (Linux, MacOS and Windows).
## Features ##
+ Auto-completion for Python via [Deoplete](https://github.com/Shougo/deoplete.nvim).
+ 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).
+ Powerful sidebar via [Nerdtree](https://github.com/scrooloose/nerdtree).
+ 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
If you come across an issue, you can first use `:checkhealth` command provided
by `nvim` to trouble-shoot yourself. Please read carefully the messages
provided by health check.
If you still have an issue, you may
[open a new issue](https://github.com/jdhao/nvim-config/issues).
If you still have an issue, you may [open a new issue](https://github.com/jdhao/nvim-config/issues).
# Further readings

154
docs/Nvim_setup.sh Executable file
View 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
View 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.