feat: add vim 90b0f97b
Steve · 2026-09-09 22:34 10 file(s) · +209 −1
.gitignore +2 −1
2 2
.DS_Store
3 3
/zed/.config/zed/prompts/prompts-library-db.0.mdb/
4 4
*/.DS_Store
5 -
5 +
vim/dot-vim/plugged
6 +
vim/dot-vim/.netrwhist
vim/dot-vim/autoload/lightline/colorscheme/darkmatter.vim (added) +34 −0
1 +
2 +
let s:base00 = [ '#121113', '233' ] " background
3 +
let s:base01 = [ '#121212', '233' ]
4 +
let s:base02 = [ '#222222', '235' ]
5 +
let s:base03 = [ '#333333', '236' ]
6 +
let s:base04 = [ '#999999', '246' ]
7 +
let s:base05 = [ '#c1c1c1', '251' ]
8 +
let s:base08 = [ '#5f8787', '66'  ] " teal
9 +
let s:base0A = [ '#e78a53', '209' ] " orange
10 +
let s:base0B = [ '#fbcb97', '223' ] " sand
11 +
let s:base0F = [ '#444444', '238' ]
12 +
13 +
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
14 +
15 +
let s:p.normal.left     = [ [ s:base00, s:base0A ], [ s:base05, s:base02 ] ]
16 +
let s:p.normal.middle   = [ [ s:base04, s:base01 ] ]
17 +
let s:p.normal.right    = [ [ s:base00, s:base04 ], [ s:base05, s:base02 ], [ s:base04, s:base01 ] ]
18 +
let s:p.normal.error    = [ [ s:base00, s:base0A ] ]
19 +
let s:p.normal.warning  = [ [ s:base00, s:base0B ] ]
20 +
21 +
let s:p.insert.left     = [ [ s:base00, s:base0B ], [ s:base05, s:base02 ] ]
22 +
let s:p.replace.left    = [ [ s:base00, s:base08 ], [ s:base05, s:base02 ] ]
23 +
let s:p.visual.left     = [ [ s:base00, s:base05 ], [ s:base05, s:base02 ] ]
24 +
25 +
let s:p.inactive.left   = [ [ s:base03, s:base00 ], [ s:base03, s:base00 ] ]
26 +
let s:p.inactive.middle = [ [ s:base03, s:base00 ] ]
27 +
let s:p.inactive.right  = [ [ s:base03, s:base00 ], [ s:base03, s:base00 ] ]
28 +
29 +
let s:p.tabline.left    = [ [ s:base04, s:base02 ] ]
30 +
let s:p.tabline.tabsel  = [ [ s:base00, s:base0A ] ]
31 +
let s:p.tabline.middle  = [ [ s:base03, s:base01 ] ]
32 +
let s:p.tabline.right   = [ [ s:base00, s:base0F ] ]
33 +
34 +
let g:lightline#colorscheme#darkmatter#palette = lightline#colorscheme#flatten(s:p)
vim/dot-vim/fzf.vim (added) +20 −0
1 +
" FZF keymaps (requires Plug 'junegunn/fzf.vim')
2 +
3 +
" Files
4 +
nnoremap <leader>ff :Files<CR>
5 +
nnoremap <leader>fo :History<CR>
6 +
nnoremap <leader>o :Buffers<CR>
7 +
nnoremap <leader>fq :CList<CR>    " For quickfix list
8 +
nnoremap <leader>fh :Helptags<CR>
9 +
10 +
" Grep current string
11 +
nnoremap <leader>fs :Rg <C-r><C-w><CR>
12 +
13 +
" Grep input string (fzf prompt)
14 +
nnoremap <leader>/ :Rg<Space>
15 +
16 +
" Grep for current file name (without extension)
17 +
nnoremap <leader>fc :execute 'Rg ' . expand('%:t:r')<CR>
18 +
19 +
" Find files in your Vim config
20 +
nnoremap <leader>fi :Files ~/.vim<CR>
vim/dot-vim/keybinds.vim (added) +3 −0
1 +
let mapleader = " "
2 +
3 +
noremap <leader>e :Ex<CR>
vim/dot-vim/lightline.vim (added) +18 −0
1 +
set laststatus=2
2 +
let g:lightline = {
3 +
      \ 'colorscheme' : 'darkmatter',
4 +
      \ 'active': {
5 +
      \   'left': [ [ 'mode', 'paste' ],
6 +
      \             [ 'gitbranch', 'readonly', 'filename', 'modified' ] ],
7 +
      \   'right': [ [ 'lineinfo' ], [ 'fileformat', 'fileencoding', 'filetype' ] ]
8 +
      \ },
9 +
      \ 'component_function': {
10 +
      \   'gitbranch': 'FugitiveHead',
11 +
      \   'filename': 'LightlineFilename'
12 +
      \ }
13 +
      \ }
14 +
15 +
function! LightlineFilename()
16 +
  return expand('%:t') !=# '' ? expand('%:t') : '[No Name]'
17 +
endfunction
18 +
vim/dot-vim/lsp.vim (added) +82 −0
1 +
" Enable diagnostics highlighting
2 +
let lspOpts = #{autoHighlightDiags: v:true}
3 +
autocmd User LspSetup call LspOptionsSet(lspOpts)
4 +
let lspServers = [
5 +
      \ #{
6 +
      \   name: 'rust-analyzer',
7 +
      \   filetype: ['rust'],
8 +
      \   path: 'rust-analyzer',
9 +
      \   args: []
10 +
      \ },
11 +
      \ #{
12 +
      \   name: 'lua-language-server',
13 +
      \   filetype: ['lua'],
14 +
      \   path: 'lua-language-server',
15 +
      \   args: [],
16 +
      \   rootSearch: ['.luarc.json', '.luarc.jsonc', '.luacheckrc',
17 +
      \                'stylua.toml', '.stylua.toml', 'selene.toml',
18 +
      \                'selene.yml', '.git'],
19 +
      \   workspaceConfig: #{
20 +
      \     Lua: #{
21 +
      \       diagnostics: #{ globals: ['vim'] }
22 +
      \     }
23 +
      \   }
24 +
      \ },
25 +
      \ #{
26 +
      \   name: 'tsserver',
27 +
      \   filetype: ['typescript', 'typescriptreact', 'typescript.tsx',
28 +
      \               'javascript', 'javascriptreact', 'javascript.jsx'],
29 +
      \   path: 'vtsls',
30 +
      \   args: ['--stdio'],
31 +
      \   rootSearch: ['tsconfig.json', 'jsconfig.json', 'package.json', '.git']
32 +
      \ },
33 +
      \ #{
34 +
      \   name: 'gopls',
35 +
      \   filetype: ['go', 'gomod', 'gowork',
36 +
      \               'gotmpl', 'gosum'],
37 +
      \   path: 'gopls',
38 +
      \   args: [],
39 +
      \   rootSearch: ['go.mod', 'go.work', '.git']
40 +
      \ },
41 +
      \ #{
42 +
      \   name: 'html',
43 +
      \   filetype: ['html'],
44 +
      \   path: 'vscode-html-language-server',
45 +
      \   args: ['--stdio'],
46 +
      \   rootSearch: ['index.html', 'package.json', '.git']
47 +
      \ },
48 +
      \ #{
49 +
      \   name: 'astro',
50 +
      \   filetype: ['astro'],
51 +
      \   path: 'astro-ls',
52 +
      \   args: ['--stdio'],
53 +
      \   rootSearch: ['package.json', 'tsconfig.json', 'jsconfig.json', '.git'],
54 +
      \   initializationOptions: #{
55 +
      \     typescript: #{
56 +
      \       tsdk: expand('~/.bun/install/global/node_modules/typescript/lib')
57 +
      \     }
58 +
      \   }
59 +
      \ }
60 +
      \ ]
61 +
62 +
autocmd User LspSetup call LspAddServer(lspServers)
63 +
64 +
" Key mappings
65 +
nnoremap gd :LspGotoDefinition<CR>
66 +
nnoremap gr :LspShowReferences<CR>
67 +
nnoremap K  :LspHover<CR>
68 +
nnoremap gl :LspDiag current<CR>
69 +
nnoremap <leader>nd :LspDiag next \| LspDiag current<CR>
70 +
nnoremap <leader>pd :LspDiag prev \| LspDiag current<CR>
71 +
inoremap <silent> <C-Space> <C-x><C-o>
72 +
73 +
" Set omnifunc for completion
74 +
autocmd FileType rust setlocal omnifunc=lsp#complete
75 +
76 +
" Custom diagnostic sign characters
77 +
autocmd User LspSetup call LspOptionsSet(#{
78 +
    \   diagSignErrorText: '✘',
79 +
    \   diagSignWarningText: '▲',
80 +
    \   diagSignInfoText: '»',
81 +
    \   diagSignHintText: '⚑',
82 +
    \ })
vim/dot-vim/options.vim (added) +16 −0
1 +
filetype plugin indent on
2 +
set expandtab
3 +
set shiftwidth=4
4 +
set softtabstop=4
5 +
set tabstop=4
6 +
set number
7 +
set relativenumber
8 +
set smartindent
9 +
set showmatch
10 +
set backspace=indent,eol,start
11 +
syntax on
12 +
set termguicolors
13 +
set shell=/bin/zsh
14 +
set noshowmode
15 +
set signcolumn=yes
16 +
vim/dot-vim/plugins.vim (added) +27 −0
1 +
" Declare plugin directory
2 +
let s:plugin_dir = expand('~/.vim/plugged')
3 +
4 +
" Native plugin manager
5 +
function! s:ensure(repo)
6 +
  let name = split(a:repo, '/')[-1]
7 +
  let path = s:plugin_dir . '/' . name
8 +
9 +
  if !isdirectory(path)
10 +
    if !isdirectory(s:plugin_dir)
11 +
      call mkdir(s:plugin_dir, 'p')
12 +
    endif
13 +
    execute '!git clone --depth=1 https://github.com/' . a:repo . ' ' . shellescape(path)
14 +
  endif
15 +
16 +
  execute 'set runtimepath+=' . fnameescape(path)
17 +
endfunction
18 +
19 +
" Plugins
20 +
call s:ensure('junegunn/fzf')
21 +
call s:ensure('junegunn/fzf.vim')
22 +
call s:ensure('itchyny/lightline.vim')
23 +
call s:ensure('yegappan/lsp')
24 +
25 +
" Colorscheme
26 +
call s:ensure('stevedylandev/darkmatter-nvim')
27 +
colorscheme darkmatter
vim/dot-vim/vimrc (added) +6 −0
1 +
source ~/.vim/options.vim
2 +
source ~/.vim/plugins.vim
3 +
source ~/.vim/keybinds.vim
4 +
source ~/.vim/fzf.vim
5 +
source ~/.vim/lightline.vim
6 +
source ~/.vim/lsp.vim
vim/dot-vimrc (added) +1 −0
1 +
source ~/.vim/vimrc