NVIM Configuration Enhancements

- VIM: Keybindings for better coding
- Gitignore in common is now a hardlinked to the root one
- NVIM: Bash Alias added for Nvim
- VIM: settings added from VIM-sensible and Primeagen
- NVIM: Moved autocommands, keybindings & configurations specific to NVIM to lua/config
- Wezterm, tmux configured.
- Generic: Configurations moved inside $HOME/.config/ directory
- Generic: All aliases renamed to similar names.
- Generic: Relevant aliases added for reaching git root
This commit is contained in:
Pratik Tripathy
2023-12-28 14:38:03 +05:30
parent 14bca30695
commit 0402ee5481
35 changed files with 679 additions and 297 deletions

View File

@@ -1,8 +1,10 @@
-- TODO: Todo-Comments: Highlight TODOs
-- TODO: Neo-Tree: reduce size, hidden visible by default, set vcs root at pwd+cwd
-- TODO: Telescope: open in a new window -> vertial & horizontal
-- TODO: LSPConfig: Standardize keymaps to <leader>d[x]
-- TODO: Note what exactly Treesitter does???
-- TODO: Git: Add a plugin
-- TODO: System install and setup lazygit
-- TODO: Setup auto complete
-- TODO: Provide description to each keymap
-- TODO: tpope/vim-obsession configure to work with tmux-resurrection
-- TODO: Check why Nvim can't find todos
-- TODO: Put all plugin configs inside /after/plugin directory
-- Loads the system's Vim configs: keeps the VIM & NVim configs in sync
local vimrc = vim.fn.stdpath("config") .. "/vim-sync.vim"
@@ -23,9 +25,15 @@ if not vim.loop.fs_stat(lazypath) then
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup("plugins", {
change_detection = {
enabled = true,
notify = false
}
},
})
require("configs.autocommands")
require("configs.configs")
require("configs.keymaps")

View File

@@ -0,0 +1,10 @@
-- [[ Highlight on yank ]]
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = '*',
})

View File

@@ -0,0 +1,2 @@
-- Nvim Specific Configs that don't apply to VIM

View File

@@ -0,0 +1,9 @@
-- <Ctrl-Alt-s> -> to save all files
vim.keymap.set({ "n", "i", "v" }, "<C-M-s>", "<cmd>wa<CR>", {})
-- <Ctrl-q> -> Save all files and quit Nvim
vim.keymap.set({ "n", "i", "v" }, "<C-q>", "<cmd>wqa<CR>", {})
-- Remap for dealing with word wrap
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })

View File

@@ -1,15 +1,14 @@
-- Keeps the plugin list that Lazy uses at one place
return {
-- From VIM
{ "tpope/vim-sensible" },
{ "tpope/vim-fugitive" },
{ "tpope/vim-surround" },
{ "tpope/vim-repeat" },
{ "tpope/vim-commentary" },
{ "tpope/vim-sensible" },
{ "rstacruz/vim-closer" },
{ "machakann/vim-highlightedyank" },
{ "airblade/vim-gitgutter" },
{ "easymotion/vim-easymotion" },
{ "preservim/nerdtree" },
-- { 'itchyny/lightline.vim' },
{ "tpope/vim-obsession" },
{ "mg979/vim-visual-multi" },
}

View File

@@ -0,0 +1,17 @@
return {
-- TODO: Throws git pull issue when downloading through Lazy
-- "askinsho/bufferline.nvim",
-- dependencies = "nvim-tree/nvim-web-devicons",
-- config = function()
-- require("bufferline").setup({
-- options = {
-- indicator = { style = "underline" },
-- }
-- })
-- vim.keymap.set('n', '<tab>', ":BufferLineCycleNext<CR>")
-- vim.keymap.set('n', '<S-tab>', ":BufferLineCyclePrev<CR>")
-- vim.keymap.set('n', '<leader>bo', ":BufferLineCloseOthers<CR>")
-- vim.keymap.set('n', '<leader>bp', ":BufferLinePick<CR>")
-- end
}

View File

@@ -0,0 +1,40 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local tree_config = require("nvim-treesitter.configs")
tree_config.setup({
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = "<C-CR>",
node_decremental = "<bs>",
}
}
})
end
},
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
config = function()
require("ibl").setup({})
end
},
-- { "windwp/nvim-autopairs" },
-- {
-- "akinsho/toggleterm.nvim",
-- version = "*",
-- config = function ()
-- require("toggleterm").setup({})
-- end
-- },
}

View File

@@ -0,0 +1,116 @@
return {
-- TODO: Configure following plugins in separate files
-- LSP Configuration
{
-- Provides :Mason command which installs Language Servers
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end
},
{
-- Helps to auto install Language Servers by specifying them
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls", "bashls", "cssls", "dockerls", "emmet_ls", "jsonls", "tsserver", "marksman",
"pyre", "rust_analyzer", "sqlls", "taplo"
}
})
end
},
{
"neovim/nvim-lspconfig",
config = function()
-- Hook up NVIM with the above installed Language Servers
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup({})
lspconfig.bashls.setup({})
lspconfig.cssls.setup({})
lspconfig.dockerls.setup({})
lspconfig.emmet_ls.setup({})
lspconfig.jsonls.setup({})
lspconfig.tsserver.setup({})
lspconfig.marksman.setup({})
lspconfig.pyre.setup({})
lspconfig.rust_analyzer.setup({})
lspconfig.sqlls.setup({})
lspconfig.taplo.setup({})
-- LSP Keybindings
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, {})
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, {})
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
vim.keymap.set('n', 'K', vim.lsp.buf.hover, {})
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {})
-- vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, {})
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, {})
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, {})
vim.keymap.set('n', '<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, {})
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, {})
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, {})
vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
vim.keymap.set('n', '<leader>f', function()
vim.lsp.buf.format { async = true }
end, {})
end
},
-- None-ls
{
"nvimtools/none-ls.nvim",
config = function()
local null_ls = require("null-ls")
null_ls.setup({
sources = {
-- TODO: Segement these by language & Install required ones through :Mason
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.beautysh,
-- null_ls.builtins.formatting.csharpier,
-- null_ls.builtins.formatting.jq,
-- null_ls.builtins.formatting.markdownlint_toc,
-- null_ls.builtins.formatting.nginx_beautifier,
-- null_ls.builtins.formatting.pg_format,
-- null_ls.builtins.formatting.prettierd,
-- null_ls.builtins.formatting.protolint,
-- null_ls.builtins.formatting.rustfmt,
-- null_ls.builtins.formatting.shellharden,
-- null_ls.builtins.formatting.shfmt,
-- null_ls.builtins.diagnostics.alex,
-- null_ls.builtins.diagnostics.codespell,
-- null_ls.builtins.diagnostics.eslint_d,
-- null_ls.builtins.diagnostics.jsonlint,
-- null_ls.builtins.diagnostics.luacheck,
-- null_ls.builtins.diagnostics.protolint,
-- null_ls.builtins.diagnostics.shellcheck,
-- null_ls.builtins.diagnostics.stylelint,
-- null_ls.builtins.diagnostics.tidy,
-- null_ls.builtins.diagnostics.tsc,
-- null_ls.builtins.diagnostics.vlint,
-- null_ls.builtins.diagnostics.yamllint,
-- null_ls.builtins.code_actions.gitsigns,
-- null_ls.builtins.code_actions.eslint_d,
-- null_ls.builtins.code_actions.refactoring,
-- null_ls.builtins.code_actions.shellcheck,
-- null_ls.builtins.completion.spell,
-- null_ls.builtins.completion.tags,
-- null_ls.builtins.completion.luasnip,
}
})
vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {})
end
},
}

View File

@@ -1,73 +0,0 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
local tree_config = require("nvim-treesitter.configs")
tree_config.setup({
ensure_installed = { "lua", "vim", "vimdoc", "bash", "c_sharp", "css", "dockerfile", "git_config", "gitignore", "html", "http", "ini", "json", "proto", "python", "rust", "sql", "toml", "tsx", "typescript" , "javascript" },
highlight = { enable = true },
indent = { enable = true },
})
end
},
-- LSP Configuration
{
-- Provides :Mason command which installs Language Servers
"williamboman/mason.nvim",
config = function()
require("mason").setup()
end
},
{
-- Helps to auto install Language Servers by specifying them
"williamboman/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = { "lua_ls", "bashls", "cssls", "dockerls", "emmet_ls", "jsonls", "tsserver", "marksman", "pyre", "rust_analyzer", "sqlls", "taplo" }
})
end
},
{
"neovim/nvim-lspconfig",
config = function()
-- Hook up NVIM with the above installed Language Servers
local lspconfig = require("lspconfig")
lspconfig.lua_ls.setup({})
lspconfig.bashls.setup({})
lspconfig.cssls.setup({})
lspconfig.dockerls.setup({})
lspconfig.emmet_ls.setup({})
lspconfig.jsonls.setup({})
lspconfig.tsserver.setup({})
lspconfig.marksman.setup({})
lspconfig.pyre.setup({})
lspconfig.rust_analyzer.setup({})
lspconfig.sqlls.setup({})
lspconfig.taplo.setup({})
-- LSP Keybindings
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, {})
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, {})
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {})
vim.keymap.set('n', 'K', vim.lsp.buf.hover, {})
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {})
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, {})
vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, {})
vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, {})
vim.keymap.set('n', '<leader>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, {})
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, {})
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, {})
vim.keymap.set('n', 'gr', vim.lsp.buf.references, {})
vim.keymap.set('n', '<leader>f', function()
vim.lsp.buf.format { async = true }
end, {})
end
}
}

View File

@@ -12,19 +12,16 @@ return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
-- config = function()
-- show_end_of_buffer = true,
-- integrations = {
-- cmp = true,
-- gitsigns = true,
-- nvimtree = true,
-- },
-- vim.cmd.colorscheme "catppuccin-macchiato",
-- end
},
{
"rose-pine/neovim",
name = "rose-pine",
priority = 1000,
config = function()
require("catppuccin").setup({
show_end_of_buffer = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
},
})
-- vim.cmd.colorscheme "catppuccin-mocha"
end
},
}

View File

@@ -1,9 +1,20 @@
return {
"nvim-lualine/lualine.nvim",
config = function()
local lazy_status = require("lazy.status")
require("lualine").setup({
options = {
theme = "powerline_dark"
-- theme = "horizon",
-- TODO: Following ain't taking effect. Why?
sections = {
lualine_a = {'mode','filename'},
lualine_b = {'branch'},
lualine_c = {'diff', 'diagnostics'},
lualine_x = { { lazy_status.updates, cond = lazy_status.has_updates } },
lualine_y = {'progress'},
lualine_z = {'location', 'searchcount'}
},
}
})
end

View File

@@ -1,13 +1,50 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
{
"airblade/vim-rooter",
config = function()
vim.g.rooter_cd_cmd = "tcd"
end
},
config = function()
-- Keymaps for Neotree
vim.keymap.set("n", "<Leader>n", ":lcd %:h <BAR>:Neotree filesystem reveal left<CR>")
end
{
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
config = function()
require("neo-tree").setup({
filesystem = {
follow_current_file = {
enabled = true, -- Highlight the current buffer
leave_dirs_open = true,
},
use_libuv_file_watcher = true, -- Sync file system changes
filtered_items = {
visible = true,
show_hidden_count = true,
hide_dotfile = false,
hide_gitignore = false
},
},
window = {
position = "left",
width = 25, -- Saner window size
mappings = {
["s"] = "open_split", -- Default vim keymap for horizontal split
["v"] = "open_vsplit" -- Default vim keymap for vertical split
}
},
default_component_configs = {
indent = {
indent_size = 1, -- Compact tree display
padding = 0 -- Compact tree display
}
}
})
-- Keymaps for Neotree
vim.keymap.set("n", "<Leader>e", ":Neotree filesystem toggle<CR>")
end
}
}

View File

@@ -1,16 +1,51 @@
return {
{
'nvim-telescope/telescope.nvim', tag = '0.1.5',
dependencies = { 'nvim-lua/plenary.nvim' },
"nvim-telescope/telescope.nvim", tag = "0.1.5",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"neovim/nvim-lspconfig",
"nvim-tree/nvim-web-devicons"
},
config = function()
local actions = require("telescope.actions")
require("telescope").setup({
pickers = {
find_files = {
mappings = {
i = {
-- Ctrl + s to open in horizontal split
["<C-s>"] = actions.select_horizontal
}
}
}
}
})
require("telescope").load_extension("fzf")
-- Keymaps for Telescope
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<Leader>ff", builtin.find_files, {})
vim.keymap.set("n", "<Leader>fg", builtin.live_grep, {})
vim.keymap.set("n", "<Leader>fb", builtin.buffers, {})
vim.keymap.set("n", "<leader>ff", "<cmd>lua require'telescope.builtin'.find_files({ find_command = {'rg', '--files', '--hidden', '-g', '!{**/.git/*,**/node_modules/*,**/package-lock.json,**/yarn.lock}' }})<cr>", {})
-- TODO: Live grep ain't working
-- vim.keymap.set("n", "<Leader>fl", builtin.live_grep, {})
vim.keymap.set("n", "<Leader>fm", builtin.marks, {})
vim.keymap.set("n", "<Leader>fc", builtin.colorscheme, {})
vim.keymap.set("n", "<Leader>fr", builtin.registers, {})
vim.keymap.set("n", "<Leader>fs", builtin.lsp_document_symbols, {})
vim.keymap.set("n", "<Leader>fw", builtin.grep_string, {})
vim.keymap.set("n", "<Leader>fg", "<cmd>AdvancedGitSearch<CR>", {})
vim.keymap.set("n", "<Leader>ft", builtin.treesitter, {})
-- TODO: Find TODO ain't working either
vim.keymap.set("n", "<Leader>fd", ":TodoTelescope<CR>", {})
end
},
{
"nvim-telescope/telescope-fzf-native.nvim",
build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build'
},
{
-- For displaying LSP Code Actions
"nvim-telescope/telescope-ui-select.nvim",
config = function()
require("telescope").setup({
@@ -23,5 +58,11 @@ return {
})
require("telescope").load_extension("ui-select")
end
},
{
"aaronhallaert/advanced-git-search.nvim",
config = function()
require("telescope").load_extension("advanced_git_search")
end
}
}

View File

@@ -2,19 +2,15 @@ return {
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("todo-comments").setup({})
vim.keymap.set("n", "]t", function()
require("todo-comments").jump_next(
{ keywords = { "ERROR", "WARNING", "TODO" }}
)
end,
{ desc = "Next todo comment"}
require("todo-comments").jump_next()
end, { desc = "Next todo comment" }
)
vim.keymap.set("n", "[t", function()
require("todo-comments").jump_prev(
{ keywords = { "ERROR", "WARNING", "TODO" }}
)
end,
{ desc = "Previous todo comment"}
require("todo-comments").jump_prev()
end, { desc = "Previous todo comment" }
)
end
}

View File

@@ -0,0 +1,6 @@
return{
"mbbill/undotree",
config = function()
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
end
}

View File

@@ -0,0 +1,7 @@
return {
"christoomey/vim-tmux-navigator",
lazy = false,
config = function()
end
}

View File

@@ -0,0 +1,123 @@
# Keybinding Summary
#========================================================
# Rename Session -> <alt-a> $
# Rename Tab -> <alt-a> ,
# Next/prev tab -> <alt-a> n/p
# H-split/V-split -> <alt-a> s/v
# Resize Pane -> <alt-a> leave alt -> h,j,k,l (repeat press)
# Switch Pane -> <ctrl-h,j,k,l>
# Enter copy mode -> <alt-a>[
# Exit copy mode -> <enter>
# Reload tmux.conf -> <alt-a> r
# More at: https://tmuxcheatsheet.com
# TODO: Figure out how to save multiple sessions and resurrect them later
#========================================================
# KEY BINDINGS
#========================================================
# Change Tmux leader key to -> <alt-a>
unbind C-b
set -g prefix M-a
bind-key M-a send-prefix
# Kill current session with q
bind q confirm-before kill-session
# Intuitive split bindings to | & -
unbind %
bind s split-window -h
unbind '"'
bind v split-window -v
# Open panes in the current directory
bind - split-window -v -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
# Use <leader> repeated(h,j,k,l)s to resize current pane
bind -r h resize-pane -L
bind -r l resize-pane -R
bind -r k resize-pane -U
bind -r j resize-pane -D
# Use Vim Navigations to copy text from the NON-vim panes
# Enable Tmux copy mode with <leader>[ -> Then use Vim navigations
bind-key -T copy-mode-vi "v" send -X begin-selection
bind-key -T copy-mode-vi "y" send -X copy-selection
unbind -T copy-mode-vi MouseDragEnd1Pane # Enable mouse selection as well
# From Tmux-sensible Plugin
bind C-p previous-window
bind C-n next-window
bind C-a send-prefix
bind a last-window
bind r source-file ~/.config/tmux/tmux.conf \; display-message "Tmux config reloaded."
# Change resurrect keys to <alt-s>(Save) & <alt-r>(Resurrect)
set -g @resurrect-save "M-s"
set -g @resurrect-restore "M-r"
#========================================================
# OPTIONS
#========================================================
set -g set-clipboard on # Use system clipboard
setw -g mode-keys vi
set-window-option -g mode-keys vi
# From tmux-sensible plugin
set -g display-time 1000 # Display message for 1s
set -g history-limit 50000 # Increase scrollback buffer
set -g mouse on # Mouse mode
set -s escape-time 0 # Address Vim switching delay
set -g status-interval 5 # Refresh status every 5s (default 15s)
set -g focus-events on # Enable focus event
setw -g aggressive-resize on # For grouped sessions
# Resurrection Options
set -g @resurrect-capture-pane-contents "on"
set -g @resurrect-strategy-nvim "session"
set -g @resurrect-dir "$HOME/.config/tmux/resurrect"
#========================================================
# APPEARANCE
#========================================================
# Start window numbers at 1 to match keyboard order with tmux window order
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on
set-window-option -g pane-base-index 1
# Improve colors
set -g default-terminal "xterm-256color"
set-option -sa terminal-overrides ",xterm*:Tc"
# Status at top
set -g status-position top
#========================================================
# PLUGINS
#========================================================
run "~/.config/tmux/plugins/tpm/tpm" # Init Tmux Plugin Manager
# TODO: Get into Tmux copy stuff when required
# set -g @plugin 'tmux-plugins/tmux-yank'
# set -g @plugin "tmux-plugins/tmux-copycat"
set -g @plugin "christoomey/vim-tmux-navigator" # sync pane nav with Vim window nav
set -g @plugin "tmux-plugins/tmux-resurrect" # Persist sessions
set -g @plugin "tmux-plugins/tmux-continuum" # Auto save sessions every 15mins
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin "tmux-plugins/tmux-copycat"
set -g @plugin "fabioluciano/tmux-tokyo-night"
#========================================================
# PLUGINS Configurations
#========================================================
# Color schemes
set -g @theme_variation "night"
set -g @theme_disable_plugins 1
set -g status-right ""
set -g @plugin "tmux-plugins/tpm"

View File

@@ -0,0 +1,61 @@
local wezterm = require("wezterm")
return {
color_scheme = "Catppuccin Mocha",
font_size = 14.0,
font = wezterm.font_with_fallback({
-- "JetBrains Mono",
"JetBrainsMono Nerd Font",
{ family = "Symbols Nerd Font Mono", scale = 0.75 }
}),
window_decorations = "RESIZE",
enable_tab_bar = true,
use_fancy_tab_bar = true,
hide_tab_bar_if_only_one_tab = true,
-- window_background_opacity = 0.99,
win32_system_backdrop = "Mica",
macos_window_background_blur = 80,
window_padding = {
left = 0,
right = 0,
top = 0,
bottom = 0,
},
keys = {
{
key = "f",
mods = "ALT",
action = wezterm.action.ToggleFullScreen,
},
},
mouse_bindings = {
{
event = { Up = { streak = 1, button = "Left" } },
mods = "CTRL",
action = wezterm.action.OpenLinkAtMouseCursor,
}
},
force_reverse_video_cursor = true,
colors = {
foreground = "#dcd7ba",
background = "#1f1f28",
cursor_bg = "#c8c093",
cursor_fg = "#c8c093",
cursor_border = "#c8c093",
selection_fg = "#c8c093",
selection_bg = "#2d4f67",
scrollbar_thumb = "#16161d",
split = "#16161d",
ansi = { "#090618", "#c34043", "#76946a", "#c0a36e", "#7e9cd8", "#957fb8", "#6a9589", "#c8c093" },
brights = { "#727169", "#e82424", "#98bb6c", "#e6c384", "#7fb4ca", "#938aa9", "#7aa89f", "#dcd7ba" },
indexed = { [16] = "#ffa066", [17] = "#ff5d62" },
},
}