" Vim configuration file " Author: eug-vs " enter the current millenium set nocompatible syntax enable filetype plugin on " general stuff set mouse=a set number set relativenumber set cursorline set hidden " Required to keep multiple buffers open multiple buffers set nowrap " Display long lines as just one line set ruler " Show the cursor position all the time set conceallevel=0 " So that I can see `` in markdown files set tabstop=2 " Insert 2 spaces for a tab set shiftwidth=2 " Change the number of space characters inserted for indentation set scrolloff=4 " Scroll offset set smarttab " Makes tabbing smarter will realize you have 2 vs 4 set expandtab " Converts tabs to spaces set smartindent " Makes indenting smart set autoindent " Good auto indent set showtabline=2 " Always show tabs set noshowmode " We don't need to see things like -- INSERT -- anymore set clipboard=unnamedplus " Copy paste between vim and everything else set termguicolors set ignorecase set smartcase " enable gruvbox colorscheme: autocmd vimenter * ++nested colorscheme gruvbox " vimrc management nnoremap ev :rightbelow vs ~/.vimrc nnoremap sv :source $MYVIMRC " windows set splitbelow set splitright nnoremap w nnoremap W nnoremap h nnoremap j nnoremap k nnoremap l " Defx nnoremap :Defx autocmd FileType defx call s:defx_my_settings() autocmd BufEnter * if(winnr("$") == 1 && &ft == 'defx') | q | endif autocmd BufWritePost * call defx#redraw() function! SmartTabEdit(context) abort tabnew execute "e " . a:context.targets[0] tabp endfunction function! s:defx_my_settings() abort set nonumber set norelativenumber nnoremap l \ defx#is_directory() ? \ defx#do_action('open_tree') : \ defx#do_action('open', 'choose') nnoremap t defx#do_action('call', 'SmartTabEdit') nnoremap h defx#do_action('close_tree') nnoremap dd defx#do_action('remove') nnoremap cw defx#do_action('rename') nnoremap o defx#do_action('new_file') nnoremap q defx#do_action('quit') endfunction call defx#custom#option('_', { \ 'toggle': 1, \ 'resume': 1, \ 'show_ignored_files': 1, \ 'buffer_name': 'explorer', \ 'split': 'vertical', \ 'direction': 'topleft', \ 'columns': 'space:indent:git:icons:space:filename:mark', \ 'winwidth': 30, \ }) " Startify let g:startify_session_delete_buffers = 1 let g:startify_session_persistence = 1 let g:startify_change_to_vcs_root = 1 let g:startify_padding_left = 4 let g:startify_custom_header = startify#pad(startify#fortune#cowsay('', '═','║','╔','╗','╝','╚')) let g:startify_bookmarks = [ \ { 'r': '~/.vimrc' }, \ { 'z': '~/.zshrc' }, \ ] let g:startify_lists = [ \ { 'type': 'bookmarks', 'header': [' Bookmarks:'] }, \ { 'type': 'dir', 'header': [' Recently edited files:'] }, \ { 'type': 'sessions', 'header': [' Sessions:'] }, \] " startup screen autocmd VimEnter * \ if !argc() \ | Startify \ | Defx \ | wincmd w \ | endif " built-in fuzzy-finder set path=.,** set wildmenu set wildignore+=**/node_modules/**,**/build/**,**/dist/**,**/__pycache__/** set wildmode=longest,list,full " tags command! MakeTags !ctags -R -f .git/tags --tag-relative --exclude=node_modules --exclude=.git --exclude=build --exclude=dist --map-Typescript=+.tsx set tags+=.git/tags " enable typescipt highlighting augroup SyntaxSettings autocmd! autocmd BufNewFile,BufRead *.tsx set filetype=typescriptreact augroup END " easier indentation vnoremap < >gv " remove trailing spaces on save autocmd BufWritePre * %s/\s\+$//e " Vimwiki let g:vimwiki_list = [ \ {'path': '~/Sync/', 'syntax': 'markdown', 'ext': '.md', 'auto_generate_links': 1}, \ {'path': '~/Documents/Projects/eug-vs-xyz', 'syntax': 'markdown', 'ext': '.md', 'auto_generate_links': 1, 'diary_rel_path': 'blog/', 'diary_index': 'index', 'diary_header': "Eugene\'s Blog"}, \ {'path': '~/Documents/wiki/', 'syntax': 'markdown', 'ext': '.md'}, \] let g:vimwiki_markdown_link_ext = 1 let g:calendar_options = 'nornu' nnoremap c :let &cole=(&cole == 2) ? 0 : 2 echo 'conceallevel ' . &cole function! VimwikiLinkHandler(link) let link = a:link if link =~# '^vfile:' let link = link[1:] else return 0 endif let link_infos = vimwiki#base#resolve_link(link) if link_infos.filename == '' echomsg 'Vimwiki Error: Unable to resolve link!' return 0 else exe 'e ' . fnameescape(link_infos.filename) return 1 endif endfunction " Coc.nvim nmap gd (coc-definition) inoremap pumvisible() ? "\" : "\u\" nnoremap t :call show_documentation() function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('') else call CocAction('doHover') endif endfunction let g:hardtime_default_on = 1 " TODO: command to toggle comments https://www.chrisatmachine.com/Neovim/09-vim-commentary/