Nvim
Neovim :: M Λ C R O - Editing made simple
Install / Use
/learn @Bekaboo/NvimREADME
:warning: Moved to here
Neovim :: M Λ C R O
Neovim :: M Λ C R O is a collection of Neovim configuration files inspired by Emacs / N Λ N O.
The goal of macro-neovim is to provide a clean and elegant user interface while remaining practical for daily tasks, striking a balance between a streamlined design and effective functionality. See showcases to get a glimpse of the basic usage and what this configuration looks like.
This is a highly personalized and opinionated Neovim configuration, not a distribution. While it's not meant for direct use, you're welcome to fork, experiment, and adapt it to your liking. Feel free to use it as a starting point for your configuration or borrow elements you find useful. Issues and PRs are welcome.
Currently only supports Linux (X11/Wayland/TTY).
<center> <img src="https://github.com/Bekaboo/nvim/assets/76579810/299137e7-9438-489b-b98b-7211a62678ae" width=46%> <img src="https://github.com/Bekaboo/nvim/assets/76579810/9e546e33-7678-47e2-8a80-368d7c59534a" width=46%> </center>Table of Contents
<!--toc:start-->- Features
- Requirements and Dependencies
- Installation
- Troubleshooting
- Uninstallation
- Config Structure
- Tweaking this Configuration
- Appendix
Features
- Modular design
- Install and manage packages in groups
- Make it easy to use different set of configuration for different use cases
- Clean and uncluttered UI, including customized versions of:
- VSCode-Neovim integration, makes you feel at home in VSCode when you occasionally need it
- Massive TeX math snippets
- Jupyter Notebook integration: edit notebooks like markdown files, run code in cells with simple commands and shortcuts
- Fine-tuned plugins with custom patches
- Optimization for large files, open any file larger than 100 MB and edit like butter
- Fast startup around ~25 ms
Requirements and Dependencies
Basic
- Neovim 0.10, for exact version see nvim-version.txt
- Git
- GCC or Clang for building treesitter parsers and some libs
- Fd, Ripgrep, and Fzf for fuzzy search
- Pandoc, custom scripts and TexLive (for ArchLinux users, it is
texlive-coreandtexlive-extra) for markdown → PDF conversion (:MarkdownToPDF) - Node.js for installing dependencies for markdown-preview.nvim
- Pynvim, Jupyter Client, and IPython Kernel for Python support
- Jupytext for editing Jupyter notebooks
- A decent terminal emulator
- A nerd font, e.g. JetbrainsMono Nerd Font.
This is optional as nerd icons are disabled by default, to enable it, set the
environment variable
$NVIM_NF, see environment variables
Tree-sitter
Tree-sitter installation and configuration are handled by nvim-treesitter.
Requires a C compiler, e.g. GCC or Clang, for building parsers.
To add or remove support for a language, install or uninstall the corresponding
parser using :TSInstall or :TSUninstall.
To make the change permanent, add or remove corresponding parsers in the
ensure_installed field in the call to nvim-treesitter's setup() function,
see lua/configs/nvim-treesitter.lua.
LSP
For LSP support, install the following language servers manually using your favorite package manager:
-
Bash: BashLS
Example for ArchLinux users:
sudo pacman -S bash-language-server -
C/C++: Clang
-
Lua: LuaLS
-
Python: one of
-
Rust: Rust Analyzer
-
LaTeX: TexLab
-
VimL: VimLS
-
Markdown: Marksman
-
Go: Gopls
-
Typescript: Typescript Language Server and Biome
-
General-purpose language server: EFM Language Server
- Already configured for
- Black (formatter)
- Shfmt (formatter)
- Fish-indent (formatter)
- StyLua (formatter)
- Gofmt (formatter)
- Golangcli-lint (linter)
- Prettier (formatter)
- Eslint (linter)
- ...
- Already configured for
To add support for other languages, install corresponding language servers
manually then add lsp.lua files under after/ftplugin to automatically launch
them for different filetypes.
Some examples of lsp.lua files:
- after/ftplugin/lua/lsp.lua
- after/ftplugin/python/lsp.lua
- after/ftplugin/rust/lsp.lua
- after/ftplugin/sh/lsp.lua
- after/ftplugin/go/lsp.lua
- after/ftplugin/typescript/lsp.lua
DAP
Install the following debug adapters manually:
-
Bash:
Go to vscode-bash-debug release page, download the latest release (
bash-debug-x.x.x.vsix), extract (change the extension from.vsixto.zipthen unzip it) the contents to a new directoryvscode-bash-debug/and put it under stdpathdata(see:h stdpath).Make sure
nodeis executable. -
C/C++: install CodeLLDB.
Example for ArchLinux users:
yay -S codelldb # Install from AUR -
Python: install DebugPy
Example for ArchLinux users:
sudo pacman -S python-debugpyor
pip install --local debugpy # Install to user's home directory -
Go: install Delve
For more information on DAP installation, see Debug Adapter Installation.
Formatter
Security Score
Audited on Dec 16, 2025
