Mercurial
view vim-setup/.vimrc @ 214:4c725fde6999
[MrJuneJune] Fixed linkedin path and images modules.
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 15 Feb 2026 22:21:27 -0800 |
| parents | 790930d9bb90 |
| children |
line wrap: on
line source
" 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 command! -bang -nargs=* RG \ call fzf#vim#grep( \ 'rg --column --line-number --no-heading --color=always --smart-case --hidden '.shellescape(<q-args>), \ 1, \ fzf#vim#with_preview(), \ <bang>0) " <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: Open Ripgrep search prompt nnoremap <leader>fs :RG<CR> function! RipgrepCursor(query) call fzf#vim#grep( \ 'rg --column --line-number --no-heading --color=always --smart-case -- '.shellescape(a:query), \ 1, \ fzf#vim#with_preview(), \ 0) endfunction " <leader>gr: Search word under cursor (Normal) nnoremap <silent> <leader>gr :call RipgrepCursor(expand('<cword>'))<CR> " <leader>gr: Search selection (Visual) vnoremap <silent> <leader>gr y:call RipgrepCursor(@@)<CR> " ctag open in preview nnoremap <leader>gd <C-w>} " ctag open nnoremap <leader>gD <C-]> " No highlight nnoremap <leader>nh :noh<CR> " Search Files inoremap <C-f> <C-x> " 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 " FZF enbale vim set rtp+=/opt/homebrew/opt/fzf " For some reason it include ( or ) when I use it in here set iskeyword-=( iskeyword-=) " ============================================================================ " Markdown Clipboard Image Paste " ============================================================================ " Configuration: Set your API endpoint URL (leave empty to save locally) let g:clipboard_image_upload_url = '' " Optional: Custom curl options (e.g., for auth headers) " let g:clipboard_image_curl_opts = '-H "Authorization: Bearer YOUR_TOKEN"' let g:clipboard_image_curl_opts = '' function! PasteClipboardImage() if &filetype != 'markdown' echo "Clipboard image paste only works in markdown files" return endif if !executable('pngpaste') echo "Error: pngpaste not found. Install with: brew install pngpaste" return endif let l:tmpfile = tempname() . '.png' let l:result = system('pngpaste ' . shellescape(l:tmpfile) . ' 2>&1') if v:shell_error != 0 echo "No image in clipboard or pngpaste failed: " . l:result return endif if !filereadable(l:tmpfile) echo "Failed to save clipboard image" return endif if g:clipboard_image_upload_url == '' let l:dir = expand('%:p:h') let l:random = localtime() . '_' . rand() let l:filename = 'image_' . l:random . '.png' let l:filepath = l:dir . '/' . l:filename call rename(l:tmpfile, l:filepath) if !filereadable(l:filepath) echo "Failed to save image locally" call delete(l:tmpfile) return endif let l:url = l:filename echo "Image saved locally: " . l:filename else echo "Uploading image..." let l:curl_cmd = 'curl -s -X POST' let l:curl_cmd .= ' -H "Content-Type: image/png"' let l:curl_cmd .= ' --data-binary @' . shellescape(l:tmpfile) if g:clipboard_image_curl_opts != '' let l:curl_cmd .= ' ' . g:clipboard_image_curl_opts endif let l:curl_cmd .= ' ' . shellescape(g:clipboard_image_upload_url) let l:url = system(l:curl_cmd) call delete(l:tmpfile) if v:shell_error != 0 echo "Upload failed: " . l:url return endif let l:url = substitute(l:url, '^\s*\(.\{-}\)\s*$', '\1', '') echo "Image uploaded!" endif " Insert markdown image syntax at cursor execute "normal! a" . l:markdown_img . "\<Esc>" endfunction autocmd FileType markdown nnoremap <buffer> <leader>p :call PasteClipboardImage()<CR> " 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>