A fast, extensible Neovim configuration with a custom UI, sensible defaults, built-in LSP support, and a user layer that stays separate from the core.
- Fast startup with lazy-loaded plugins.
- Custom dashboard, statusline, bufferline, and theme system.
- LSP support powered by Neovim's native LSP client, nvim-lspconfig, and Mason.
- Completion, snippets, Treesitter highlighting, Git integration, Telescope, and Neo-tree.
- A separate
lua/custom/layer for personal configuration. - 16 bundled colorschemes with support for user-created themes.
On the author's machine, a headless startup typically takes approximately 14–20 ms. Startup time depends on hardware, operating system, and enabled custom plugins.
- Neovim 0.11.3 or newer. Neovim 0.12 is recommended.
- Git, curl, ripgrep, and a C compiler.
- A Nerd Font configured in your terminal.
- A clipboard provider:
wl-clipboardon Wayland, orxclip/xselon X11. - Optional:
lazygitandranger.
Some Treesitter parsers and native Telescope extensions require a working compiler.
Windows users can use LLVM/Clang or MinGW and must add it to PATH.
Back up your existing configuration first.
mv ~/.config/nvim ~/.config/nvim.bak
git clone --depth 1 https://github.com/sownteedev/TeVim ~/.config/nvim
nvimMove-Item $env:LOCALAPPDATA\nvim $env:LOCALAPPDATA\nvim.bak
git clone --depth 1 https://github.com/sownteedev/TeVim $env:LOCALAPPDATA\nvim
nvimTeVim installs plugins on the first launch and creates lua/custom/
automatically. Restart Neovim after the initial installation finishes.
TeVim separates maintained defaults from user configuration:
lua/
├── tevim/ # TeVim core: UI, defaults, and bundled plugins
└── custom/ # Your plugins, options, keymaps, LSP servers, and themes
Do not edit lua/tevim/ for personal changes. Files in lua/custom/ are
loaded after the core and can extend or override it without creating conflicts
when TeVim is updated.
Add a Lazy plugin specification to lua/custom/plugins.lua:
return {
{
"stevearc/conform.nvim",
event = "BufWritePre",
opts = {},
},
}You can also add another specification with the same repository name to override a bundled plugin.
Add your changes to lua/custom/options.lua:
vim.opt.relativenumber = true
vim.opt.wrap = false
vim.g.transparency = trueAdd keymaps to lua/custom/keymaps.lua:
vim.keymap.set("n", "<leader>e", "<cmd>Neotree toggle<cr>", {
desc = "Toggle file explorer",
silent = true,
})List packages managed by :TeVimCheckMason in
lua/custom/configs/overrides.lua:
local M = {}
M.mason = {
ensure_installed = {
"typescript-language-server",
"eslint-lsp",
"prettier",
},
}
return MCreate lua/custom/configs/lspconfig.lua:
local base = require("tevim.plugins.configs.lspconfig")
local servers = { "ts_ls", "eslint" }
for _, server in ipairs(servers) do
vim.lsp.config(server, {
on_attach = base.on_attach,
capabilities = base.capabilities,
})
end
vim.lsp.enable(servers)Then extend the bundled LSP plugin in lua/custom/plugins.lua:
return {
{
"neovim/nvim-lspconfig",
config = function()
require("tevim.plugins.configs.lspconfig")
require("custom.configs.lspconfig")
end,
},
}Run :TeVimCheckMason after changing the package list.
Copy one of the palette files from lua/tevim/themes/schemes/ to
lua/custom/themes/schemes/mytheme.lua, change its colors, and select it in
lua/custom/options.lua:
vim.g.TeVimTheme = "mytheme"Custom highlight overrides belong in lua/custom/themes/integrations.lua.
| Command | Description |
|---|---|
:TeVimThemes |
Open the colorscheme picker |
:TeVimToggleTrans |
Toggle background transparency |
:TeVimCheckMason |
Synchronize packages listed in custom/configs/overrides.lua |
:TeVimUpdate |
Update TeVim |
:Mason |
Open the Mason package manager |
:Lazy |
Open the Lazy plugin manager |
The leader key is Space. Use :Telescope keymaps to browse the
complete list.
| Key | Action |
|---|---|
| Ctrl+E | Toggle Neo-tree |
| Ctrl+` | Toggle the terminal |
| Ctrl+S | Save the current file |
| Ctrl+/ | Toggle comments |
| Leader f f | Find files |
| Leader f w | Search text |
| Leader l a | LSP code action |
| Leader l r | LSP rename |
| Leader l I | LSP information |
| Leader s i | Treesitter module information |
| Leader s u | Update Treesitter parsers |
| Leader Leader c | Open the theme picker |
| Leader Leader m | Synchronize Mason packages |
| Plugin | Purpose |
|---|---|
| lazy.nvim | Plugin manager and lazy-loading |
| nvim-treesitter | Parsers, queries, and syntax highlighting |
| nvim-lspconfig | LSP server configurations |
| mason.nvim | External development-tool manager |
| nvim-cmp | Completion engine |
| LuaSnip | Snippet engine |
| Telescope | Fuzzy finder and picker interface |
| Neo-tree | File explorer |
| Gitsigns | Git changes and hunk actions |
| ToggleTerm | Terminal integration |
| which-key.nvim | Keymap discovery |
- Run
:checkhealthto inspect Neovim, LSP, Treesitter, and provider health. - Run
:Lazy syncif a plugin is missing or out of date. - Run
:Masonto inspect external tools. - Run
:LspInfoafter opening a source file to inspect attached LSP clients. - When reporting an issue, include your Neovim version and relevant
:checkhealthoutput.
TeVim is an opinionated configuration intended for users who are comfortable with Lua and Neovim. If you encounter a problem, please open an issue.
Credits
- NvChad inspired parts of TeDash and TeBufline.















