Light and productive.
A very thin config layer for neovim.
Provide minimal defaults that enhance the native neovim experience significantly without too much bloat.
Intentionally try to avoid what could be noisy and distracting features.
For example:
- Enable LSP diagnostics but only notify errors/warnings in the signcolumn and disable noisy red underline and virtual text.
- Possible to manually
:Gblame
in buffer, but don't enable gitsigns blame info virtual text.
- Find, filter, preview files with telescope.nvim
- Syntax highlighting of any language with nvim-treesitter
- Autocompletions with nvim-cmp
- LSP integration with mason.nvim and nvim-lspconfig
- File explorer with nvim-tree.lua
- Git integration with vim-fugitive and vim-gitgutter
- GitHub integration with vim-rhubarb
- Easily comment code with vim-commentary
- Easily navigate quickfix with vim-unimpaired
- Dev icons with nvim-web-devicons (needs a patched font installed)
- Neovim 0.10+
- tree-sitter-cli
More details on https://github.com/nvim-telescope/telescope.nvim?tab=readme-ov-file#suggested-dependencies
A font that has been patched/extended with icons.
Great video intro to Nerd Fonts by chris@machine
.
# 0. Backup step in case any existing nvim config
$ mv ~/.config/nvim ~/.config/nvim-backup
# 1. Clone nosvim config files into your system nvim config root
$ git clone https://github.com/mimiquate/nosvim ~/.config/nvim
# 2. Open neovim and wait for lazy.nvim plugin manager to install plugins
$ nvim
You can, at any time, manually type :Lazy to open lazy.nvim dashboard on demand if necessary.
$ cd ~/.config/nvim
$ git pull
We don't overwrite <Leader>. Defaults to the backslash (\
) character.
On top of all the nvim default mappings we define the follwing:
Mode(s) | Keymap | Description | Notes |
---|---|---|---|
normal | <C-n> |
Open or close the file tree | :NvimTreeToggle |
normal | <C-p> |
Search for files (respecting .gitignore) | :Telescope find_files |
normal | <C-b> |
Lists open buffers in current neovim instance | :Telescope buffers |
normal | <C-g> |
Search for a string and get results live as you type (respects .gitignore) | :Telescope live_grep |
normal | gd |
Go to the definition of the symbol under the cursor | :vim.lsp.buf.definition |
normal visual |
<Space>f |
Formats a buffer (or visual selection) using the attached language server clients | :vim.lsp.buf.format({ async = true }) |
normal | <Space>e |
Show diagnostics in a floating window | :vim.diagnostic.open_float |
normal visual |
<C-Up> |
Move line(s) up | |
normal visual |
<C-Down> |
Move line(s) down | |
normal visual |
<Leader>c<Space> |
Comment or uncomment lines | gcc gc |
insert | <C-n> |
Invoke completion | :cmp.complete |
Using nvim-treesitter commands:
# inside nvim
:TSInstall <language_to_install>
More details: https://github.com/nvim-treesitter/nvim-treesitter?tab=readme-ov-file#language-parsers.
Using mason-nvim commands:
# inside nvim
:MasonInstall <language_to_install>
or
# inside nvim
:Mason
to open the interactive mason window.
More details: https://github.com/williamboman/mason.nvim?tab=readme-ov-file#commands.
# inside nvim
:checkhealth()
Extra customizations and/or overrides can be placed under ~/.nvim.lua
, which will be loaded
automatically if present.
To add a new plugin, you need to add a new file under ~/.config/nvim/lua/plugins/
according to
lazy.nvim plugins spec specification.
See other existing files under that directory for examples on how to configure.
Copyright 2024 Mimiquate
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.