V2 of my Neovim configuration.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.6 KiB

2 years ago
# 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`: General plugin definitions.
2 years ago
* `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. These files diverge
from the standard structure slightly. Plugins for each language can be defined
in these files, as well as keybinds and configurations. This was done to keep editing for
a single language to one place.
2 years ago
## 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.
2 years ago
### 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>
```
2 years ago
### 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>`.