5.5 KiB
Neovim 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.lua
and ui.lua
.
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
.
If you are interested in the vimscript version please refer to the vimscript-final tag.
All future modifications will be done in lua.
Requirements
- Neovim
- vim-plug - You may need to install this even with the
autoload
directory. - Monospaced Nerd Font - The
/font
directory has one I use. tmux
Updating
After running git pull
you may need to run :PlugInstall
and restart neovim to resolve any errors.
For Python editing:
- Neovim compiled with Python support.
- Python
pip install neovim && pip3 install neovim
in your global environment.
Structure
conf
: Contains all configuration related files.plugins.lua
: General plugin definitions.keybinds.lua
: General keybinds such as leader key, etc.config.lua
: Dumping ground for general configurations.ui.lua
: General UI configurations.search.lua
: Search configurations (for example ctrl-p).git.lua
: Fugitive configurations.langs
: Language specific configurations and keybinds.
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 plugins.lua
.
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. :PyenvActivate
can be used to
activate a given environment.
The file conf/langs/python.lua
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. Additionally LSP-based autocompletion is installed.
Automatic popups are disabled. In order to see suggestions begin typing and then hit <C-Space>
in insert mode.
Once in the popup you can use <Tab>
and <S-Tab>
to go up and down the suggestions.
Default Leader
The default leader is the space key.
Git
vim-fugitive
is installed. Bindings can be found in conf/keybinds.lua
and documentation can be found
here.
The following binds are set to help development:
<Leader>gs :Git<CR>
<Leader>gd :Git diff<CR>
<Leader>gb :Git blame<CR>
<Leader>gc :Git commit<CR>
<Leader>gp :Git push<CR>
Treesitter
Treesitter is installed as a plugin and syntax highlighting can be modified in conf/lang/general.lua
.
You can add languages you would like there. Alternatively, auto-loading is enabled which should
handle most syntax highlighting cases.
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>
.
Search
ctrlp and telescope are installed. The hotkeys are as follows:
<leader>ff find_files
<leader>fg live_grep
<leader>fb buffers
<leader>fh help_tags
<ctrl>p ctrlp search