" 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 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 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 h \ defx#do_action('close_tree') nnoremap dd \ defx#do_action('remove') nnoremap cw \ defx#do_action('rename') 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:filename:mark', \ 'winwidth': 30, \ }) " Startify let g:startify_custom_header = [ \ ' ___ __ ______ _ _ _______', \ ' / _ \/ / / / __ `/____| | / / ___/', \ ' / __/ /_/ / /_/ /_____/ |/ (__ ) ', \ ' \___/\__,_/\__, / |___/____/ ', \ ' /____/ ', \] " 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=typescript augroup END " easier indentation vnoremap < >gv " remove trailing spaces on save autocmd BufWritePre * %s/\s\+$//e " Vimwiki let g:vimwiki_list = [{'path': '~/Documents/wiki/', 'syntax': 'markdown', 'ext': '.md'}] 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 " TODO: command to toggle comments https://www.chrisatmachine.com/Neovim/09-vim-commentary/ " TODO: sessions https://www.chrisatmachine.com/Neovim/11-startify/