Last active
March 24, 2025 17:05
-
-
Save chase-lambert/36feeaf0a43721a40932f390d627d4b9 to your computer and use it in GitHub Desktop.
init.vim to init.lua conversion
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---@diagnostic disable: undefined-global | |
-- ============================================================ | |
-- Bootstrapping & Plugin Management | |
-- ============================================================ | |
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" | |
if not vim.loop.fs_stat(lazypath) then | |
vim.fn.system({ | |
"git", | |
"clone", | |
"--filter=blob:none", | |
"https://github.com/folke/lazy.nvim.git", | |
"--branch=stable", | |
lazypath, | |
}) | |
end | |
vim.opt.rtp:prepend(lazypath) | |
vim.g.mapleader = " " | |
vim.g.maplocalleader = "," | |
local plugins = { | |
----------------------------------------------------------------------- | |
-- CORE / ESSENTIAL | |
----------------------------------------------------------------------- | |
{ | |
"nvim-tree/nvim-web-devicons", | |
lazy = false, | |
priority = 1000, | |
opts = {}, | |
}, | |
{ | |
"folke/which-key.nvim", | |
event = "VeryLazy", | |
config = function() | |
require("which-key").setup({}) | |
end | |
}, | |
{ | |
"nvim-telescope/telescope.nvim", | |
dependencies = { "nvim-lua/plenary.nvim" }, | |
opts = { | |
defaults = { | |
sorting_strategy = "ascending", | |
layout_config = { | |
horizontal = { | |
prompt_position = "top" | |
}, | |
}, | |
}, | |
}, | |
}, | |
{ | |
"akinsho/toggleterm.nvim", | |
version = "*", | |
config = function() | |
require("toggleterm").setup { | |
open_mapping = [[<leader>t]], | |
direction = "float", | |
on_open = function() vim.cmd('startinsert!') end, | |
insert_mappings = false, | |
start_in_insert = true, | |
terminal_mappings = false, | |
} | |
end | |
}, | |
-- { | |
-- "kdheepak/lazygit.nvim", | |
-- lazy = true, | |
-- cmd = { | |
-- "LazyGit", | |
-- "LazyGitConfig", | |
-- "LazyGitCurrentFile", | |
-- "LazyGitFilter", | |
-- "LazyGitFilterCurrentFile", | |
-- }, | |
-- dependencies = { | |
-- "nvim-lua/plenary.nvim", | |
-- }, | |
-- keys = { | |
-- { "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" } | |
-- } | |
-- }, | |
{ | |
"NeogitOrg/neogit", | |
dependencies = { | |
"nvim-lua/plenary.nvim", -- required | |
"sindrets/diffview.nvim", -- optional - Diff integration | |
-- Only one of these is needed. | |
"nvim-telescope/telescope.nvim", -- optional | |
"ibhagwan/fzf-lua", -- optional | |
"echasnovski/mini.pick", -- optional | |
}, | |
config = true | |
}, | |
{ | |
"NMAC427/guess-indent.nvim", | |
config = function() | |
require("guess-indent").setup {} | |
end, | |
}, | |
{ "junegunn/fzf", build = "./install --all" }, | |
"junegunn/fzf.vim", | |
"junegunn/goyo.vim", | |
"HiPhish/rainbow-delimiters.nvim", | |
"mbbill/undotree", | |
"preservim/nerdtree", | |
"tpope/vim-commentary", | |
"tpope/vim-fugitive", | |
"tpope/vim-repeat", | |
"tpope/vim-surround", | |
----------------------------------------------------------------------- | |
-- LSP / COMPLETION | |
----------------------------------------------------------------------- | |
{ "neovim/nvim-lspconfig" }, | |
{ | |
"hrsh7th/nvim-cmp", | |
dependencies = { | |
"hrsh7th/cmp-nvim-lsp", | |
"hrsh7th/cmp-buffer", | |
"hrsh7th/cmp-path", | |
"L3MON4D3/LuaSnip", | |
"saadparwaiz1/cmp_luasnip", | |
"onsails/lspkind-nvim", | |
}, | |
}, | |
{ | |
"nvim-treesitter/nvim-treesitter", | |
build = ":TSUpdate", | |
config = function() | |
require("nvim-treesitter.configs").setup({ | |
ensure_installed = { | |
"lua", "vim", "vimdoc", "javascript", "typescript", | |
"rust", "java", "clojure", "css", "html", "csv", "regex" | |
}, | |
auto_install = true, | |
highlight = { enable = true }, | |
indent = { enable = true }, | |
}) | |
end, | |
}, | |
{ | |
"windwp/nvim-autopairs", | |
event = "InsertEnter", | |
config = function() | |
local npairs = require("nvim-autopairs") | |
npairs.setup({}) | |
npairs.get_rules("'")[1].not_filetypes = { "clojure" } | |
end, | |
}, | |
----------------------------------------------------------------------- | |
-- CLOJURE | |
----------------------------------------------------------------------- | |
{ "clojure-vim/clojure.vim", ft = "clojure" }, | |
{ "Olical/conjure", branch = "develop", ft = { "clojure", "scheme" } }, | |
{ | |
"eraserhd/parinfer-rust", | |
build = "cargo build --release", | |
config = function() | |
vim.g.parinfer_rust_path = vim.fn.stdpath("data") | |
.. "/lazy/parinfer-rust/target/release/libparinfer_rust.so" | |
end | |
}, | |
"guns/vim-sexp", | |
"tpope/vim-sexp-mappings-for-regular-people", | |
----------------------------------------------------------------------- | |
-- CSV | |
----------------------------------------------------------------------- | |
{ "chrisbra/csv.vim" }, | |
----------------------------------------------------------------------- | |
-- RUST | |
----------------------------------------------------------------------- | |
{ "mattn/webapi-vim", ft = "rust" }, | |
{ "rust-lang/rust.vim", ft = "rust" }, | |
{ | |
'mrcjkb/rustaceanvim', | |
version = '^5', -- Recommended | |
lazy = false, -- This plugin is already lazy | |
}, | |
----------------------------------------------------------------------- | |
-- WEB DEVELOPMENT | |
----------------------------------------------------------------------- | |
"mattn/emmet-vim", | |
"maxmellon/vim-jsx-pretty", | |
"prisma/vim-prisma", | |
{ | |
"luckasRanarison/tailwind-tools.nvim", | |
name = "tailwind-tools", | |
build = ":UpdateRemotePlugins", | |
dependencies = { | |
"nvim-treesitter/nvim-treesitter", | |
"nvim-telescope/telescope.nvim", | |
"neovim/nvim-lspconfig", | |
}, | |
opts = { | |
server = { | |
override = true, | |
settings = { | |
emmetCompletions = true, | |
includeLanguages = { clojurescript = "html", rust = "html" }, | |
experimental = { | |
classRegex = { | |
{ "\\[:[^.\\s]*((?:\\.[^.\\s\\]]*)+)[\\s\\]]", "\\.([^.]*)" }, | |
{ "\\:(\\.[^\\s#]+(?:\\.[^\\s#]+)*)", "\\.([^\\.\\s#]+)" }, | |
{ "\\:class\\s+(\\:[^\\s\\}]*)[\\s\\}]", "[\\:.]([^.]*)" }, | |
{ "\\:class\\s+(\"[^\\}\"]*)\"", "[\"\\s]([^\\s\"]*)" }, | |
{ "\\:class\\s+\\[([\\s\\S]*)\\]", "[\"\\:]([^\\s\"]*)[\"]?" }, | |
{ "\\:class\\s+'\\[([\\s\\S]*)\\]", "([^\\s]*)?" }, | |
{ "class\\s*:\\s*\"([^\"]*)" }, | |
}, | |
}, | |
}, | |
}, | |
}, | |
}, | |
----------------------------------------------------------------------- | |
-- COLORS / THEMES | |
----------------------------------------------------------------------- | |
"arcticicestudio/nord-vim", | |
"ayu-theme/ayu-vim", | |
"chriskempson/vim-tomorrow-theme", | |
"folke/tokyonight.nvim", | |
"gruvbox-community/gruvbox", | |
{ "https://gitlab.com/yorickpeterse/vim-paper.git" }, | |
"iagorrr/noctishc.nvim", | |
"iCyMind/NeoSolarized", | |
"ishan9299/modus-theme-vim", | |
"marko-cerovac/material.nvim", | |
"Mofiqul/dracula.nvim", | |
"nanotech/jellybeans.vim", | |
"NLKNguyen/papercolor-theme", | |
"plan9-for-vimspace/acme-colors", | |
"projekt0n/github-nvim-theme", | |
"rakr/vim-one", | |
"yassinebridi/vim-purpura", | |
} | |
require("lazy").setup(plugins) | |
-- ============================================================ | |
-- Global Options & Settings | |
-- ============================================================ | |
local opt = vim.opt | |
opt.backupcopy = "yes" | |
opt.clipboard = { "unnamedplus" } | |
opt.cmdheight = 2 | |
opt.completeopt = "menuone" | |
opt.cursorline = true | |
opt.expandtab = true | |
opt.hidden = true | |
opt.ignorecase = true | |
opt.inccommand = "nosplit" | |
opt.laststatus = 3 | |
opt.mat = 2 | |
opt.mouse = "" | |
opt.number = true | |
-- opt.shiftwidth = 2 | |
opt.shortmess:append("c") | |
opt.showmatch = true | |
opt.signcolumn = "yes" | |
opt.smartcase = true | |
opt.smartindent = true | |
opt.splitbelow = true | |
opt.splitright = true | |
opt.swapfile = false | |
-- opt.tabstop = 2 | |
opt.undodir = vim.fn.expand("~/.vim/undo-dir") | |
opt.undofile = true | |
opt.wildoptions = "pum" | |
vim.g.do_filetype_lua = 1 | |
vim.g.did_load_filetypes = 0 | |
vim.cmd('filetype plugin on') | |
vim.g.open_in_insert_mode = 0 | |
vim.g.python3_host_prog = "/usr/bin/python3" | |
-- ============================================================ | |
-- Keymaps | |
-- ============================================================ | |
local function map(mode, lhs, rhs, opts) | |
local options = { noremap = true, silent = true } | |
if opts then options = vim.tbl_extend('force', options, opts) end | |
vim.keymap.set(mode, lhs, rhs, options) | |
end | |
-- Insert & Terminal mappings | |
map('i', 'jk', '<ESC>') | |
map('t', 'jk', [[<C-\><C-n>]]) | |
map('t', '<C-[>', [[<C-\><C-n>]]) | |
-- Normal mode mappings | |
map('n', '<leader>g', 'gg"+yG') | |
map('n', '<leader><CR>', ':noh<CR>') | |
map('n', '<C-g>', ':Goyo<CR>') | |
map('n', '<leader><tab>', '<C-^>') | |
map('n', '<leader><leader>', 'o<Esc>k') | |
map('n', '<leader>b', ':Buffers<CR>') | |
map('n', '<leader>cd', ':set background=dark<CR>') | |
map('n', '<leader>cl', ':set background=light<CR>') | |
map('n', '<leader>cs', ':colorscheme<Space>') | |
map('n', '<leader>a', ':NERDTreeToggle<CR>') | |
map('n', '<leader>f', ':Files<CR>') | |
map('n', '<leader>o', ':only<CR>') | |
map('n', '<leader>q', ':x<CR>') | |
map('n', '<leader>s', ':split<CR>:res -8<CR><leader>t') | |
map('n', '<leader>v', ':e $MYVIMRC<CR>') | |
map('n', '<leader>w', ':w<CR>') | |
map('n', '<leader>y', ':set nonumber<CR>:set signcolumn=no<CR>') | |
-- Custom zT command: position current line at 1/4 of window | |
vim.keymap.set('n', 'zT', function() | |
local wh = vim.api.nvim_win_get_height(0) | |
local offset = math.floor(wh / 4) | |
return offset .. 'kzt' .. offset .. 'j' | |
end, { expr = true, silent = true }) | |
-- Copy-paste corrections | |
map({ 'n', 'v' }, 'c', '"_c') | |
map({ 'n', 'v' }, 'C', '"_C') | |
-- ============================================================ | |
-- LSP & Completion Configuration | |
-- ============================================================ | |
local capabilities = require("cmp_nvim_lsp").default_capabilities() | |
local lspconfig = require("lspconfig") | |
local util = require("lspconfig.util") | |
local servers = { | |
"clojure_lsp", "cssls", "html", "ts_ls", | |
"jdtls", "lua_ls", | |
} | |
for _, lsp in ipairs(servers) do | |
local opts = { capabilities = capabilities } | |
if lsp == "clojure_lsp" then | |
opts.root_dir = util.root_pattern(".git") | |
opts.settings = { ["clojure-lsp"] = { format = { enabled = false } } } | |
end | |
lspconfig[lsp].setup(opts) | |
end | |
vim.api.nvim_create_autocmd("LspAttach", { | |
callback = function(args) | |
local bufnr = args.buf | |
vim.lsp.inlay_hint.enable(false, { bufnr = bufnr }) | |
end, | |
}) | |
vim.keymap.set("n", "<localleader>h", function() | |
local bufnr = vim.api.nvim_get_current_buf() | |
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr }) | |
end, { desc = "Toggle LSP inlay hints" }) | |
vim.diagnostic.config({ | |
virtual_text = false, | |
signs = true, | |
underline = true, | |
severity_sort = true, | |
}) | |
vim.keymap.set("n", "<leader>e", function() | |
vim.diagnostic.open_float(nil, { scope = "line" }) | |
end, { silent = true }) | |
local cmp = require("cmp") | |
local luasnip = require("luasnip") | |
local check_backspace = function() | |
local col = vim.fn.col('.') - 1 | |
return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') | |
end | |
cmp.setup({ | |
formatting = { | |
format = require("lspkind").cmp_format({ | |
before = require("tailwind-tools.cmp").lspkind_format | |
}), | |
}, | |
snippet = { | |
expand = function(args) luasnip.lsp_expand(args.body) end, | |
}, | |
mapping = { | |
["<Tab>"] = cmp.mapping(function(fallback) | |
if cmp.visible() then | |
cmp.select_next_item() | |
elseif check_backspace() then | |
fallback() | |
else | |
cmp.complete() | |
end | |
end, { "i", "s" }), | |
["<S-Tab>"] = cmp.mapping(function(fallback) | |
if cmp.visible() then cmp.select_prev_item() else fallback() end | |
end, { "i", "s" }), | |
["<CR>"] = cmp.mapping(function(fallback) | |
if cmp.visible() then | |
cmp.confirm({ select = true, behavior = cmp.ConfirmBehavior.Replace }) | |
else | |
fallback() | |
end | |
end, { "i", "s" }), | |
["<C-u>"] = cmp.mapping.scroll_docs(4), | |
["<C-d>"] = cmp.mapping.scroll_docs(-4), | |
}, | |
sources = { | |
{ name = "nvim_lsp" }, | |
{ name = "luasnip" }, | |
{ name = "buffer" }, | |
{ name = "path" }, | |
}, | |
}) | |
vim.api.nvim_create_autocmd("User", { | |
pattern = "GoyoEnter", | |
callback = function() | |
require('cmp').setup.buffer({ enabled = false }) | |
end | |
}) | |
vim.api.nvim_create_autocmd("User", { | |
pattern = "GoyoLeave", | |
callback = function() | |
require('cmp').setup.buffer({ enabled = true }) | |
end | |
}) | |
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { noremap = true, silent = true }) | |
vim.keymap.set('n', '<leader>k', vim.lsp.buf.hover, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gy', vim.lsp.buf.type_definition, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gr', vim.lsp.buf.references, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gn', vim.lsp.buf.rename, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'ga', vim.lsp.buf.code_action, { noremap = true, silent = true }) | |
vim.keymap.set('n', '[g', vim.diagnostic.goto_prev, { noremap = true, silent = true }) | |
vim.keymap.set('n', ']g', vim.diagnostic.goto_next, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gl', vim.diagnostic.open_float, { noremap = true, silent = true }) | |
vim.keymap.set('n', 'gD', vim.diagnostic.setloclist, { noremap = true, silent = true }) | |
vim.keymap.set('n', '<space>p', vim.cmd.Telescope_commands, { noremap = true, silent = true }) | |
-- ============================================================ | |
-- Other Plugin & FileType Specific Settings | |
-- ============================================================ | |
vim.g['conjure#log#hud#width'] = 1 | |
vim.g['conjure#client#clojure#nrepl#connection#auto_repl#enabled'] = false | |
vim.g['conjure#eval#comment_prefix'] = ';; ' | |
vim.g.NERDTreeWinSize = 40 | |
vim.g.rustfmt_autosave = 1 | |
vim.api.nvim_create_autocmd('FileType', { | |
pattern = '*', | |
callback = function() | |
vim.opt_local.formatoptions:remove { 'r', 'o' } | |
end | |
}) | |
vim.api.nvim_create_autocmd('FileType', { | |
pattern = '*', | |
callback = function() | |
vim.opt_local.modifiable = true | |
end | |
}) | |
-- Scratch Buffer Command | |
local scratch_dir = vim.fn.expand('~/.nvim/scratch') | |
vim.fn.mkdir(scratch_dir, 'p') | |
vim.api.nvim_create_user_command('Scratch', function() | |
local filename = scratch_dir .. '/scratch-' .. os.time() | |
vim.cmd('new ' .. filename) | |
vim.bo.buftype = 'nofile' | |
vim.bo.bufhidden = 'hide' | |
vim.bo.swapfile = false | |
vim.wo.number = true | |
end, {}) | |
-- FileType-specific Settings & Mappings | |
local ft_settings = { | |
c = { | |
mappings = { | |
{ 'n', '<localleader>c', ':!cc ' }, | |
{ 'n', '<localleader>l', ':!cc -Wall -Wextra ' }, | |
{ 'n', '<localleader>r', ':!./' } | |
} | |
}, | |
clojure = { | |
settings = function() | |
vim.cmd('stopinsert') | |
vim.opt_local.shiftwidth = 2 | |
vim.opt_local.tabstop = 2 | |
vim.opt_local.commentstring = ';; %s' | |
end, | |
mappings = { | |
{ 'n', '<localleader>cc', ':ConjureConnect<Space>' }, | |
{ 'n', '<localleader>cs', ':ConjureShadowSelect<Space>' }, | |
{ 'n', '<localleader>f(', '!a(zprint <CR>' }, | |
{ 'n', '<localleader>f[', '!a[zprint <CR>' }, | |
{ 'n', '<localleader>f{', '!a{zprint <CR>' }, | |
{ 'n', '<localleader>ff', ':!zprint -w %<CR>' }, | |
{ 'n', '<localleader>hd', ':let g:conjure#log#hud#enabled = v:false<CR>' }, | |
{ 'n', '<localleader>he', ':let g:conjure#log#hud#enabled = v:true<CR>' }, | |
{ 'n', '<localleader>jT', '<Cmd>TapForm<CR>' }, | |
{ 'n', '<localleader>jt', '<Cmd>TapWord<CR>' }, | |
{ 'v', '<localleader>jt', ':TapV<CR>' }, | |
{ 'n', '<localleader>jte', '<Cmd>TapExc<CR>' } | |
} | |
}, | |
go = { | |
mappings = { | |
{ 'n', '<localleader>b', ':!go build<CR>' }, | |
{ 'n', '<localleader>r', ':!go run .<CR>' } | |
} | |
}, | |
java = { | |
mappings = { | |
{ 'n', '<localleader>r', ':!java src/Main.java<CR>' }, | |
{ 'n', '<localleader>,', ':!java ' } | |
} | |
}, | |
rust = { | |
mappings = { | |
{ 'n', '<localleader>a', ':!cargo add<Space>' }, | |
{ 'n', '<localleader>b', ':!cargo lbuild<CR>' }, | |
{ 'n', '<localleader>c', ':!cargo lcheck<CR>' }, | |
{ 'n', '<localleader>cl', ':!cargo clippy<CR>' }, | |
{ 'n', '<localleader>p', 'o<CR>println!("{:?}", );<Esc>hi' }, | |
{ 'n', '<localleader>r', ':!cargo lrun<CR>' }, | |
{ 'n', '<localleader>R', ':!cargo lrun --' }, | |
{ 'n', '<localleader>t', ':!cargo ltest<CR>' }, | |
{ 'n', '<localleader>,', ':Rust' }, | |
{ 'n', '<localleader><Space>', ':CocCommand rust-analyzer.' } | |
} | |
} | |
} | |
for ft, config in pairs(ft_settings) do | |
vim.api.nvim_create_autocmd('FileType', { | |
pattern = ft, | |
callback = function() | |
if config.settings then config.settings() end | |
if config.mappings then | |
for _, mapping in ipairs(config.mappings) do | |
map(mapping[1], mapping[2], mapping[3], { buffer = true }) | |
end | |
end | |
end | |
}) | |
end | |
-- ============================================================ | |
-- Colors & Themes | |
-- ============================================================ | |
vim.opt.termguicolors = true | |
vim.cmd([[colorscheme PaperColor]]) | |
vim.opt.background = 'dark' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
call plug#begin('~/.vim/plugged') | |
Plug 'caenrique/nvim-toggle-terminal' | |
Plug 'folke/which-key.nvim' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'junegunn/vim-easy-align' | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'junegunn/goyo.vim' | |
Plug 'luochen1990/rainbow' | |
Plug 'mbbill/undotree' | |
Plug 'nanotee/zoxide.vim' | |
Plug 'neoclide/coc.nvim', { 'branch': 'release' } | |
Plug 'preservim/nerdtree' | |
" Plug 'razak17/tailwind-fold.nvim' | |
Plug 'tpope/vim-commentary' | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-repeat' | |
Plug 'tpope/vim-surround' | |
" AI | |
" Deps | |
Plug 'stevearc/dressing.nvim' | |
Plug 'nvim-lua/plenary.nvim' | |
Plug 'MunifTanjim/nui.nvim' | |
Plug 'yetone/avante.nvim', { 'branch': 'main', 'do': 'make' } | |
" Optional deps | |
" Plug 'hrsh7th/nvim-cmp' | |
" Plug 'nvim-tree/nvim-web-devicons' "or Plug 'echasnovski/mini.icons' | |
" Plug 'HakonHarnes/img-clip.nvim' | |
" Plug 'zbirenbaum/copilot.lua' | |
" Clojure | |
Plug 'clojure-vim/clojure.vim', { 'for': 'clojure' } | |
Plug 'Olical/conjure', { 'branch': 'develop', 'for': ['clojure', 'scheme'] } | |
Plug 'eraserhd/parinfer-rust' | |
Plug 'guns/vim-sexp' | |
Plug 'tpope/vim-sexp-mappings-for-regular-people' | |
" Gleam | |
" Plug 'gleam-lang/gleam.vim', { 'for': 'gleam' } | |
" Go | |
" Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries', 'for': 'go' } | |
" Odin | |
" Plug 'Tetralux/odin.vim', { 'for': 'odin' } | |
"" Rust | |
Plug 'mattn/webapi-vim', { 'for': 'rust' } | |
Plug 'rust-lang/rust.vim', { 'for': 'rust' } | |
" Themes | |
Plug 'arcticicestudio/nord-vim' | |
Plug 'ayu-theme/ayu-vim' | |
Plug 'folke/tokyonight.nvim' | |
Plug 'gruvbox-community/gruvbox' | |
Plug 'https://gitlab.com/yorickpeterse/vim-paper.git' | |
Plug 'iagorrr/noctishc.nvim' | |
Plug 'iCyMind/NeoSolarized' | |
Plug 'ishan9299/modus-theme-vim' | |
Plug 'marko-cerovac/material.nvim' | |
Plug 'Mofiqul/dracula.nvim' | |
Plug 'nanotech/jellybeans.vim' | |
Plug 'NLKNguyen/papercolor-theme' | |
Plug 'plan9-for-vimspace/acme-colors' | |
Plug 'projekt0n/github-nvim-theme' | |
Plug 'rakr/vim-one' | |
Plug 'yassinebridi/vim-purpura' | |
" Web | |
Plug 'mattn/emmet-vim' | |
Plug 'maxmellon/vim-jsx-pretty' | |
Plug 'prisma/vim-prisma' | |
Plug 'yaegassy/coc-tailwindcss3', {'do': 'yarn install --frozen-lockfile'} | |
" Zig | |
" Plug 'ziglang/zig.vim', { 'for': 'zig' } | |
call plug#end() | |
let g:coc_disable_transparent_cursor = 1 | |
let g:coc_global_extensions = [ | |
\'coc-clojure', | |
\'coc-css', | |
\'coc-emmet', | |
\'coc-html', | |
\'coc-java', | |
\'coc-json', | |
\'coc-prettier', | |
\'coc-rust-analyzer', | |
\'coc-tsserver', | |
\'@yaegassy/coc-tailwindcss3', | |
\] | |
" \'coc-conjure', | |
" \'coc-go', | |
" \'coc-htmldjango', | |
" \'coc-prisma', | |
" \'coc-zls', | |
" tailwindCSS.headwind.runOnSave": true, | |
let g:conjure#client#clojure#nrepl#connection#auto_repl#enabled = v:false | |
let g:conjure#eval#comment_prefix = ";; " | |
" let g:conjure#log#hud#enabled = v:false | |
let g:conjure#log#hud#width = 1 | |
" let g:conjure#log#hud#anchor = "SE" | |
" let g:copilot_filetypes = {"*": v:false} | |
let g:copilot_no_tab_map = v:true | |
let g:go_def_mapping_enabled=0 | |
let g:go_def_mode="gopls" | |
let g:go_fmt_command = "goimports" | |
let g:go_info_mode="gopls" | |
let g:go_gopls_enabled=0 | |
let g:open_in_insert_mode=0 | |
let g:python3_host_prog = "/usr/bin/python3" | |
let g:rainbow_active = 1 | |
let g:rust_clip_command = 'xclip -selection clipboard' | |
let g:rustfmt_autosave = 1 | |
""go": { | |
" "command": "gopls", | |
" "rootPatterns": ["go.work", "go.mod", ".vim/", ".git/", ".hg/"], | |
" "filetypes": ["go"], | |
" "initializationOptions": { | |
" "usePlaceholders": true | |
" } | |
"}, | |
set backupcopy=yes | |
set cmdheight=2 | |
set completeopt=menuone | |
set cursorline | |
set expandtab | |
set hidden | |
set ignorecase | |
set inccommand=nosplit | |
set mat=2 | |
set mouse= | |
set noswapfile | |
set number | |
set shiftwidth=4 | |
set shortmess+=c | |
set showmatch | |
set signcolumn=yes | |
set smartcase | |
set smartindent | |
set splitbelow | |
set splitright | |
set tabstop=4 | |
set wildoptions=pum | |
let mapleader = " " | |
let maplocalleader = "," | |
" imap <silent><script><expr> <C-a> copilot#Accept("\<CR>") | |
noremap! jk <Esc> | |
tnoremap jk <C-\><C-n> | |
tnoremap <C-[> <C-\><C-n> | |
nnoremap <leader>g gg"+yG | |
nnoremap <silent> <leader>t :ToggleTerminal<Enter>a | |
" tnoremap <silent> <leader>t <C-\><C-n>:ToggleTerminal<CR> | |
nmap <silent> <leader><CR> :noh<CR> | |
nmap ea <Plug>(EasyAlign)i{<Space><CR> | |
nmap eA <Plug>(EasyAlign)i[<Space><CR> | |
nmap <C-g> :Goyo<CR> | |
nmap <leader><tab> <C-^> | |
nmap <leader><leader> o<Esc>k | |
nmap <leader>b :Buffers<CR> | |
nmap <leader>cd :set background=dark<CR> | |
nmap <leader>cl :set background=light<CR> | |
nmap <leader>cs :colorscheme<Space> | |
nmap <leader>d :NERDTreeToggle<CR> | |
nmap <leader>f :Files<CR> | |
nmap <leader>o :only<CR> | |
nmap <leader>q :x<CR> | |
nmap <leader>s :split<CR>:res -8<CR><leader>t | |
nmap <leader>v :e $MYVIMRC<CR> | |
nmap <leader>w :w<CR> | |
nmap <leader>y :set nonumber<CR>:set signcolumn=no<CR> | |
if !isdirectory($HOME."/.vim") | |
call mkdir($HOME."/.vim", "", 0770) | |
endif | |
if !isdirectory($HOME."/.vim/undo-dir") | |
call mkdir($HOME."/.vim/undo-dir", "", 0700) | |
endif | |
set undodir=~/.vim/undo-dir | |
set undofile | |
autocmd FileType * set formatoptions-=ro | |
au BufEnter *.c nnoremap <buffer> <localleader>c :!cc | |
au BufEnter *.c nnoremap <buffer> <localleader>l :!cc -Wall -Wextra<C-F>4b2hi | |
au BufEnter *.c nnoremap <buffer> <localleader>r :!./ | |
au FileType clojure set commentstring=;;\ %s | |
au BufEnter *.clj,*.cljs,*.edn stopinsert | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>cc :ConjureConnect<Space> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>cs :ConjureShadowSelect<Space> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>f :!clojure-lsp format<CR> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>hd :let g:conjure#log#hud#enabled = v:false<CR> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>he :let g:conjure#log#hud#enabled = v:true<CR> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jT <Cmd>TapForm<CR> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jt <Cmd>TapWord<CR> | |
au BufEnter *.clj,*.cljs,*.edn vnoremap <buffer> <localleader>jt :TapV<CR> | |
au BufEnter *.clj,*.cljs,*.edn nnoremap <buffer> <localleader>jte <Cmd>TapExc<CR> | |
autocmd BufWinEnter "conjure-log-*" "silent s/; Sponsored by @.*//e" | |
" autocmd TermOpen * nnoremap <buffer> <leader>r iclj -M:repl<CR> | |
augroup filetype_clojure | |
autocmd! | |
autocmd FileType clojure setlocal shiftwidth=2 tabstop=2 | |
augroup END | |
au BufEnter *.gleam nnoremap <buffer> <localleader>a :!gleam add<Space> | |
au BufEnter *.gleam nnoremap <buffer> <localleader>r :!gleam run<CR> | |
au BufEnter *.go nnoremap <buffer> <localleader>b :!go build<CR> | |
au BufEnter *.go nnoremap <buffer> <localleader>r :!go run .<CR> | |
au BufEnter *.java nnoremap <buffer> <localleader>r :!java src/Main.java<CR> | |
au BufEnter *.java nnoremap <buffer> <localleader>, :!java | |
au BufEnter *.odin nnoremap <buffer> <localleader>r :!odin run .<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>a :!cargo add<Space> | |
au BufEnter *.rs nnoremap <buffer> <localleader>b :!cargo lbuild<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>c :!cargo lcheck<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>cl :!cargo clippy<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>h :CocCommand document.toggleInlayHint<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>p o<CR>println!("{:?}", );<Esc>hi | |
au BufEnter *.rs nnoremap <buffer> <localleader>r :!cargo lrun<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>R :!cargo lrun -- | |
au BufEnter *.rs nnoremap <buffer> <localleader>t :!cargo ltest<CR> | |
au BufEnter *.rs nnoremap <buffer> <localleader>, :Rust | |
au BufEnter *.rs nnoremap <buffer> <localleader><Space> :CocCommand rust-analyzer. | |
" below is a small bug fix for a minor Dioxus hot reload issue: | |
augroup rust_group | |
autocmd! | |
autocmd FileType rust setlocal backupcopy=yes | |
augroup END | |
au BufEnter *.zig nnoremap <buffer> <localleader>r :!zig build run<CR> | |
inoremap <silent><expr> <TAB> | |
\ coc#pum#visible() ? coc#pum#next(1): | |
\ CheckBackspace() ? "\<Tab>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>" | |
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() | |
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |
function! CheckBackspace() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
function! ShowDocumentation() | |
if CocAction('hasProvider', 'hover') | |
call CocActionAsync('doHover') | |
else | |
call feedkeys('K', 'in') | |
endif | |
endfunction | |
inoremap <silent><expr> <down> coc#util#has_float() ? FloatScroll(1) : "\<down>" | |
inoremap <silent><expr> <up> coc#util#has_float() ? FloatScroll(0) : "\<up>" | |
nnoremap <silent> K :call ShowDocumentation()<CR> | |
nnoremap <silent> <leader>k :call ShowDocumentation()<CR> | |
" nmap <silent> ca <Plug>(coc-codelens-action) | |
nmap <silent> <space>d :cd<C-u>CocList diagnostics<cr> | |
nmap <silent> <space>p :cd<C-u>CocList commands<cr> | |
nmap <silent> ga <Plug>(coc-codeaction-cursor) | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gn <Plug>(coc-rename) | |
nmap <silent> gr <Plug>(coc-references) | |
nmap <silent> [c :call CocAction('diagnosticNext')<cr> | |
nmap <silent> ]c :call CocAction('diagnosticPrevious')<cr> | |
set termguicolors | |
colorscheme PaperColor | |
set background=dark | |
" require("CopilotChat").setup {} | |
" lua << EOF | |
" require('which-key').setup {} | |
" EOF | |
autocmd FileType * setlocal modifiable | |
autocmd! User avante.nvim | |
lua << EOF | |
require('which-key').setup {} | |
require('avante_lib').load() | |
require('avante').setup() | |
EOF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment