Theovim is my personal Neovim configuration, featuring a complete Telescope, Treesitter, and LSP setup, ~30 carefully selected plugins, and custom UI components in Lua.
Theovim:
- prioritizes built-in Neovim features and Lua over plugins to avoid duplicate keybindings and features
- keeps the stock configuration as much as possible when using external plugins -- the plugin author knows more about the plugin than I do
- follows the Open-closed Principle when organizing Lua configuration modules
For more information, read the Highlights section and the built-in help documentation using :help theovim
.
- A terminal emulator with true color support. A few recommendations:
- Wezterm (my personal choice)
- Kitty
- Alacritty
- iTerm 2 for MacOS
- Alternatively, you can use a GUI Neovim client like Neovide
- Preferably the latest Neovim
- NerdFonts to render glyphs
make
and some C compiler to compiletelescope-fzf-native.nvim
npm
,g++
(gcc-c++
), andunzip
for some LSP serversgit
to update Theovim
Note
I highly recommend you to fork this repository and tweak settings on your own.
# Optional backup
[[ -e ~/.config/nvim ]] && mv ~/.config/nvim ~/.config/nvim.bak
# Install Theovim files in ~/.config/nvim
git clone --depth 1 https://github.com/theopn/theovim.git ~/.config/nvim
:help theovim-tldr
: Summary of the Theovim help documentation
Theovim creates a solid base Neovim experience by maximizing built-in features.
The init.lua
file initializes sensible default options, autocmds, and keybindings without external plugins or modules.
- Automatically adjust indentation settings using ftplugin
- Spell check in relevant buffers
- Fold using Tree-sitter
- Smarter window navigation
For more information:
:help theovim-init-options
:help theovim-init-keymaps
:help theovim-init-commands
:help theovim-init-autocmds
:help theovim-init-netrw
Theovim provides ~30 carefully selected plugins managed by lazy.nvim. Here are some of the plugins that will make your life easier.
- oil.nvim is a file manager that lets you manage files like a Vim buffer
- nvim-autopairs automatically insert matching parentheses, quotes, etc.
- which-key.nvim displays a popup with all possible keybindings
- nvim-colorizer.lua highlight color codes (hex codes, ANSI color name such as "Magenta", CSS functions, etc.)
- todo-comments.nvim highlights keywords such as
TODO
,WARN
, etc. - gitsigns.nvim provides Git signs in the gutter (+, -, ~, etc.) as well as other useful Git functionalities, such as diff, navigating hunks, and blame tool
- Tokyo Night is a beautiful default theme for Theovim
- Markdown Preview offers a real-time previewer for markdown files in your browser
- VimTeX is a LaTeX integration for Vim, providing syntax highlights and real-time compilation.
For more information:
:help theovim-plugins
Telescope.nvim is a fuzzy finder for Neovim. It allows you to jump between files, buffers, and anything you could think of in a matter of a few keystrokes.
My Telescope configuration is heavily inspired by Kickstart.nvim, a configuration template written by TJ DeVries who is the author of Telescope.nvim and the core maintainer of Neovim.
A few of my favorite Telescope features:
:Telescope buffers
(<leader><leader>
): lists all open buffers:Telescope oldfile
(<leader>s.
): finds recently opened files:Telescope
(<leader>ss
): searches Telescope functions using Telescope:Telescope find_files
(<leader>sf
): searches files in the current and children directories:Telescope live_grep
(<leader>sg
): searches for a word in the all the files in the current and children directories:Telescope git_commits
(<leader>gc
): searches for Git commits
For more information:
:help theovim-telescope
Treesitter (TS) is an incremental parser generator for more accurate syntax highlighting compared to the default regex-based highlighting. TS also integrates with Vim's folding and selection mechanism to provide a more efficient navigation and editing experience.
For more information:
:help theovim-treesitter
Neovim's built-in LSP offers modern IDE features for any language you want (assuming one of the 350+ Neovim LSP servers supports the language you use) with flexible customizability and low resource usage. Like Telescope, my LSP configuration is heavily inspired by TJ's Kickstart.nvim.
There are three main parts of LSP:
- Diagnostics: error diagnostics and fix suggestions
- LSP: hover documentation, formatting, refactoring, and much more
- Completion: auto-completion for keywords, variables, templates (snippets), buffer words, and paths
For more information:
:help theovim-diagnostic
:help theovim-lsp
:help theovim-completion
Theovim features unique UI components written in Lua.
- Tabline: A simple and unique Tabline with buffer information to keep track of open buffers without sacrificing Vim's built-in tab system
- Statusline: A simple and informative Statusline inspired by Mini.nvim (https://github.com/echasnovski/mini.nvim), featuring Git and LSP information
- Dashboard: Startup dashboard with a random ASCII art that resemble my chunky cat Oliver
For more information:
:help theovim-ui
- Core:
- Neovim source code repository or
$VIMRUNTIME/ftplugin/
: Ftplugin examples - A Reddit comment on "Share your favorite .vimrc lines...":
SmarterWinMove
function - How I'm able to take notes in mathematics lectures using LaTeX and Vim: keybinding to fix the nearest spelling mistake
- Neovim source code repository or
- Telescope, Treesitter, and LSP:
- Kickstart.nvim: Telescope, Treesitter, and LSP config
- nvim-cmp Wiki: Completion icon config
- nvim-lspconfig Wiki: Hover doc customization
- UI:
- NvChad UI plugin and Kodo: Startup dashboard
- nvim-tabline:
setup()
function for Tabline - Custom Neovim Statusline by nuxsh: Overall custom Statusline structure
- Mini.statusline: Statusline mode and Git functions
- Tools:
- Stuff.nvim: Notepad
- Documentation:
- Built-in insert mode help documentation (
:h insert.txt
): Theovim help formatting - Tokyo Night Wallpapers: Wallpaper in the screenshot
- Built-in insert mode help documentation (