diff --git a/config/vim/.vim/vimrc b/config/vim/.vim/vimrc deleted file mode 120000 index 4ff4057..0000000 --- a/config/vim/.vim/vimrc +++ /dev/null @@ -1 +0,0 @@ -vimrc.min \ No newline at end of file diff --git a/config/vim/.vim/vimrc b/config/vim/.vim/vimrc new file mode 100644 index 0000000..0cbc139 --- /dev/null +++ b/config/vim/.vim/vimrc @@ -0,0 +1,123 @@ +"load system defaults +"-------------------- +if filereadable(expand('$VIMRUNTIME/defaults.vim')) + unlet! g:skip_defaults_vim + source $VIMRUNTIME/defaults.vim +endif + +"regular settings +"---------------- +" ui +set number " line numbers +set ruler " line # in the statusline +set wildmenu " vim command completion menu +set showcmd " show the current normal mode command +set showmatch " show matching symbols like (), {} +set hidden " allow unsaved buffers in background + +" encoding/format +set encoding=utf-8 " utf-8 (basically) standard +set fileformats=unix,dos,mac " controls newline styles + +" searching +set hlsearch " highlight all matches for a search +set incsearch " incremental search by character +set ignorecase " ignore alphabetical case of search +set smartcase " ignore unless there is a capital letter + +" tab/space indent and whitespace +set tabstop=2 " tabstop is the num to use for a tab character +set softtabstop=2 " softtabstop makes up the difference between tab and space +set shiftwidth=2 " shiftwidth applies to indenting with < and > +set expandtab " use space characters to indent instead of tab characters +set autoindent " copies indent from current line +set smarttab " should not matter if ts, sts and sw are all the same +set backspace=indent,eol,start " lets you backspace over anything + +" key timeout values +set esckeys " allow to be registered instantly +set timeoutlen=1000 " keymap timeout value (1 second in ms) +set ttimeoutlen=20 " time out for keycodes (20ms) + +" allow syntax and filetype plugins +syntax enable +filetype plugin indent on +runtime macros/matchit.vim + +"keybinds +"---------- +let mapleader = " " + +"file cleanup +"------------ +"swap +let mySwapDir = expand("$HOME/.vim/.swap") +if !isdirectory(mySwapDir) + silent! call mkdir(mySwapDir, "p") +endif +let &directory=mySwapDir + +"undo +if has('persistent_undo') + let myUndoDir = expand("$HOME/.vim/.undo") + if !isdirectory(myUndoDir) + silent! call mkdir(myUndoDir, "p") + endif + let &undodir=myUndoDir + set undofile +endif + +"backup +if has('writebackup') + let myBackupDir = expand("$HOME/.vim/.backup") + if !isdirectory(myBackupDir) + silent! call mkdir(myBackupDir, "p") + endif + let &backupdir=myBackupDir + set backup +endif + +"autocmds +"--------- +augroup general + autocmd! + "keep equal proportions when windows resized + autocmd VimResized * wincmd = + "save cursor position in a file + autocmd BufReadPost * if line("'\"") > 1 && line("'\"") + \ <= line("$") | exe "normal! g'\"" | endif +augroup END + +"plugins +"-------- +let plugDir = expand("$HOME/.vim/autoload/plug.vim") +let pluginDir = expand("$HOME/.vim/plugged") +let plugRemote = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" +"ensure vim-plug is installed on VimEnter +if empty(glob(plugDir)) + silent execute "!curl -fLo " . shellescape(expand(plugDir)) . " --create-dirs " . shellescape(plugRemote) + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif +call plug#begin(pluginDir) + Plug 'junegunn/vim-plug' + Plug 'tpope/vim-commentary' + Plug 'tpope/vim-surround' + Plug 'tpope/vim-unimpaired' + Plug 'tpope/vim-rsi' + Plug 'tpope/vim-eunuch' + Plug 'tpope/vim-repeat' + Plug 'tpope/vim-fugitive' + Plug 'tpope/vim-rhubarb' + Plug 'tpope/vim-dispatch' + Plug 'airblade/vim-gitgutter' + Plug 'editorconfig/editorconfig-vim' + Plug 'prabirshrestha/vim-lsp' + Plug 'mattn/vim-lsp-settings' + Plug 'freitass/todo.txt-vim' +call plug#end() + +"local rc +"-------- +if filereadable(expand("~/.local/.vimrc")) + source ~/.local/.vimrc +endif diff --git a/config/vim/.vim/vimrc.min b/config/vim/.vim/vimrc.min deleted file mode 100644 index c7f7d48..0000000 --- a/config/vim/.vim/vimrc.min +++ /dev/null @@ -1,82 +0,0 @@ -"-------------- -" a minimal vimrc -"-------------- - -"load system defaults -"-------------------- -if filereadable(expand('$VIMRUNTIME/defaults.vim')) - unlet! g:skip_defaults_vim - source $VIMRUNTIME/defaults.vim -endif - -"regular settings -"---------------- -" ui -set number " line numbers -set ruler " line # in the statusline -set wildmenu " vim command completion menu -set showcmd " show the current normal mode command -set showmatch " show matching symbols like (), {} -set hidden " allow unsaved buffers in background - -" encoding/format -set encoding=utf-8 " utf-8 (basically) standard -set fileformats=unix,dos,mac " controls newline styles - -" searching -set hlsearch " highlight all matches for a search -set incsearch " incremental search by character -set ignorecase " ignore alphabetical case of search -set smartcase " ignore unless there is a capital letter - -" tab/space indent and whitespace -set tabstop=2 " tabstop is the num to use for a tab character -set softtabstop=2 " softtabstop makes up the difference between tab and space -set shiftwidth=2 " shiftwidth applies to indenting with < and > -set expandtab " use space characters to indent instead of tab characters -set autoindent " copies indent from current line -set smarttab " should not matter if ts, sts and sw are all the same -set backspace=indent,eol,start " lets you backspace over anything - -" key timeout values -set esckeys " allow to be registered instantly -set timeoutlen=1000 " keymap timeout value (1 second in ms) -set ttimeoutlen=20 " time out for keycodes (20ms) - -" allow syntax and filetype plugins -syntax enable -filetype plugin indent on -runtime macros/matchit.vim - -" keybinds -"---------- -let mapleader = " " -nnoremap l :set list! -nnoremap t2 :set ts=2 sts=2 sw=2 expandtab -nnoremap t4 :set ts=4 sts=4 sw=4 expandtab -nnoremap t4t :set ts=4 sts=4 sw=4 noexpandtab - -" autocmds -"--------- -augroup general - autocmd! - "keep equal proportions when windows resized - autocmd VimResized * wincmd = - "save cursor position in a file - autocmd BufReadPost * if line("'\"") > 1 && line("'\"") - \ <= line("$") | exe "normal! g'\"" | endif -augroup END - -augroup languages - autocmd! - autocmd BufNewFile,BufRead *.bash set syntax=sh - autocmd FileType python xnoremap r :'<,'>:w !python3 - autocmd FileType go setlocal noexpandtab ts=4 sts=4 sw=4 - autocmd FileType html :syntax sync fromstart - autocmd FileType html,javascript,css,json,yaml,sh - \ setlocal ts=2 sts=2 sw=2 expandtab -augroup END - -if filereadable(expand("~/.local/.vimrc")) - source ~/.local/.vimrc -endif diff --git a/config/vim/.vim/vimrc.plugins b/config/vim/.vim/vimrc.plugins deleted file mode 100644 index e6d8b7b..0000000 --- a/config/vim/.vim/vimrc.plugins +++ /dev/null @@ -1,577 +0,0 @@ -"__ _(_)_ __ ___ _ __ ___ " -"\ \ / / | '_ ` _ \| '__/ __|" -" \ V /| | | | | | | | | (__ " -" \_/ |_|_| |_| |_|_| \___|" - -"================ -"General Settings -"================ -"{{{ -"source system defaults -if filereadable(expand('$VIMRUNTIME/defaults.vim')) - unlet! g:skip_defaults_vim - source $VIMRUNTIME/defaults.vim -endif - -"encoding/format -set encoding=utf-8 -set fileformats=unix,dos,mac - -"tab/indent -set tabstop=4 -set softtabstop=4 -set shiftwidth=4 -set expandtab -set autoindent - -"status bar -set showcmd -set wildmenu -set ruler -set laststatus=2 - -"search -set incsearch -set hlsearch -set ignorecase -set smartcase - -"file/buffer -set autoread -set autowrite -set confirm - -"cursor behaviour -set virtualedit=block -set backspace=indent,eol,start -set scrolloff=2 -set sidescrolloff=4 - -"window behaviour (ltr) -set splitbelow -set splitright - -"input/timeout -set esckeys -set timeoutlen=1000 "for mappings -set ttimeoutlen=20 "for keycodes - -"drawing -set lazyredraw -set regexpengine=1 -set redrawtime=10000 - -"display -set background=dark -set number -set wrap -set foldmethod=marker -set listchars=tab:→\ ,extends:›,precedes:‹,nbsp:·,space:·,trail:·,eol:¬ -" set list - -"syntax/filetype/matchit -syntax on -filetype plugin indent on -runtime macros/matchit.vim - -"os/gui dependent settings -"--------------- -if has('win32') - let &runtimepath.=",$HOME/.vim" -endif - -if has("gui_running") - set guioptions -=m - set guioptions -=T - if has("gui_gtk2") - set guifont=Inconsolata\ 12 - elseif has("gui_macvim") - set guifont=Menlo\ Regular:h14 - elseif has("gui_win32") - set guifont=Consolas:h10 - " set guifont=Cascadia\ Code:h10 - - "start full-screened - augroup WINGUI - autocmd! GUIEnter * simalt ~x - augroup END - endif -endif - -"file cleanup -"------------ -"swap -let mySwapDir = expand("$HOME/.vim/.swap") -if !isdirectory(mySwapDir) - silent! call mkdir(mySwapDir, "p") -endif -let &directory=mySwapDir - -"undo -if has('persistent_undo') - let myUndoDir = expand("$HOME/.vim/.undo") - if !isdirectory(myUndoDir) - silent! call mkdir(myUndoDir, "p") - endif - let &undodir=myUndoDir - set undofile -endif - -"backup -if has('writebackup') - let myBackupDir = expand("$HOME/.vim/.backup") - if !isdirectory(myBackupDir) - silent! call mkdir(myBackupDir, "p") - endif - let &backupdir=myBackupDir - set backup -endif -"}}} - -"======== -"Keybinds -"======== -"{{{ -"leader key -let mapleader=' ' - -"---------------- -"regular keybinds -"---------------- - -"paste and search -nnoremap :noh :let @/ = "" -nnoremap i :set invpaste - -"toggles -nnoremap lb :call ToggleLineBreak() -nnoremap wr :call ToggleWrap() -nnoremap cc :call ToggleColorColumn() - -"dates -nnoremap ts "=strftime("%F %T%z") -nnoremap dt :r !date - -"rc files -nnoremap rc :vsplit $MYVIMRC -nnoremap so :source $MYVIMRC -nnoremap rcl :vsplit ~/.config/vimrc -nnoremap rcft :vsplit $HOME/.vim/after/ftplugin/ - -"windows -nnoremap cl :close - -"formatting tools -nnoremap =j :%!python -m json.tool - -"abbrevations -inoreabbrev #!! "#!/usr/bin/env" - -"--------------- -"plugin keybinds -"--------------- - -"netrw -nnoremap e :call ToggleNetrw() - -"vim-plug -nnoremap pi :source $MYVIMRC :PlugInstall -nnoremap pu :source $MYVIMRC :PlugUpdate -nnoremap pc :source $MYVIMRC :PlugClean - -"openbrowser -nnoremap ob :OpenBrowser -nnoremap obs :OpenBrowserSearch -nmap gx (openbrowser-smart-search) -vmap gx (openbrowser-smart-search) - -"ale -nnoremap at :ALEToggle -nmap af (ale_fix) -nmap aK (ale_hover) -nmap an (ale_next_wrap) -nmap ap (ale_previous_wrap) - -"lsp -function! s:on_lsp_buffer_enabled() abort - setlocal omnifunc=lsp#complete - setlocal signcolumn=yes - if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif - nmap gd (lsp-definition) - nmap gs (lsp-document-symbol-search) - nmap gS (lsp-workspace-symbol-search) - nmap gr (lsp-references) - nmap gi (lsp-implementation) - nmap gt (lsp-type-definition) - nmap [g (lsp-previous-diagnostic) - nmap ]g (lsp-next-diagnostic) - nmap gp (lsp-previous-diagnostic) - nmap gn (lsp-next-diagnostic) - nmap K (lsp-hover) - - nmap pdf (lsp-peek-definition) - nmap pdc (lsp-peek-declaration) - nmap pdi (lsp-peek-implementation) - nmap ca (lsp-code-action) - nmap cl (lsp-code-lens) - nmap rn (lsp-rename) - nmap ls (lsp-status) - nmap lt (lsp-stop-server) - nmap di (lsp-document-diagnostics) - nmap df (lsp-document-format) - - inoremap lsp#scroll(+4) - inoremap lsp#scroll(-4) - - " highlight lspReference ctermfg=red guifg=red ctermbg=green guibg=green - - " refer to doc to add more commands - " https://github.com/prabirshrestha/vim-lsp#supported-commands -endfunction - - -"vim-emmet -let g:user_emmet_leader_key = '' - -"git-gutter -nnoremap ggt :GitGutterToggle - -"vim-fugitive -nnoremap gw :Gwrite -nnoremap gl :Glog -nnoremap gs :Git -nnoremap gd :Gdiffsplit -nnoremap gp :Gpush -nnoremap ga :Git add % -nnoremap ga. :Git add . -nnoremap gc :Git commit - -"fzf -nnoremap f :GitFiles -nnoremap F :Files -nnoremap c :Commands -nnoremap b :Buffers -nnoremap h :Helptags -nnoremap m :Maps -nnoremap rg :Rg -"}}} - -"================== -"Plugins (vim-plug) -"================== -"{{{ -"vim-plug paths -let plugDir = expand("$HOME/.vim/autoload/plug.vim") -let pluginDir = expand("$HOME/.vim/plugged") -let plugRemote = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" - -"ensure vim-plug is installed on VimEnter -if empty(glob(plugDir)) - silent execute "!curl -fLo " . shellescape(expand(plugDir)) . " --create-dirs " . shellescape(plugRemote) - autocmd VimEnter * PlugInstall --sync | source $MYVIMRC -endif - -"pre plugin settings -"------------------- -"(none for now) - -"load plugins -"------------ -call plug#begin(pluginDir) - Plug 'junegunn/vim-plug' - - " ==== quality of life ==== - "normal mode keybinds - Plug 'tpope/vim-commentary' - Plug 'tpope/vim-surround' - Plug 'tpope/vim-unimpaired' - "command mode keybinds - Plug 'tpope/vim-rsi' - Plug 'tpope/vim-eunuch' - Plug 'tpope/vim-repeat' - - " ==== external tools ==== - "git - Plug 'tpope/vim-fugitive' - Plug 'tpope/vim-rhubarb' - Plug 'tpope/vim-dispatch' - Plug 'airblade/vim-gitgutter' - "fzf - Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } - Plug 'junegunn/fzf.vim' - "browser plugins - Plug 'tyru/open-browser.vim' - Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} - "REPLs - " Plug 'jpalardy/vim-slime' - - " ==== specific language support ==== - "go - Plug 'fatih/vim-go' - "ruby - Plug 'vim-ruby/vim-ruby' - "html - Plug 'mattn/emmet-vim' - "markdown - Plug 'plasticboy/vim-markdown' - Plug 'godlygeek/tabular' - "toml - Plug 'cespare/vim-toml' - "sol - Plug 'tomlion/vim-solidity' - - " ==== general language support ==== - "linting and lsp - Plug 'dense-analysis/ale' - Plug 'prabirshrestha/vim-lsp' - Plug 'mattn/vim-lsp-settings' - - " ==== misc editor plugins ==== - Plug 'editorconfig/editorconfig-vim' - Plug 'flazz/vim-colorschemes' -call plug#end() - -"post plugin settings -"-------------------- -"netrw -let g:netrw_banner = 0 -let g:netrw_winsize = 24 -let g:netrw_liststyle = 3 -let g:netrw_preview = 1 -let g:netrw_alto = 0 -let g:netrw_usetab = 1 -let g:netrw_browsex_viewer = "xdg-open" -let g:NetrwIsOpen = 0 "for toggle function -let g:netrw_nogx = 1 - -"ale -let g:ale_linters = { -\ 'python': ['flake8', 'pylint'], -\ 'javascript': ['eslint'], -\ 'ruby': ['rubocop'], -\ 'markdown': ['mdl', 'write-good'] -\} - -let g:ale_fixers = { -\ '*': ['remove_trailing_lines', 'trim_whitespace'], -\ 'python': ['yapf', 'black'], -\ 'javascript': ['prettier', 'eslint'], -\ 'ruby': ['rubocop'], -\ 'css': ['prettier'], -\ 'scss': ['prettier'], -\ 'html': ['prettier'], -\ 'markdown': ['prettier'], -\ 'yaml': ['prettier'], -\ 'json': ['prettier'] -\} - -let g:ale_sign_error = 'W>' -let g:ale_sign_warning = 'E>' -let g:ale_lint_on_save = 1 -let g:ale_fix_on_save_ignore = 1 -highlight clear SignColumn - -"vim-lsp -let g:lsp_format_sync_timeout = 1000 -let g:lsp_diagnostics_enabled = 0 -let g:lsp_document_highlight_enabled = 0 -let g:lsp_settings_enable_suggestions = 0 - -"vim-lsp-settings specific configs -" let g:lsp_settings = { -" \ 'pyls-all': { -" \ 'workspace_config': { -" \ 'pyls': { -" \ 'configurationSources': ['flake8'] -" \ } -" \ } -" \ } -" \} - -" let g:lsp_settings_filetype_python = ['pyls-all', 'pyright-langserver', 'jedi-language-server'] - -"vim-markdown -let g:vim_markdown_folding_disabled = 1 -let g:vim_markdown_toc_autofit = 1 -let g:vim_markdown_conceal = 0 -let g:vim_markdown_frontmatter = 1 - - -"vim-slime -let g:slime_target = "tmux" -let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"} -" let g:slime_default_config = {"socket_name": "default", "target_pane": "{last}"} - -"}}} - -"======== -"Commands -"======== -"{{{ -"common typos and abbreviations -cnoremap w!! w !sudo tee % > /dev/null -command! W w !sudo tee % > /dev/null -command! Q q -command! WQ wq -command! Q1 q! - -"useful shortcut commands -command! Trim %s/\s\+$// -"}}} - -"========= -"Functions -"========= -"{{{ -"toggle functions -"---------------- -function! ToggleColorColumn() - if &cc == '' - set cc=80 - else - set cc= - endif -endfunction - -function! ToggleLineBreak() - if &lbr == '' - set fo+=t "Autowraps text with textwidth - set fo-=l "Wraps long lines in --insert-- mode - set lbr - else - set fo-=t - set fo+=l - set lbr! - endif -endfunction - -function! ToggleWrap() - if &wrap == '' - set wrap - else - set nowrap - endif -endfunction - -function! ToggleNetrw() "make netrw toggleable - if g:NetrwIsOpen - let i = bufnr("$") - while (i >= 1) - if (getbufvar(i, "&filetype") == "netrw") - silent exe "bwipeout " . i - endif - let i-=1 - endwhile - let g:NetrwIsOpen=0 - else - let g:NetrwIsOpen=1 - silent Lexplore - endif -endfunction -"}}} - -"============ -"Autocommands -"============ -"{{{ -if has("autocmd") - "language specific filetype functions (run by autocmds) - "------------------ - function FT_python() - setlocal autoindent - setlocal formatprg=yapf - iabbr false False - iabbr true True - - xnoremap r :'<,'>:w !python3 - endfunction - - function FT_ruby() - setlocal autoindent - setlocal formatprg=rubocop - endfunction - - function FT_go() - set noexpandtab - setlocal formatprg=gofmt - let g:go_auto_type_info = 1 - let g:go_imports_autosave = 1 - endfunction - - function FT_html() - syntax sync fromstart - endfunction - - function FT_markdown() - setlocal spell - endfunction - - function FT_halftab() - setlocal tabstop=2 softtabstop=2 shiftwidth=2 expandtab - endfunction - - "language specific autocmds - "-------------------------- - augroup language_ft_group - autocmd! - autocmd FileType python call FT_python() - autocmd FileType ruby,eruby call FT_ruby() - autocmd FileType go call FT_go() - autocmd FileType html call FT_html() - autocmd FileType markdown call FT_markdown() - autocmd FileType sh,ruby,bash,html,css,scss,javascript,json,toml,yaml call FT_halftab() - autocmd BufNewFile,BufRead *html*,*css*,*js* EmmetInstall - augroup END - - "lsp autocmds - "------------ - augroup lsp_install - autocmd! - autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() - augroup END - - augroup lsp_ft_group - autocmd! - " autoformat with LSP - " autocmd BufWritePre *.rs call execute('LspDocumentFormatSync') - augroup END - - "global autocmds - "----------------- - augroup global - autocmd! - "keep equal proportions when windows resized - autocmd VimResized * wincmd = - "save cursor position in a file - autocmd BufReadPost * if line("'\"") > 1 && line("'\"") - \ <= line("$") | exe "normal! g'\"" | endif - augroup END -endif -"}}} - -"============== -"Local settings -"============== -"{{{ -"source local vimrc -if filereadable(expand("~/.local/.vimrc")) - source ~/.local/.vimrc -endif -"}}} - -"colorschemes -" {{{ -" colorscheme 1989 -" colorscheme PaperColor -" colorscheme gruvbox -" colorscheme jellybeans -" colorscheme molokai -" colorscheme Benokai -" colorscheme Monokai -" colorscheme badwolf -" colorscheme wombat256 -" colorscheme yuejiu -" colorscheme wargrey -" colorscheme Tomorrow-Night-Bright -" colorscheme monokai-phoenix -" }}}