Doom Nvim consists of around 5 modules with ~40 plugins and growing. A Doom Nvim module is a bundle of plugins, configurations and commands, organized into a unit that can be toggled easily.
NOTE: Doom Nvim uses packer.nvim as its plugins manager.
You can easily tweak Doom Nvim Modules by tweaking your doomrc.lua
file
(found in ~/.config/doom-nvim
).
First of all, we must know which modules are there and their plugins.
NOTE: all plugins can be disabled, including the UI ones.
This ones are implicit plugins so the end user cannot disable them. But why?
That is because these plugins are the core of Doom so in fact, things can break without them. These plugins are the following:
- packer.nvim
- A use-package inspired plugin manager for Neovim.
- treesitter
- An incremental parsing system for programming tools.
- dashboard
- Vim dashboard (start screen).
- doom-themes
- Additional doom emacs' colorschemes.
- statusline
- Neovim statusline.
- tabline
- Tabline, shows your buffers list at top.
- zen
- Distraction free environment.
- which-key
- Keybindings popup like Emacs' guide-key.
- indentlines
- Show indent lines.
- neorg
- Life Organization Tool.
- runner (built-in)
- A code runner for your interpreted code.
- compiler (built-in)
- Compile and run your projects with only a few keystrokes.
- auto-session
- A small automated session manager for Neovim.
- terminal
- Terminal for Neovim.
- explorer
- Tree explorer.
- symbols
- LSP symbols and tags.
- minimap
- Code minimap, requires wfxr/code-minimap.
- gitsigns
- Git signs.
- telescope
- Highly extendable fuzzy finder over lists.
- restclient
- A fast Neovim http client.
- formatter
- File formatting.
- autopairs
- Autopairs.
- editorconfig
- EditorConfig support for Neovim, let other argue about tabs vs spaces.
- kommentary
- Comments plugin.
- lsp
- Language Server Protocols (compe + lspinstall).
- snippets
- Code snippets (LuaSnip + friendly-snippets).
The languages module entries has some flags that improves their experience and makes your life easier.
The currently available flags are the following:
+lsp
- enables and installs the Language Server Protocol for the language. e.g.rust +lsp
will automatically installrust-analyzer
.+debug
- enables and installs the Debug Adapter Protocol client for the language. e.g.python +debug
will automatically installdebugpy
.
NOTE: when the language entry is not commented, doom-nvim will automatically install the TreeSitter parser for that language too.
- html
- HTML support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- css
- CSS support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- javascript
- JavaScript support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes, by using TSServer.
- DAP client: yes.
- typescript
- TypeScript support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- bash
- BASH support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- python
- Python support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: yes.
- ruby
- Ruby support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: yes.
- lua
- Lua support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no (it has but isn't supported by Doom yet, requires extra setup).
- elixir
- Elixir support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- haskell
- Haskell support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- rust
- Rust support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: yes (not supported yet by Doom for automatic installation).
- go
- Golang support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: yes.
- cpp
- CPP support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: yes (not supported yet by Doom for automatic installation).
- java
- Java support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
- DAP client: no.
- config
- Configuration languages support (JSON, YAML, TOML).
- TreeSitter based syntax highlighting: yes.
- LSP: not yet.
- dockerfile
- Docker support.
- TreeSitter based syntax highlighting: yes.
- LSP: yes.
NOTE: this group requires the
lsp
installed for the+lsp
flags.
- suda
- Write and read files without sudo permissions.
- lazygit
- LazyGit integration for neovim, requires LazyGit.
- neogit
- Magit for Neovim.
- colorizer
- Fastest colorizer for Neovim.
- range-highlight
- Highlights ranges you have entered in commandline
Since version 3.0.0 managing the modules plugins is really easy because you don't need to learn nothing anymore. Just comment the plugins that you don't want to use and uncomment the ones that you are going to use!
So by example, if you want to disable the tree explorer you can simply comment it.
-- Before, the plugin is enabled
'explorer', -- Tree explorer
-- After, the plugin is disabled
-- 'explorer', -- Tree explorer
After doing the changes, just restart Neovim and Doom Nvim will handle the plugins changes for you!