From dfb6ded7793675227c2ab923a2340a9565e78447 Mon Sep 17 00:00:00 2001 From: _Tradam Date: Mon, 28 Mar 2022 01:40:09 -0400 Subject: . --- init.vim | 331 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vimrc | 321 ------------------------------------------------------------- 2 files changed, 331 insertions(+), 321 deletions(-) create mode 100644 init.vim delete mode 100644 vimrc diff --git a/init.vim b/init.vim new file mode 100644 index 0000000..b1aa0b1 --- /dev/null +++ b/init.vim @@ -0,0 +1,331 @@ +" When creating a custom .vimrc we need to re-enable the defaults +"unlet! skip_defaults_vim +"source $VIMRUNTIME/defaults.vim + +" Set utf-8 encoding early to prevent issues later on +set encoding=utf-8 +set fileencoding=utf-8 + +" ----- CUSTOM CONFIGURATION DIRECTORY ----- " +" If you don't care about changing the vim config directory then you can +" safely ignore this section + +" If you wish to use .config/vim directory instead make sure to add the +" following to your .bashrc: +" export VIMINIT="source ~/.config/vim/vimrc" +" and place this vimrc into `~/.config/vim/vimrc`. +" Otherwise Vim will configure itself automatically using default directories +" NOTE: NVim will also listen to this environment variable so remove it if you +" switch to nvim +if !has('nvim') + if "source ~/.config/vim/vimrc" == $VIMINIT + " Where to check for vimplug later on + let g:vimplug_dir = "~/.config/vim/autoload/plug.vim" + " Used for moving .vim into .config/vim + set viminfo+=n~/.config/vim/viminfo + " Create new runtime paths to .config/vim and enforce order + let rtp=&runtimepath + set runtimepath=~/.config/vim + let &runtimepath.=','.rtp.',~/.config/vim/after' + " Move .viminfo files to .config/vim as well + set viminfo+=n~/.config/vim/viminfo + " Write view files to .config/vim + set viewdir=~/.config/vim/view + else + " Where to check for vimplug later on + let g:vimplug_dir = "~/.vim/autoload/plug.vim" + endif +else + let g:vimplug_dir = "~/.config/nvim/autoload/plug.vim" +endif + +" ----- VANILLA CONFIG ----- " + +" -- CUSTOM SHORTCUTS -- " + +" Space is used as the 'modifier'/'leader' key +let mapleader = " " + +" For switching/opening buffers: +nnoremap e :e **/* + +" For switching buffers next/previous: +nnoremap :bn +nnoremap :bp + +" For cycling windows or jump to window: +" removed because conflicted with vimwiki bindings +" nnoremap w +" nnoremap w + +" Moving a line to a different spot +" Dont really use this and not sure what to map it to +" nnoremap k :m .-2== +" nnoremap j :m .+1== +" inoremap j :m .+1==gi +" inoremap k :m .-2==gi +" vnoremap j :m '>+1gv=gv +" vnoremap k :m '<-2gv=gv + +" No longer need to press shift to press : in normal and visual mode +nnoremap ; : +vnoremap ; : + +" `o` and `O` now only adds new line without going into insert mode +" TODO: broken in vimwiki +nnoremap o o +nnoremap O O + +" -- CUSTOM COMMANDS -- " +" Toggle spell check +let g:spellcheck_is_enabled = 0 +function! ToggleSpellCheck() + if g:spellcheck_is_enabled + let g:spellcheck_is_enabled = 0 + set nospell + set statusline=Spell\ Check\ Disabled + else + let g:spellcheck_is_enabled = 1 + set spell spelllang=en_ca + set statusline=Spell\ Check\ Enabled + endif +endfunction +command ToggleSpellCheck call ToggleSpellCheck() +" Enable Spellcheck automatically for relevant files +function! EnableSpellCheck() + let g:spellcheck_is_enabled = 1 + set spell spelllang=en_ca +endfunction +augroup enable_spellcheck_when_relevant + autocmd! + autocmd VimEnter,BufNewFile,BufRead *.md,*.mdown,*.tex, + \*.txt,*.wiki call EnableSpellCheck() +augroup END + +" Toggle Autoindenting Code on filesave +nnoremap g= :let b:PlugView=winsaveview()gg=G:call winrestview(b:PlugView) +function! ToggleAutoIndent() + if !exists('#autoindent_on_save#BufWritePre') + augroup autoindent_on_save + autocmd! + autocmd BufWritePre * :normal g= + set statusline=AutoIndent\ Enabled + augroup END + else + augroup autoindent_on_save + autocmd! + set statusline=AutoIndent\ Disabled + augroup END + endif +endfunction +command ToggleAutoIndent call ToggleAutoIndent() +"call ToggleAutoIndent() +" Remove autoindentation if you open a regular text file +" TODO: doesn't work for some reason +"function! DisableAutoIndent() +" augroup autoindent_on_save +" autocmd! +" set statusline=AutoIndent\ Disabled +" augroup END +"endfunction +"augroup remove_indent_text_files +" autocmd! +" autocmd VimEnter,BufNewFile,BufRead *.md,*.mdown, " *.tex, +" \*.txt,*.wiki call DisableAutoIndent() +"augroup END + +" -- OTHER -- " + +" Setting tab size +"set tabstop=3 +"set shiftwidth=3 +"set softtabstop=3 +set tabstop=4 +set shiftwidth=4 +set softtabstop=4 +"set expandtab + +" Show relative line numbers on sidebar +set nu +set relativenumber + +" Always shows at least 2 lines around the cursor +set scrolloff=2 + +" Makes `set list` visually more clear to show invisible chars +set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:‗ + +" Vim clipboard and System clipboard are shared +" (Requires vim to be compiled to support this to work) +" (On Arch this means you need GVim installed) +set clipboard=unnamedplus + +" Wrap to different line when reaching end or beginning of a line +set whichwrap=b,s,<,>,[,] + +" Keep indent when line wraps +set breakindent +set showbreak=\ \ · + +" Don't split words when wrapping +set linebreak + +" Faster Drawing +set ttyfast + +" Enable folding of code according to the syntax of the language +set foldmethod=syntax +" alternative: :set foldmethod=indent + +" Remember folds when switching buffers +augroup remember_folds + autocmd! + "autocmd BufLeave,BufWinLeave ?* mkview | filetype detect + "autocmd BufReadPost ?* silent! loadview | filetype detect + autocmd BufWinLeave ?* mkview + autocmd BufWinEnter ?* silent! loadview +augroup END + + +" Prefer to split below +set splitbelow + +" Enables undercurl and easier to read terminal +" set termguicolors + +" NVim Specific Configuration +if has('nvim') + " Allows using mouse to resize window borders + set mouse+=a +endif + +" ----- PLUGIN INITIALIZATION ----- " + +" Install VimPlug if it isn't installed +" It will also install all the plugins in this case +if !has('nvim') + if empty(glob(g:vimplug_dir)) + if "source ~/.config/vim/vimrc" == $VIMINIT + silent !curl -fLo ~/.config/vim/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + else + silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + endif + autocmd VimEnter * PlugInstall --sync + endif +else + if empty(glob(g:vimplug_dir)) + silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs + \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim + autocmd VimEnter * PlugInstall --sync + endif +endif + +" Start of adding Vim plugins +if !has('nvim') + if "source ~/.config/vim/vimrc" == $VIMINIT + call plug#begin('~/.config/vim/plugged') + else + call plug#begin('~/.vim/plugged') + endif +else + call plug#begin('~/.config/nvim/plugged') +endif +" Airline UI for top and bottom bars +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' +" Execute Projects and Terminal commands asynchronously +"Plug 'skywind3000/asyncrun.vim' +" Searches for custom .vimrc files for specific projects +"Plug 'krisajenkins/vim-projectlocal' +" Code Completion +"Plug 'neoclide/coc.nvim', {'branch': 'release'} +" Markdown Preview +Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, + \'for': ['markdown', 'vim-plug']} +" Latex Compiling and Preview +Plug 'lervag/vimtex' +" Vimwiki for writing down notes +"Plug 'vimwiki/vimwiki' +" Autogenerate Markdown Table of Contents +Plug 'mzlogin/vim-markdown-toc' +" Sophisticated Multi-Line Editing +Plug 'mg979/vim-visual-multi', {'branch': 'master'} + +" File Templates +Plug 'tibabit/vim-templates' + +" Fixed .vue indentation +"Plug 'leafOfTree/vim-vue-plugin' +" Fixed .svelte indentation +"Plug 'leafOfTree/vim-svelte-plugin' + +" Live Preview of HTML/CSS/JS +" outdated parser, but plugin in development +"Plug 'turbio/bracey.vim' +call plug#end() +" End of adding Vim plugins + +" ----- PLUGIN CONFIG ----- " +" The following is plugin configuration as well as +" vanilla vim settings tailored for the plugins installed + +" Search for first custom .vimrc Vim can find to load +" It does this by recursively looking up directories until it finds one +let g:projectlocal_project_markers = ['.vimrc'] +" When executing a project or terminal command +" automatically open a new Vim Window of size 7 +let g:asyncrun_open = 7 + + +" Sets Airline Theming +let g:airline_theme='distinguished' +let g:airline#extensions#tabline#enabled=1 +" Commands to change dark and light themes +command LightTheme AirlineTheme silver +command DarkTheme AirlineTheme distinguished + +" Theme Changes +" Disabled for now +" hi Pmenu ctermbg=black ctermfg=white +" hi PmenuSel guibg=yellow guifg=black +" hi Pmenu ctermbg=gray guibg=purple +" hi Folded guibg=#422552 guifg=#00dddd + +" Vimwiki configs +" change symbols used for checkboxes +let g:vimwiki_listsyms = ' ~✓' "✗○● +" Makes code completion suggestions work with vimwiki files +augroup ft_vimwiki + au! + au BufRead,BufNewFile *.wiki set filetype=vimwiki + au FileType vimwiki inoremap complete_info()['selected'] > -1 ? "\" : ":VimwikiReturn 1 5" + au FileType vimwiki inoremap complete_info()['selected'] > -1 ? "\" : ":VimwikiReturn 2 2" +augroup END + +" Coc configs +" Fix autocompletion adding a newline while in visual multi mode +augroup coc_autocomplete_newline + au! + autocmd User visual_multi_mappings imap pumvisible() ? "\" : "\(VM-I-Return)" +augroup END + +" what program should vimtex use to show live edits +" let g:vimtex_view_method = 'zathura' +let g:vimtex_view_general_viewer = 'atril' +" what flavour vimtex should use for autocomplete +let g:tex_flavor = 'latex' +" function for counting words in a latex file +function! WC() + let filename = expand("%") + let cmd = "detex " . filename . " | wc -w | perl -pe 'chomp; s/ +//;'" + let result = system(cmd) + echo result . " words" +endfunction +" the command for calling the function +command WordCount call WC() + +" Make vimwiki use Markdown +let g:vimwiki_list = [{'path': '~/vimwiki/', + \ 'syntax': 'markdown', 'ext': '.md'}] diff --git a/vimrc b/vimrc deleted file mode 100644 index 7eb5a47..0000000 --- a/vimrc +++ /dev/null @@ -1,321 +0,0 @@ -" When creating a custom .vimrc we need to re-enable the defaults -" unlet! skip_defaults_vim -" source $VIMRUNTIME/defaults.vim - -" Set utf-8 encoding early to prevent issues later on -set encoding=utf-8 -set fileencoding=utf-8 - -" ----- CUSTOM CONFIGURATION DIRECTORY ----- " -" If you don't care about changing the vim config directory then you can -" safely ignore this section - -" If you wish to use .config/vim directory instead make sure to add the -" following to your .bashrc: -" export VIMINIT="source ~/.config/vim/vimrc" -" and place this vimrc into `~/.config/vim/vimrc`. -" Otherwise Vim will configure itself automatically using default directories -" NOTE: NVim will also listen to this environment variable so remove it if you -" switch to nvim -if !has('nvim') - if "source ~/.config/vim/vimrc" == $VIMINIT - " Where to check for vimplug later on - let g:vimplug_dir = "~/.config/vim/autoload/plug.vim" - " Used for moving .vim into .config/vim - set viminfo+=n~/.config/vim/viminfo - " Create new runtime paths to .config/vim and enforce order - let rtp=&runtimepath - set runtimepath=~/.config/vim - let &runtimepath.=','.rtp.',~/.config/vim/after' - " Move .viminfo files to .config/vim as well - set viminfo+=n~/.config/vim/viminfo - " Write view files to .config/vim - set viewdir=~/.config/vim/view - else - " Where to check for vimplug later on - let g:vimplug_dir = "~/.vim/autoload/plug.vim" - endif -else - let g:vimplug_dir = "~/.config/nvim/autoload/plug.vim" -endif - -" ----- VANILLA CONFIG ----- " - -" -- CUSTOM SHORTCUTS -- " - -" Space is used as the 'modifier'/'leader' key -let mapleader = " " - -" For switching/opening buffers: -nnoremap e :e **/* - -" For switching buffers next/previous: -nnoremap :bn -nnoremap :bp - -" For cycling windows or jump to window: -" removed because conflicted with vimwiki bindings -" nnoremap w -" nnoremap w - -" Moving a line to a different spot -" Dont really use this and not sure what to map it to -" nnoremap k :m .-2== -" nnoremap j :m .+1== -" inoremap j :m .+1==gi -" inoremap k :m .-2==gi -" vnoremap j :m '>+1gv=gv -" vnoremap k :m '<-2gv=gv - -" No longer need to press shift to press : in normal and visual mode -nnoremap ; : -vnoremap ; : - -" `o` and `O` now only adds new line without going into insert mode -" TODO: broken in vimwiki -nnoremap o o -nnoremap O O - -" -- CUSTOM COMMANDS -- " -" Toggle spell check -let g:spellcheck_is_enabled = 0 -function! ToggleSpellCheck() - if g:spellcheck_is_enabled - let g:spellcheck_is_enabled = 0 - set nospell - set statusline=Spell\ Check\ Disabled - else - let g:spellcheck_is_enabled = 1 - set spell spelllang=en_ca - set statusline=Spell\ Check\ Enabled - endif -endfunction -command ToggleSpellCheck call ToggleSpellCheck() -" Enable Spellcheck automatically for relevant files -function! EnableSpellCheck() - let g:spellcheck_is_enabled = 1 - set spell spelllang=en_ca -endfunction -augroup enable_spellcheck_when_relevant - autocmd! - autocmd VimEnter,BufNewFile,BufRead *.md,*.mdown,*.tex, - \*.txt,*.wiki call EnableSpellCheck() -augroup END - -" Toggle Autoindenting Code on filesave -nnoremap g= :let b:PlugView=winsaveview()gg=G:call winrestview(b:PlugView) -function! ToggleAutoIndent() - if !exists('#autoindent_on_save#BufWritePre') - augroup autoindent_on_save - autocmd! - autocmd BufWritePre * :normal g= - set statusline=AutoIndent\ Enabled - augroup END - else - augroup autoindent_on_save - autocmd! - set statusline=AutoIndent\ Disabled - augroup END - endif -endfunction -command ToggleAutoIndent call ToggleAutoIndent() -call ToggleAutoIndent() -" Remove autoindentation if you open a regular text file -" TODO: doesn't work for some reason -function! DisableAutoIndent() - augroup autoindent_on_save - autocmd! - set statusline=AutoIndent\ Disabled - augroup END -endfunction -augroup remove_indent_text_files - autocmd! - autocmd VimEnter,BufNewFile,BufRead *.md,*.mdown, " *.tex, - \*.txt,*.wiki call DisableAutoIndent() -augroup END - -" -- OTHER -- " - -" Small tabs for a small monitor -set tabstop=2 -set shiftwidth=1 -set softtabstop=2 - -" Show relative line numbers on sidebar -set nu -set relativenumber - -" Always shows at least 2 lines around the cursor -set scrolloff=2 - -" Makes `set list` visually more clear to show invisible chars -set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:‗ - -" Vim clipboard and System clipboard are shared -" (Requires vim to be compiled to support this to work) -" (On Arch this means you need GVim installed) -set clipboard=unnamedplus - -" Wrap to different line when reaching end or beginning of a line -set whichwrap=b,s,<,>,[,] - -" Keep indent when line wraps -set breakindent -set showbreak=\ \ · - -" Don't split words when wrapping -set linebreak - -" Faster Drawing -set ttyfast - -" Enable folding of code according to the syntax of the language -set foldmethod=syntax -" alternative: :set foldmethod=indent - -" Remember folds when switching buffers -augroup remember_folds - autocmd! - autocmd BufLeave,BufWinLeave ?* mkview | filetype detect - autocmd BufReadPost ?* silent! loadview | filetype detect -augroup END - - -" Prefer to split below -set splitbelow - -" Enables undercurl and easier to read terminal -set termguicolors - -" NVim Specific Configuration -if has('nvim') - " Allows using mouse to resize window borders - set mouse+=a -endif - -" ----- PLUGIN INITIALIZATION ----- " - -" Install VimPlug if it isn't installed -" It will also install all the plugins in this case -if !has('nvim') - if empty(glob(g:vimplug_dir)) - if "source ~/.config/vim/vimrc" == $VIMINIT - silent !curl -fLo ~/.config/vim/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - else - silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - endif - autocmd VimEnter * PlugInstall --sync - endif -else - if empty(glob(g:vimplug_dir)) - silent !curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs - \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim - autocmd VimEnter * PlugInstall --sync - endif -endif - -" Start of adding Vim plugins -if !has('nvim') - if "source ~/.config/vim/vimrc" == $VIMINIT - call plug#begin('~/.config/vim/plugged') - else - call plug#begin('~/.vim/plugged') - endif -else - call plug#begin('~/.config/nvim/plugged') -endif -" Airline UI for top and bottom bars -Plug 'vim-airline/vim-airline' -Plug 'vim-airline/vim-airline-themes' -" Execute Projects and Terminal commands asynchronously -Plug 'skywind3000/asyncrun.vim' -" Searches for custom .vimrc files for specific projects -Plug 'krisajenkins/vim-projectlocal' -" Code Completion -Plug 'neoclide/coc.nvim', {'branch': 'release'} -" Markdown Preview -Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, - \'for': ['markdown', 'vim-plug']} -" Latex Compiling and Preview -Plug 'lervag/vimtex' -" Vimwiki for writing down notes -Plug 'vimwiki/vimwiki' -" Autogenerate Markdown Table of Contents -Plug 'mzlogin/vim-markdown-toc' -" Sophisticated Multi-Line Editing -Plug 'mg979/vim-visual-multi', {'branch': 'master'} - -" File Templates -Plug 'tibabit/vim-templates' - -" Fixed .vue indentation -Plug 'leafOfTree/vim-vue-plugin' - -" Live Preview of HTML/CSS/JS -" outdated parser, but plugin in development -Plug 'turbio/bracey.vim' -call plug#end() -" End of adding Vim plugins - -" ----- PLUGIN CONFIG ----- " -" The following is plugin configuration as well as -" vanilla vim settings tailored for the plugins installed - -" Search for first custom .vimrc Vim can find to load -" It does this by recursively looking up directories until it finds one -let g:projectlocal_project_markers = ['.vimrc'] -" When executing a project or terminal command -" automatically open a new Vim Window of size 7 -let g:asyncrun_open = 7 - - -" Sets Airline Theming -let g:airline_theme='distinguished' -let g:airline#extensions#tabline#enabled=1 -" Commands to change dark and light themes -command LightTheme AirlineTheme silver -command DarkTheme AirlineTheme distinguished - -" Theme Changes -" hi Pmenu ctermbg=black ctermfg=white -hi PmenuSel guibg=yellow guifg=black -hi Pmenu ctermbg=gray guibg=purple -hi Folded guibg=#422552 guifg=#00dddd - -" Vimwiki configs -" change symbols used for checkboxes -let g:vimwiki_listsyms = ' ~✓' "✗○● -" Makes code completion suggestions work with vimwiki files -augroup ft_vimwiki - au! - au BufRead,BufNewFile *.wiki set filetype=vimwiki - au FileType vimwiki inoremap complete_info()['selected'] > -1 ? "\" : ":VimwikiReturn 1 5" - au FileType vimwiki inoremap complete_info()['selected'] > -1 ? "\" : ":VimwikiReturn 2 2" -augroup END - -" Coc configs -" Fix autocompletion adding a newline while in visual multi mode -augroup coc_autocomplete_newline - au! - autocmd User visual_multi_mappings imap pumvisible() ? "\" : "\(VM-I-Return)" -augroup END - -" what program should vimtex use to show live edits -let g:vimtex_view_method = 'zathura' -" what flavour vimtex should use for autocomplete -let g:tex_flavor = 'latex' -" function for counting words in a latex file -function! WC() - let filename = expand("%") - let cmd = "detex " . filename . " | wc -w | perl -pe 'chomp; s/ +//;'" - let result = system(cmd) - echo result . " words" -endfunction -" the command for calling the function -command WordCount call WC() - -" Make vimwiki use Markdown -let g:vimwiki_list = [{'path': '~/vimwiki/', - \ 'syntax': 'markdown', 'ext': '.md'}] -- cgit v1.2.3