feat: add vim
90b0f97b
10 file(s) · +209 −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 |
| 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) |
| 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> |
| 1 | + | let mapleader = " " |
|
| 2 | + | ||
| 3 | + | noremap <leader>e :Ex<CR> |
| 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 | + |
| 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 | + | \ }) |
| 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 | + |
| 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 |
| 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 |
| 1 | + | source ~/.vim/vimrc |