From 1a9194b6bc7708f631353ea733e14ccd189b4b57 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Fri, 20 Aug 2021 10:25:43 +0300 Subject: refactor(nvim): make config modular --- nvim/.config/nvim/coc.vim | 15 ++++ nvim/.config/nvim/defx.vim | 37 ++++++++ nvim/.config/nvim/fzf.vim | 4 + nvim/.config/nvim/init.vim | 65 +++++++++++++- nvim/.config/nvim/startify.vim | 25 ++++++ nvim/.config/nvim/vimwiki.vim | 29 +++++++ nvim/.vimrc | 190 +---------------------------------------- 7 files changed, 175 insertions(+), 190 deletions(-) create mode 100644 nvim/.config/nvim/coc.vim create mode 100644 nvim/.config/nvim/defx.vim create mode 100644 nvim/.config/nvim/fzf.vim create mode 100644 nvim/.config/nvim/startify.vim create mode 100644 nvim/.config/nvim/vimwiki.vim mode change 100644 => 120000 nvim/.vimrc (limited to 'nvim') diff --git a/nvim/.config/nvim/coc.vim b/nvim/.config/nvim/coc.vim new file mode 100644 index 0000000..7adde13 --- /dev/null +++ b/nvim/.config/nvim/coc.vim @@ -0,0 +1,15 @@ +" Coc.nvim configuration +nmap gd (coc-definition) +nnoremap t :call show_documentation() + +inoremap pumvisible() ? "\" : "\u\" + +autocmd BufNewFile,BufRead *.tsx set filetype=typescriptreact + +function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + else + call CocAction('doHover') + endif +endfunction diff --git a/nvim/.config/nvim/defx.vim b/nvim/.config/nvim/defx.vim new file mode 100644 index 0000000..8b44dfc --- /dev/null +++ b/nvim/.config/nvim/defx.vim @@ -0,0 +1,37 @@ +" Defx configuration +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 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, +\ }) diff --git a/nvim/.config/nvim/fzf.vim b/nvim/.config/nvim/fzf.vim new file mode 100644 index 0000000..2d64a69 --- /dev/null +++ b/nvim/.config/nvim/fzf.vim @@ -0,0 +1,4 @@ +" fzf.vim configuration +nnoremap r :Rg +nnoremap f :FZF +nnoremap g :GFiles diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim index b16b89f..55fb6d2 100644 --- a/nvim/.config/nvim/init.vim +++ b/nvim/.config/nvim/init.vim @@ -1,5 +1,68 @@ +" Neovim configuration file +" Author: eug-vs +" Email: eugene@eug-vs.xyz + +" Load plugins set runtimepath^=~/.vim runtimepath+=~/.vim/after let &packpath = &runtimepath source ~/.config/nvim/vim-plug/plugins.vim -source ~/.vimrc + +" Enter the current millenium +set nocompatible +syntax enable +filetype plugin on + +" General stuff +set number relativenumber +set ignorecase smartcase +set splitbelow splitright +set termguicolors +set cursorline +set hidden +set nowrap +set ruler +set mouse=a +set clipboard=unnamedplus +set scrolloff=3 +set conceallevel=0 + +" Indentation +set smarttab expandtab +set smartindent autoindent +set tabstop=2 +set shiftwidth=2 +set showtabline=2 + +" Colorscheme +autocmd vimenter * ++nested colorscheme gruvbox + +" Built-in fuzzy-finder +set path=.,** +set wildmenu +set wildignore+=**/node_modules/**,**/build/**,**/dist/**,**/__pycache__/** +set wildmode=longest,list,full + +" Easier window navigation +nnoremap h +nnoremap j +nnoremap k +nnoremap l + +" Easier indentation +vnoremap < >gv + +" Remove trailing whitespace on save +autocmd BufWritePre * %s/\s\+$//e + +" Vimrc management +nnoremap ev :vs ~/.vimrc +nnoremap sv :source $MYVIMRC + +" Plugin-specific configuration +source ~/.config/nvim/startify.vim +source ~/.config/nvim/defx.vim +source ~/.config/nvim/vimwiki.vim +source ~/.config/nvim/coc.vim +source ~/.config/nvim/fzf.vim diff --git a/nvim/.config/nvim/startify.vim b/nvim/.config/nvim/startify.vim new file mode 100644 index 0000000..9c129c4 --- /dev/null +++ b/nvim/.config/nvim/startify.vim @@ -0,0 +1,25 @@ +" Startify configuration +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:'] }, +\] + +autocmd VimEnter * + \ if !argc() + \ | Startify + \ | Defx + \ | wincmd w + \ | endif diff --git a/nvim/.config/nvim/vimwiki.vim b/nvim/.config/nvim/vimwiki.vim new file mode 100644 index 0000000..4a35dc6 --- /dev/null +++ b/nvim/.config/nvim/vimwiki.vim @@ -0,0 +1,29 @@ +" Vimwiki configuration +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': "Blog"}, + \ {'path': '~/Documents/wiki/', 'syntax': 'markdown', 'ext': '.md'}, +\] + +let g:vimwiki_markdown_link_ext = 1 + +autocmd FileType vimwiki setlocal spell wrap linebreak + +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 diff --git a/nvim/.vimrc b/nvim/.vimrc deleted file mode 100644 index 6aede5d..0000000 --- a/nvim/.vimrc +++ /dev/null @@ -1,189 +0,0 @@ -" 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 - -# fzf.vim -nnoremap r :Rg -nnoremap f :FZF -nnoremap g :GFiles - -" 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/ diff --git a/nvim/.vimrc b/nvim/.vimrc new file mode 120000 index 0000000..25b6a3b --- /dev/null +++ b/nvim/.vimrc @@ -0,0 +1 @@ +.config/nvim/init.vim \ No newline at end of file -- cgit v1.2.3