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.
 
 
Taylor Bockman 768af98c50 Add `asyncrun.vim`. 2 years ago
autoload Initial commit. 2 years ago
conf Add `asyncrun.vim`. 2 years ago
font Initial commit. 2 years ago
.gitignore Initial commit. 2 years ago
README.md Add `asyncrun.vim`. 2 years ago
init.vim More modification. Fix globbing, add empty python config. 2 years ago
ui.vim Initial commit. 2 years ago

README.md

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
  2. vim-plug - You may need to install this even with the autoload directory.
  3. Monospaced Nerd Font - 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.
    • 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.

Installation

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.

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.

Async Command Line

Asyncrun.vim is installed. You can use this to run shell commands asynchronously. To do this type :AsyncRun <command>.