diff --git a/.vim/after/plugin/fzf.vim b/.vim/after/plugin/fzf.vim new file mode 100644 index 0000000..4ef7dd0 --- /dev/null +++ b/.vim/after/plugin/fzf.vim @@ -0,0 +1,18 @@ +" FZF +nn :FZF +nn p :FZF +nn b :Buffers +nn h :History +let g:fzf_action = { + \ 'ctrl-t': 'tab split', + \ 'ctrl-s': 'split', + \ 'ctrl-v': 'vsplit' + \} + +" Insert path completion +" ino fzf#vim#complete#path('ag -l -g *.md') +" ino (fzf-complete-file-ag) +ino fzf#vim#complete#path("ag -l -g '' \| sed -e 's/\.md$//'") +" Use `the_silver_searcher` to find results (for selection if selection) +nn f :Ag +vm f :Ag " diff --git a/.vim/after/plugin/quickscope.vim b/.vim/after/plugin/quickscope.vim new file mode 100644 index 0000000..6d22a94 --- /dev/null +++ b/.vim/after/plugin/quickscope.vim @@ -0,0 +1,2 @@ +let g:qs_max_chars=80 +let g:qs_lazy_highlight = 1 diff --git a/.vim/after/plugin/taskwiki.vim b/.vim/after/plugin/taskwiki.vim new file mode 100644 index 0000000..98ba633 --- /dev/null +++ b/.vim/after/plugin/taskwiki.vim @@ -0,0 +1,4 @@ +let g:taskwiki_taskrc_location='/home/h/.config/task/taskrc' +let g:taskwiki_disable_concealcursor=1 +let g:taskwiki_dont_preserve_folds=1 +let g:taskwiki_dont_fold=1 diff --git a/.vim/after/plugin/vim-commentary.vim b/.vim/after/plugin/vim-commentary.vim deleted file mode 100644 index bcd5a32..0000000 --- a/.vim/after/plugin/vim-commentary.vim +++ /dev/null @@ -1,3 +0,0 @@ -xm c Commentary -nm c Commentary -nm cc CommentaryLine diff --git a/.vim/after/plugin/vim-javascript.vim b/.vim/after/plugin/vim-javascript.vim new file mode 100644 index 0000000..b74903e --- /dev/null +++ b/.vim/after/plugin/vim-javascript.vim @@ -0,0 +1,6 @@ +let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting +let g:javascript_plugin_flow = 1 " flow syntax highlighting +let g:javascript_conceal_function = "ƒ" +let g:javascript_conceal_return = "⇖" +let g:svelte_indent_script = 0 +let g:svelte_indent_style = 0 diff --git a/.vim/after/plugin/vim-tidal.vim b/.vim/after/plugin/vim-tidal.vim new file mode 100644 index 0000000..0705fa8 --- /dev/null +++ b/.vim/after/plugin/vim-tidal.vim @@ -0,0 +1,14 @@ +" Tidalcycles (sclang and vim-tidal) +let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"} +let g:tidal_no_mappings = 1 + +au FileType tidal nm ep TidalParagraphSend +au FileType tidal nm ee TidalLineSend +au FileType tidal nnoremap h :TidalHush +au FileType tidal com! -nargs=1 S :TidalSilence +au FileType tidal com! -nargs=1 P :TidalPlay +au FileType tidal com! -nargs=0 H :TidalHush + +" SuperCollider +au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider +au Filetype supercollider packadd scvim diff --git a/.vim/after/plugin/vimtex.vim b/.vim/after/plugin/vimtex.vim new file mode 100644 index 0000000..4bfb858 --- /dev/null +++ b/.vim/after/plugin/vimtex.vim @@ -0,0 +1,4 @@ +let g:vimtex_view_method='zathura' +let g:tex_flavor='latex' +let g:tex_conceal='abdmgs' +let g:vimtex_quickfix_mode=0 diff --git a/.vim/ftplugin/javascript.vim b/.vim/ftplugin/javascript.vim new file mode 100644 index 0000000..c4582b6 --- /dev/null +++ b/.vim/ftplugin/javascript.vim @@ -0,0 +1 @@ +set mps+==:; diff --git a/.vim/init/base.vim b/.vim/init/base.vim new file mode 100644 index 0000000..b96b18b --- /dev/null +++ b/.vim/init/base.vim @@ -0,0 +1,33 @@ +" General config {{{ +" +" Tip: acronyms for overview, use `:h` for a quick lookup. + +set nocp " Disable vi incompatibility +filetype plugin indent on " Filetype recognition +set enc=utf8 " Default to UTF-8 encoding +set hid " Allow hiding unsaved buffers +set tf " Fast tty +set ut=300 " 300ms for update time +set to tm=200 ttm=5 " Timeouts +set shm+=c " ... +set ul=500 hi=500 " History and undo +set nu rnu scl=number " Line numbers & signs +set nowrap +set bs=indent,eol,start " Indentation +set ai ts=2 sts=2 sw=2 et " Indentation +set is ic scs hls " Search +set lz " Only essential redraws +set nobk nowb noswf " No backups +set vi='20,\"101 " Max 100 lines in registers +set novb " Bell +set cole=0 cocu="" " Conceal +set cb=unnamedplus " Clipboard +set fcs+=vert:│ " Cleaner split separator (tmux style) +set list +set lcs=trail:·,tab:→\ ,nbsp:␣ " Whitespace rendering +set ar " Autoread +set spellsuggest+=5 " Limit spell suggestions +set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip +set thesaurus+=~/.vim/thesaurus/mthesaur.txt + +" }}} diff --git a/.vim/init/colors.vim b/.vim/init/colors.vim new file mode 100644 index 0000000..b025225 --- /dev/null +++ b/.vim/init/colors.vim @@ -0,0 +1,3 @@ +set termguicolors +set bg=light +hi Normal ctermbg=none guibg=NONE diff --git a/.vim/init/mappings.vim b/.vim/init/mappings.vim new file mode 100644 index 0000000..1c85b8c --- /dev/null +++ b/.vim/init/mappings.vim @@ -0,0 +1,44 @@ +" Leader keys +let mapleader = " " +let maplocalleader = ";" + +" Splits & navigation +nm s " Split horizontal +nm ss :spw| " Split horizontal +nm sv :vsw| " Split vertical +nn sw w| " Navigate splits +nn sh h| " +nn sj j| " +nn sk k| " +nn sl l| " +nn sH 8<| " Resize splits +nn sJ 8-| " +nn sK 8+| " +nn sL 8>| " +nn s= =| " Equalize splits + +" Open +nn sb :Lex| " File tree +nn :noh |" +nn t :term| " Open terminal + +" Remaps +ino jj | " Normal now +nn | " Hard mode +nn | " " +nn | " " +nn | " " +ino | " " +ino | " " +ino | " " +ino | " " + +" Search +nn :noh| " map 'ctrl + /' + +" Line numbers +nn n :set nu! rnu! + +" Vim configuration +nn ec :vs $MYVIMRC +nn so :so % diff --git a/.vim/init/plugins.vim b/.vim/init/plugins.vim new file mode 100644 index 0000000..2c83856 --- /dev/null +++ b/.vim/init/plugins.vim @@ -0,0 +1,49 @@ +" Plugins {{{ + +" Plug setup {{{ + +call plug#begin() +Plug 'unblevable/quick-scope' +Plug 'tpope/vim-commentary' +Plug 'tpope/vim-obsession' +Plug 'machakann/vim-sandwich' +Plug 'neoclide/coc.nvim', {'branch': 'release'} +Plug 'github/copilot.vim' +Plug 'Shougo/context_filetype.vim' +Plug 'editorconfig/editorconfig-vim' +Plug 'honza/vim-snippets' +Plug 'chrisbra/unicode.vim' +Plug 'ap/vim-css-color' +" Fzf +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +" JS and TypeScript +Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] } +Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] } +Plug 'peitalin/vim-jsx-typescript', { 'for': ['typescript.tsx'] } +Plug 'evanleck/vim-svelte', {'branch': 'main'} +" JSON with comments +Plug 'neoclide/jsonc.vim' +" Jupyter +Plug 'quarto-dev/quarto-vim' +" LaTeX +Plug 'lervag/vimtex' +" Wiki +Plug 'lervag/wiki.vim' +Plug 'hektor/taskwiki' +" Markdown +Plug 'vim-pandoc/vim-pandoc' +Plug 'vim-pandoc/vim-pandoc-syntax' +Plug 'ferrine/md-img-paste.vim' +" TidalCycles +Plug 'supercollider/scvim' +Plug 'tidalcycles/vim-tidal' +" GLSL +Plug 'tikhomirov/vim-glsl' +Plug 'timtro/glslView-nvim' +" Jupyter notebooks +Plug 'goerz/jupytext.vim' +" OpenSCAD +Plug 'sirtaj/vim-openscad' +call plug#end() +" }}} diff --git a/.vimrc b/.vimrc index ef58ae1..c427b07 100644 --- a/.vimrc +++ b/.vimrc @@ -1,225 +1,7 @@ -" General config {{{ -" -" Tip: acronyms for overview, use `:h` for a quick lookup. +source .vim/init/base.vim +source .vim/init/mappings.vim -set nocp " Disable vi incompatibility -filetype plugin indent on " Filetype recognition -set enc=utf8 " Default to UTF-8 encoding -set hid " Allow hiding unsaved buffers -set tf " Fast tty -set ut=300 " 300ms for update time -set to tm=200 ttm=5 " Timeouts -set shm+=c " ... -set ul=500 hi=500 " History and undo -set nu rnu scl=number " Line numbers & signs -set nowrap -set bs=indent,eol,start " Indentation -set ai ts=2 sts=2 sw=2 et " Indentation -set is ic scs hls " Search -set lz " Only essential redraws -set nobk nowb noswf " No backups -set vi='20,\"101 " Max 100 lines in registers -set novb " Bell -set cole=0 cocu="" " Conceal -set cb=unnamedplus " Clipboard -set fcs+=vert:│ " Cleaner split separator (tmux style) -set list -set lcs=trail:·,tab:→\ ,nbsp:␣ " Whitespace rendering -set ar " Autoread -set spellsuggest+=5 " Limit spell suggestions -set wildignore+=*/node_modules/*,*/tmp/*,*.so,*.swp,*.zip -set thesaurus+=~/.vim/thesaurus/mthesaur.txt - -" }}} - -" Colorscheme {{{ - -set termguicolors -set bg=light -hi Normal ctermbg=none guibg=NONE - -" }}} - -" Mappings {{{ -" - -" Leader keys - -nn -let mapleader = " " -let maplocalleader = ";" - -" Splits & navigation - -nm s " Split horizontal -nm ss :spw| " Split horizontal -nm sv :vsw| " Split vertical -nn sw w| " Navigate splits -nn sh h| " -nn sj j| " -nn sk k| " -nn sl l| " -nn sH 8<| " Resize splits -nn sJ 8-| " -nn sK 8+| " -nn sL 8>| " -nn s= =| " Equalize splits - -" Open - -nn sb :Lex| " File tree -nn :noh |" -nn t :term| " Open terminal -" Remaps -ino jj | " Normal now -nn | " Hard mode -nn | " " -nn | " " -nn | " " -ino | " " -ino | " " -ino | " " -ino | " " -" Search -nn :noh| " map 'ctrl + /' -" Toggle line numbers -nn n :set nu! rnu! -" Vim configuration -nn ec :vs $MYVIMRC -nn so :so % - -" }}} - -" Plugins {{{ - -" Plug setup {{{ - -call plug#begin() if !exists('g:vscode') -Plug 'neoclide/coc.nvim', {'branch': 'release'} -Plug 'github/copilot.vim' + source .vim/init/plugins.vim + source .vim/init/colors.vim endif -" General -Plug 'unblevable/quick-scope' -Plug 'Shougo/context_filetype.vim' -Plug 'tpope/vim-commentary' -Plug 'tpope/vim-obsession' -Plug 'machakann/vim-sandwich' -Plug 'editorconfig/editorconfig-vim' -Plug 'honza/vim-snippets' -Plug 'chrisbra/unicode.vim' -Plug 'ap/vim-css-color' -" Fzf -Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } -Plug 'junegunn/fzf.vim' -" JS and TypeScript -Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] } -Plug 'leafgarland/typescript-vim', { 'for': ['typescript', 'typescript.tsx'] } -Plug 'peitalin/vim-jsx-typescript', { 'for': ['typescript.tsx'] } -Plug 'evanleck/vim-svelte', {'branch': 'main'} -" JSON with comments -Plug 'neoclide/jsonc.vim' -" Jupyter -Plug 'quarto-dev/quarto-vim' -" LaTeX -Plug 'lervag/vimtex' -" Wiki -Plug 'lervag/wiki.vim' -Plug 'hektor/taskwiki' -" Markdown -Plug 'vim-pandoc/vim-pandoc' -Plug 'vim-pandoc/vim-pandoc-syntax' -Plug 'ferrine/md-img-paste.vim' -" TidalCycles -Plug 'supercollider/scvim' -Plug 'tidalcycles/vim-tidal' -" GLSL -Plug 'tikhomirov/vim-glsl' -Plug 'timtro/glslView-nvim' -" Jupyter notebooks -Plug 'goerz/jupytext.vim' -" OpenSCAD -Plug 'sirtaj/vim-openscad' -call plug#end() -" }}} - -" `.../vimtex` {{{ - -let g:vimtex_view_method='zathura' -let g:tex_flavor='latex' -let g:tex_conceal='abdmgs' -let g:vimtex_quickfix_mode=0 - -" }}} - -" `junegunn/fzf` {{{ -" `junegunn/fzf.vim` - -" FZF -nn :FZF -nn p :FZF -nn b :Buffers -nn h :History -let g:fzf_action = { - \ 'ctrl-t': 'tab split', - \ 'ctrl-s': 'split', - \ 'ctrl-v': 'vsplit' - \} - -" Insert path completion -" ino fzf#vim#complete#path('ag -l -g *.md') -" ino (fzf-complete-file-ag) -ino fzf#vim#complete#path("ag -l -g '' \| sed -e 's/\.md$//'") -" Use `the_silver_searcher` to find results (for selection if selection) -nn f :Ag -vm f :Ag " - -" }}} - - - -" }}} - -" `tools-life/taskwiki` {{{ - -let g:taskwiki_taskrc_location='/home/h/.config/task/taskrc' -let g:taskwiki_disable_concealcursor=1 -let g:taskwiki_dont_preserve_folds=1 -let g:taskwiki_dont_fold=1 - -" }}} - -" `pangloss/vim-javascript` {{{ - -let g:javascript_plugin_jsdoc = 1 " jsdoc syntax highlighting -let g:javascript_plugin_flow = 1 " flow syntax highlighting -let g:javascript_conceal_function = "ƒ" -let g:javascript_conceal_return = "⇖" -let g:svelte_indent_script = 0 -let g:svelte_indent_style = 0 - -" }}} - -" `.../quickscope` {{{ - -let g:qs_max_chars=80 -let g:qs_lazy_highlight = 1 - -" }}} - -" Tidalcycles (sclang and vim-tidal) -let g:tidal_default_config = {"socket_name": "default", "target_pane": "tidal:1.1"} -let g:tidal_no_mappings = 1 - -au FileType tidal nm ep TidalParagraphSend -au FileType tidal nm ee TidalLineSend -au FileType tidal nnoremap h :TidalHush -au FileType tidal com! -nargs=1 S :TidalSilence -au FileType tidal com! -nargs=1 P :TidalPlay -au FileType tidal com! -nargs=0 H :TidalHush - -" SuperCollider -au BufEnter,BufWinEnter,BufNewFile,BufRead *.sc,*.scd se filetype=supercollider -au Filetype supercollider packadd scvim - -" }}}