Skip to content

🍵 easily configurable neovim system with solid defaults and a cozy editor experience.

License

Notifications You must be signed in to change notification settings

comfysage/chaivim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chaivim

🍵 easily configurable neovim system with solid defaults and a cozy editor experience.

dash

telescope__config

✨ Features

Lazy plugin management

chaivim uses lazy.nvim to manage plugins.

integrated plugins

  • 🔭 telescope - a highly extendable fuzzy finder.
  • 🌲 treesitter - treesitter configurations and abstraction layer for neovim.
  • 📝 none-ls - abstraction layer for lsp diagnostics, code actions, and formatters.
  • 💻 keymaps - a keymap manager for neovim.
  • ✈️ lualine - a blazing fast and easy to configure neovim statusline plugin.
  • 📝 cmp - a completion plugin for neovim.
  • ✂️ luasnip with friendly-snippets - a snippet engine for neovim.
  • 🔨 mini.nvim - the "swiss army knife" among neovim plugins.
  • 🚦 gitsigns - git integration for neovim.
  • 📜 which-key - a keymap ui for neovim.
  • 📌 todo-comments - highlight, list and search todo comments in your projects.
  • 🚧 trouble - a diagnostics manager.
  • 🎈 incline - floating statuslines for neovim.
  • 📏 indent-blankline - indent guides for neovim.

🔒 requirements

  • Neovim >= 0.10.0 (needs to be built with LuaJIT)
  • git >= 2.19.0 (for partial clones support)
  • a Nerd Font (optional)
  • luarocks to install rockspecs.

📦 installation

chaivim can be installed manually or through the installer:

curl -fsSL https://github.com/comfysage/chaivim/raw/mega/utils/installer/install.sh | sh

manual install

-- init.lua
local rootpath = vim.fn.stdpath("data") .. "/ch"
local chaipath = rootpath .. "/chai"

if not vim.uv.fs_stat(chaipath) then
  vim.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/comfysage/chaivim.git",
    chaipath,
  }):wait()
end

vim.opt.rtp:prepend(chaipath)

🚀 usage

-- init.lua
require 'ch'.setup('custom.config', 'custom.modules')

-- lua/custom/config.lua
return {
    ui = {
        colorscheme = 'evergarden',
        transparent_background = false,
    },
}

-- lua/custom/modules.lua
return {
    ch = {
        {
            'options',
            opts = {
                cursorline = false,
                tab_width = 2,
                scrolloff = 5,
            },
        },
        {
            'dash',
            opts = {
                open_on_startup = true,
            },
        },
    },
    custom = {
        -- your custom modules (in `lua/custom/`)
    },
}

or call require 'ch'.setup 'custom' to load a custom configuration from lua/custom/init.lua:

-- init.lua
require 'ch'.setup 'custom'

-- lua/custom/init.lua
return {
    ui = {
        colorscheme = 'evergarden',
    },
    modules = {
        ch = {
            { 'options' },
            { 'base' },
        },
    },
}

all config fields can be overwritten after setup():

ch.config.ui.colorscheme = 'tokyonight'

⚙️ config modules

view example configurations for modules here.

📷 screenshots

nix-config