This is my personal Neovim configuration. I have it on here mostly to sync
between my computers, but it is public if anyone is interested. This is very
much intended to be an IDE-like setup useful across many languages, with a
large spectrum of features built around a <space> leader key.
This configuration is built upon the version of Neovim in the Arch Extra Repository. You may need to use an AppImage or build from source if the nightly builds are not available on your package manager.
Optional, for Haskell:
haskell-language-server- A local
hoogleinstallation fast-tagshaskell-debug-adapter
For Rust test support, you will need to cargo install cargo-nextest.
Clone this repo into the config location:
git clone https://github.com/vinnydiehl/nvim-config.git ~/.config/nvimInstall Packer:
git clone --depth 1 https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvimBefore launching for the first time, move the after/ directory out of there
to avoid a bunch of errors from uninstalled plugins being called:
mv ~/.config/nvim/after ~/aftertmpLaunch Neovim and run :PackerSync, wait for everything to finish, and then
move the after/ directory back into place:
mv ~/aftertmp ~/.config/nvim/afterRelaunch Neovim and it will install a few basic LSPs. You can see which LSPs
are installed in the lsp.ensure_installed() call near the top of this
file-
if you would like to manage these manually, you can remove this entire function
call and manage your LSPs with :Mason.
This is not a community project, but might be a good starting point for someone who would like a fully featured vim setup. Adjust to your preferences.
One thing that is specific to my setup is that I keep my all of my projects in
a ~/src directory; this as well as ~/.config/nvim and ~/.config/zsh are
indexed by the project
browser. You can
set which directories are indexed by the project browser in this
file:
repo = {
list = {
search_dirs = {
"~/src",
"~/.config/nvim",
"~/.config/zsh"
}
},
settings = { auto_lcd = true }
}If you remove the entire list attribute, it will index your entire home
directory. Leaving auto_lcd in place is recommended as it changes Neovim's
working directory when you switch projects, allowing fuzzy finding to work as
if you had launched from the project's root.
I also use kitty as my terminal
emulator. This is only relevant when launching a C/C++ program in a separate
window with <leader>cR.