|
|
|
# Neovim Configuration
|
|
|
|
|
|
|
|
![screenshot](screenshot.png)
|
|
|
|
|
|
|
|
This is V2 of my Vim configuration, designed for Neovim, broken out into
|
|
|
|
it's own repository for easier cloning without pulling down the entire
|
|
|
|
`essentials` repository.
|
|
|
|
|
|
|
|
I use the `nord` theme for both my terminal and Vim. You will need to adjust your theme and
|
|
|
|
airline according to your tastes in `plugins.vim` and `ui.vim`.
|
|
|
|
|
|
|
|
The V2 repo aims to take full advantage of asynchronous code and a modularized configuration to make
|
|
|
|
adaptation easier and the UI snappier. Additionally support for `tmux` has improved with this iteration
|
|
|
|
through the use of `vimux` and `vim-tmux-navigator`.
|
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
1. [Neovim](https://github.com/neovim/neovim)
|
|
|
|
2. [vim-plug](https://github.com/junegunn/vim-plug) - You may need to install this even with the `autoload` directory.
|
|
|
|
3. [Monospaced Nerd Font](https://www.nerdfonts.com/font-downloads) - The `/font` directory has one I use.
|
|
|
|
4. `tmux`
|
|
|
|
|
|
|
|
## Updating
|
|
|
|
|
|
|
|
After running `git pull` you may need to run `:PlugInstall` and restart neovim to resolve any errors.
|
|
|
|
|
|
|
|
For Python editing:
|
|
|
|
|
|
|
|
1. [Neovim](https://github.com/neovim/neovim) compiled with Python support.
|
|
|
|
2. Python
|
|
|
|
3. `pip install neovim && pip3 install neovim` in your global environment.
|
|
|
|
|
|
|
|
## Structure
|
|
|
|
|
|
|
|
* `conf`: Contains all configuration related files.
|
|
|
|
* `plugins.vim`: General plugin definitions.
|
|
|
|
* `keybinds.vim`: General keybinds such as leader key, etc.
|
|
|
|
* `config.vim`: Dumping ground for general configurations.
|
|
|
|
* `ui.vim`: General UI configurations.
|
|
|
|
* `search.vim`: Search configurations (for example ctrl-p).
|
|
|
|
* `git.vim`: Fugitive configurations.
|
|
|
|
* `langs`: Language specific configurations and keybinds.
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
```bash
|
|
|
|
cd .config
|
|
|
|
git clone git@git.xchg.sh:angrygoats/vim-config nvim
|
|
|
|
```
|
|
|
|
|
|
|
|
If you have added/changed plugins remember to `:PlugInstall` after saving. There currently
|
|
|
|
is no autodetect on a changed `plugin.vim`.
|
|
|
|
|
|
|
|
If you run into problems with pyenv on first start, insure that pyenv is installed and your pyenv
|
|
|
|
has at least one installation available. For example, run `pyenv install 3.9.1`.
|
|
|
|
|
|
|
|
## Language Support
|
|
|
|
|
|
|
|
Languages supported can be found in the `conf/langs` directory. To add more languages you can
|
|
|
|
create a file in the same form as those found in `conf/langs/` and place it in the `conf/langs/` folder.
|
|
|
|
It will be autoloaded.
|
|
|
|
|
|
|
|
The current loading script for languages does not check order before loading (so files can be loaded in
|
|
|
|
any order based on directory structure). However, if you followed the structure and put all your configs
|
|
|
|
in the correct files, those will be loaded *BEFORE* the languages and so you shouldn't run into (too many)
|
|
|
|
order issues. This may be patched in the future.
|
|
|
|
|
|
|
|
### Python
|
|
|
|
|
|
|
|
Pyenv support is added via [vim-pyenv](http://github.com/lambdalisue/vim-pyenv). `:PyenvActivate` can be used to
|
|
|
|
activate a given environment.
|
|
|
|
|
|
|
|
The file `conf/langs/python.vim` contains formatting code typical of a Python project (4 space indents, etc). If you
|
|
|
|
wish to adjust this you can do that here, or make modifications on a per-project basis.
|
|
|
|
|
|
|
|
## Other Notes
|
|
|
|
|
|
|
|
### Help
|
|
|
|
|
|
|
|
You can type `:help <name_of_package>` (for example `:help vim-pyenv`) to read the documentation.
|
|
|
|
|
|
|
|
### Tmux Navigation
|
|
|
|
|
|
|
|
With Tmux activated you can use
|
|
|
|
|
|
|
|
```
|
|
|
|
<ctrl-h> => Left
|
|
|
|
<ctrl-j> => Down
|
|
|
|
<ctrl-k> => Up
|
|
|
|
<ctrl-l> => Right
|
|
|
|
<ctrl-\> => Previous split
|
|
|
|
```
|
|
|
|
|
|
|
|
To move seamlessly between splits.
|
|
|
|
|
|
|
|
### Autocompletion
|
|
|
|
|
|
|
|
Autocompletion is provided by [asyncomplete.vim](https://github.com/prabirshrestha/asyncomplete.vim). Additionally
|
|
|
|
LSP-based autocompletion is installed.
|
|
|
|
|
|
|
|
### Default Leader
|
|
|
|
|
|
|
|
The default leader is the space key.
|
|
|
|
|
|
|
|
### Git
|
|
|
|
|
|
|
|
`vim-fugitive` is installed. Bindings can be found in `conf/keybinds.vim` and documentation can be found
|
|
|
|
[here](https://github.com/tpope/vim-fugitive).
|
|
|
|
|
|
|
|
The following binds are set to help development:
|
|
|
|
|
|
|
|
```
|
|
|
|
nnoremap <Leader>gs :Git<CR>
|
|
|
|
nnoremap <Leader>gd :Git diff<CR>
|
|
|
|
nnoremap <Leader>gb :Git blame<CR>
|
|
|
|
nnoremap <Leader>gc :Git commit<CR>
|
|
|
|
nnoremap <Leader>gp :Git push<CR>
|
|
|
|
```
|
|
|
|
|
|
|
|
### LSP
|
|
|
|
|
|
|
|
`vim-lsp` is installed with `vim-lsp-settings`. While editing a file that has a supported LSP server
|
|
|
|
you can type `LspInstallServer` to install the associated server. You can uninstall a server with
|
|
|
|
`:LspUninstallServer server-name`. You many need to restart your vim instance once the server is installed
|
|
|
|
to activate the LSP support.
|
|
|
|
|
|
|
|
### Org Mode
|
|
|
|
|
|
|
|
`vim-orgmode` is installed. The usage documentation can be found [here](https://github.com/jceb/vim-orgmode/blob/master/doc/orgguide.txt).
|
|
|
|
|
|
|
|
### Async Command Line
|
|
|
|
|
|
|
|
[Asyncrun.vim](https://github.com/skywind3000/asyncrun.vim) is installed. You can use this to run shell commands asynchronously.
|
|
|
|
To do this type `:AsyncRun <command>`.
|