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>