|
|
|
# Vim Configuration
|
|
|
|
|
|
|
|
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`.
|
|
|
|
|
|
|
|
## 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. `node` - Certain plugins require node to work. Install it with your package manager.
|
|
|
|
5. `tmux`
|
|
|
|
|
|
|
|
## Structure
|
|
|
|
|
|
|
|
* `conf`: Contains all configuration related files.
|
|
|
|
* `plugins.vim`: 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`.
|
|
|
|
|
|
|
|
## Language Support
|
|
|
|
|
|
|
|
Support for `C`, `C++`, `Python`, `Haskell`, and `OCaml` is installed. To add your own configurations 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.
|
|
|
|
|
|
|
|
## Other Notes
|
|
|
|
|
|
|
|
### 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 status<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).
|