Mercurial
diff vim-setup/.vimrc @ 43:5e6a5d3c6868
[Personal] Moving my vim-set up config here.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 01 Dec 2025 22:43:40 -0800 |
| parents | |
| children | 983769fba767 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim-setup/.vimrc Mon Dec 01 22:43:40 2025 -0800 @@ -0,0 +1,208 @@ +" Line numbers +set number +set relativenumber + +" Turn off error +set noerrorbells +set novisualbell +set t_vb= + +" Indentation +set tabstop=2 +set shiftwidth=2 +set expandtab +set autoindent + +" Syntax +syntax on +filetype plugin indent on +set termguicolors +let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" +let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" +colorscheme nightfly +" Force turn on unless it is over 1M LOC +autocmd BufReadPre * if getfsize(expand("%")) > 1000000 | syntax off | endif + +" Line wrapping +set nowrap + +" Search settings +set ignorecase +set smartcase +set hlsearch +set incsearch + +" Cursor line +set cursorline + +" Appearance +set termguicolors +set background=dark +set signcolumn=yes + +" Backspace behavior +set backspace=indent,eol,start + +" Clipboard +set clipboard+=unnamedplus + +" Split window behavior +set splitright +set splitbelow +set splitbelow + +" General Keymaps +" Map semicolon to colon in normal mode +nnoremap ; : + +" Yank into clipboard +nnoremap <leader>y "+y +vnoremap <leader>y "+y + +" <leader>ff: Fuzzy file search +nnoremap <leader>ff :Files<CR> + +" <leader>fb: Fuzzy search within buffer +nnoremap <leader>fb :Buffers<CR> + +" <leader>ft: ctag search +nnoremap <leader>ft :Tags<CR> + +" <leader>fs: Ripgrep search for word (normal mode) +nnoremap <leader>fs :RG<CR> + +" <leader>fs: Ripgrep search for selected text (visual mode) +vnoremap <leader>fs :<C-u>execute 'Rg ' . getreg('"')<CR> + +" Open man in vim +noremap <c-k> :h <cword><cr> + +" vim wiki +" Set the directory where your wiki pages will be stored +let g:wiki_root = expand('~/wiki/') + +" Set wiki syntax and file extensions +let g:wiki_filetypes = ['md', 'wiki'] + +" Enable global mappings (optional) +let g:wiki_global_mappings = 1 + +" Enable links to markdown files +let g:wiki_link_extension = '.md' + +" Turn on man vim mode +runtime! ftplugin/man.vim +" Keyword +set keywordprg=:Man + +" Setup LSP + completion (I will turn on and off depending on sitautions) +lua << EOF +vim.lsp.set_log_level('OFF') + +local cmp = require('cmp') +local luasnip = require('luasnip') +local lspconfig = require('lspconfig') +local util = require('lspconfig.util') + +-- ────────────────────────────── +-- nvim-cmp setup (unchanged) +-- ────────────────────────────── +cmp.setup({ + snippet = { + expand = function(args) luasnip.lsp_expand(args.body) end, + }, + mapping = cmp.mapping.preset.insert({ + ['<C-Space>'] = cmp.mapping.complete(), + ['<CR>'] = cmp.mapping.confirm({ select = true }), + ['<C-J>'] = cmp.mapping.select_next_item(), + ['<C-K>'] = cmp.mapping.select_prev_item(), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp', group_index = 1 }, + { name = 'luasnip', group_index = 1 }, + { name = 'buffer', group_index = 2 }, + }) +}) + +local capabilities = require('cmp_nvim_lsp').default_capabilities() + +-- ts_ls +lspconfig.ts_ls.setup({ + capabilities = capabilities, + root_dir = require('lspconfig.util').root_pattern('tsconfig.json'), + init_options = { + maxTsServerMemory = 8192, + preferences = { + includePackageJsonAutoImports = "auto", + }, + }, + filetypes = { "typescript", "typescriptreact", "javascript", "javascriptreact" }, + settings = { + typescript = { + inlayHints = { + includeInlayParameterNameHints = "all", + includeInlayParameterNameHintsWhenArgumentMatchesName = false, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + }, + }, + }, + + -- Force tsserver to reload the tsconfig every time (fixes 95% of path alias issues) + on_attach = function(client, bufnr) + -- Optional: show when LSP attaches + print("ts_ls attached to " .. vim.fn.getcwd()) + end, +}) + +-- Python +lspconfig.basedpyright.setup({ + capabilities = capabilities, + on_attach = function(client, bufnr) + -- Optional: notify when Python LSP attaches + print("basedpyright attached to " .. vim.fn.getcwd()) + + -- Common LSP keymaps (you can put them once at the bottom instead if you prefer) + -- local bufopts = { noremap = true, silent = true, buffer = bufnr } + -- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) + -- vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) + -- vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + -- vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts) + -- vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) + -- vim.keymap.set('n', '\\d', vim.diagnostic.open_float, bufopts) + -- vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, bufopts) + -- vim.keymap.set('n', ']d', vim.diagnostic.goto_next, bufopts) + end, + settings = { + basedpyright = { + analysis = { + autoSearchPaths = true, + useLibraryCodeForTypes = true, + diagnosticMode = "workspace", -- or "openFiles" if you have huge monorepos + typeCheckingMode = "standard", -- "strict" if you want maximum strictness + }, + }, + }, + root_dir = util.root_pattern( + "venv", -- This is what I mostly use + "pyproject.toml", -- belows are whatever they use I guess + "setup.py", + "setup.cfg", + "requirements.txt", + ".git" + ), +}) + +EOF + +" Optional key mappings for LSP +nnoremap <silent> gd <cmd>lua vim.lsp.buf.definition()<CR> +nnoremap <silent> K <cmd>lua vim.lsp.buf.hover()<CR> +nnoremap <silent> gr <cmd>lua vim.lsp.buf.references()<CR> +nnoremap <silent> \d <cmd>lua vim.diagnostic.open_float(nil, { border = "rounded" })<CR> +nnoremap <silent> [d <cmd>lua vim.diagnostic.goto_prev()<CR> +nnoremap <silent> ]d <cmd>lua vim.diagnostic.goto_next()<CR> +nnoremap <silent> \ca <cmd>lua vim.lsp.buf.code_action()<CR>