summaryrefslogtreecommitdiff
path: root/config/vim/vimrc
diff options
context:
space:
mode:
Diffstat (limited to 'config/vim/vimrc')
-rw-r--r--config/vim/vimrc225
1 files changed, 165 insertions, 60 deletions
diff --git a/config/vim/vimrc b/config/vim/vimrc
index b348907..74515ba 100644
--- a/config/vim/vimrc
+++ b/config/vim/vimrc
@@ -1,4 +1,4 @@
-set viminfo+=n~/.config/vim/viminfo
+"set viminfo+=~/.config/vim/viminfo
set runtimepath+=~/.config/vim,~/.config/vim/after
set autoindent
set wrap
@@ -53,69 +53,80 @@ Plug 'preservim/vim-markdown'
"let g:vim_markdown_json_frontmatter = 1
-Plug 'neoclide/coc.nvim'
-hi CocInlayHint ctermbg=Black ctermfg=Gray
-
-set updatetime=300
-set signcolumn=yes
-
-nmap <silent> [g <Plug>(coc-diagnostic-prev)
-nmap <silent> ]g <Plug>(coc-diagnostic-next)
-
-nmap <silent> gd <Plug>(coc-definition)
-nmap <silent> gy <Plug>(coc-type-definition)
-nmap <silent> gi <Plug>(coc-implementation)
-nmap <silent> gr <Plug>(coc-references)
-
-xmap <leader>f <Plug>(coc-format-selected)
-nmap <leader>f <Plug>(coc-format-selected)
-
-nmap <leader>rn <Plug>(coc-rename)
-nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
-xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
-" nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
-
-inoremap <silent><expr> <TAB>
- \ coc#pum#visible() ? coc#pum#next(1) :
- \ CheckBackspace() ? "\<Tab>" :
- \ coc#refresh()
-inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
-
-inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
- \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
-
-function! CheckBackspace() abort
- let col = col('.') - 1
- return !col || getline('.')[col - 1] =~# '\s'
-endfunction
-
-
-if has('nvim')
- inoremap <silent><expr> <c-space> coc#refresh()
-else
- inoremap <silent><expr> <c-@> coc#refresh()
-endif
-
-xmap <leader>a <Plug>(coc-codeaction-selected)
-nmap <leader>a <Plug>(coc-codeaction-selected)
-
-" autocmd CursorHold * silent call CocActionAsync('highlight')
+"Plug 'neoclide/coc.nvim'
+"hi CocInlayHint ctermbg=Black ctermfg=Gray
+"
+"set updatetime=300
+"set signcolumn=yes
+"
+"nmap <silent> [g <Plug>(coc-diagnostic-prev)
+"nmap <silent> ]g <Plug>(coc-diagnostic-next)
+"
+"nmap <silent> gd <Plug>(coc-definition)
+"nmap <silent> gy <Plug>(coc-type-definition)
+"nmap <silent> gi <Plug>(coc-implementation)
+"nmap <silent> gr <Plug>(coc-references)
+"
+"xmap <leader>f <Plug>(coc-format-selected)
+"nmap <leader>f <Plug>(coc-format-selected)
+"
+"nmap <leader>rn <Plug>(coc-rename)
+"nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
+"xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
+"" nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
+"
+"inoremap <silent><expr> <TAB>
+" \ coc#pum#visible() ? coc#pum#next(1) :
+" \ CheckBackspace() ? "\<Tab>" :
+" \ coc#refresh()
+"inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
+"
+"inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
+" \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
+"
+"function! CheckBackspace() abort
+" let col = col('.') - 1
+" return !col || getline('.')[col - 1] =~# '\s'
+"endfunction
+"
+"
+"if has('nvim')
+" inoremap <silent><expr> <c-space> coc#refresh()
+"else
+" inoremap <silent><expr> <c-@> coc#refresh()
+"endif
+"
+"xmap <leader>a <Plug>(coc-codeaction-selected)
+"nmap <leader>a <Plug>(coc-codeaction-selected)
+"
+"" autocmd CursorHold * silent call CocActionAsync('highlight')
+"
+"function! ShowDocumentation()
+" if CocAction('hasProvider', 'hover')
+" call CocActionAsync('doHover')
+" else
+" call feedkeys('K', 'in')
+" endif
+"endfunction
+"
+"autocmd FileType python let b:coc_root_patterns = ['.git', '.env', '.']
+
+Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
+Plug 'junegunn/fzf.vim'
-function! ShowDocumentation()
- if CocAction('hasProvider', 'hover')
- call CocActionAsync('doHover')
- else
- call feedkeys('K', 'in')
- endif
-endfunction
-autocmd FileType python let b:coc_root_patterns = ['.git', '.env', '.']
+let g:fzf_cache_dir = '$HOME/.cache'
-Plug 'junegunn/fzf.vim'
+Plug 'yuki-yano/fzf-preview.vim'
+Plug 'BurntSushi/ripgrep'
nnoremap <F6> :Files<CR>
nnoremap <F7> :Rg<CR>
+nnoremap <F8> :Tags<CR>
+
+nnoremap g] :call fzf#vim#tags(expand('<cword>'))<CR>
+nnoremap <silent> <Leader>ag :Ag <C-R><C-W><CR>
Plug 'heavenshell/vim-pydocstring', { 'do': 'make install', 'for': 'python' }
@@ -123,9 +134,9 @@ Plug 'tpope/vim-fugitive'
Plug 'yggdroot/indentline'
-Plug 'yuttie/comfortable-motion.vim'
-noremap <silent> <ScrollWheelDown> :call comfortable_motion#flick(40)<CR>
-noremap <silent> <ScrollWheelUp> :call comfortable_motion#flick(-40)<CR>
+"Plug 'yuttie/comfortable-motion.vim'
+"noremap <silent> <ScrollWheelDown> :call comfortable_motion#flick(40)<CR>
+"noremap <silent> <ScrollWheelUp> :call comfortable_motion#flick(-40)<CR>
let g:comfortable_motion_interval = 2000.0/60
let g:comfortable_motion_friction = 80.0
@@ -141,3 +152,97 @@ highlight Pmenu ctermbg=black guibg=black ctermfg=white
hi TrailingWhitespace ctermbg=red guibg=red
call matchadd("TrailingWhitespace", '\v\s+$')
+
+" ex command for toggling hex mode - define mapping if desired
+command -bar Hexmode call ToggleHex()
+
+" helper function to toggle hex mode
+function ToggleHex()
+ " hex mode should be considered a read-only operation
+ " save values for modified and read-only for restoration later,
+ " and clear the read-only flag for now
+ let l:modified=&mod
+ let l:oldreadonly=&readonly
+ let &readonly=0
+ let l:oldmodifiable=&modifiable
+ let &modifiable=1
+ if !exists("b:editHex") || !b:editHex
+ " save old options
+ let b:oldft=&ft
+ let b:oldbin=&bin
+ " set new options
+ setlocal binary " make sure it overrides any textwidth, etc.
+ silent :e " this will reload the file without trickeries
+ "(DOS line endings will be shown entirely )
+ let &ft="xxd"
+ " set status
+ let b:editHex=1
+ " switch to hex editor
+ %!xxd
+ else
+ " restore old options
+ let &ft=b:oldft
+ if !b:oldbin
+ setlocal nobinary
+ endif
+ " set status
+ let b:editHex=0
+ " return to normal editing
+ %!xxd -r
+ endif
+ " restore values for modified and read only state
+ let &mod=l:modified
+ let &readonly=l:oldreadonly
+ let &modifiable=l:oldmodifiable
+endfunction
+
+" autocmds to automatically enter hex mode and handle file writes properly
+if has("autocmd")
+ " vim -b : edit binary using xxd-format!
+ augroup Binary
+ au!
+
+ " set binary option for all binary files before reading them
+ au BufReadPre *.bin,*.hex setlocal binary
+
+ " if on a fresh read the buffer variable is already set, it's wrong
+ au BufReadPost *
+ \ if exists('b:editHex') && b:editHex |
+ \ let b:editHex = 0 |
+ \ endif
+
+ " convert to hex on startup for binary files automatically
+ au BufReadPost *
+ \ if &binary | Hexmode | endif
+
+ " When the text is freed, the next time the buffer is made active it will
+ " re-read the text and thus not match the correct mode, we will need to
+ " convert it again if the buffer is again loaded.
+ au BufUnload *
+ \ if getbufvar(expand("<afile>"), 'editHex') == 1 |
+ \ call setbufvar(expand("<afile>"), 'editHex', 0) |
+ \ endif
+
+ " before writing a file when editing in hex mode, convert back to non-hex
+ au BufWritePre *
+ \ if exists("b:editHex") && b:editHex && &binary |
+ \ let oldro=&ro | let &ro=0 |
+ \ let oldma=&ma | let &ma=1 |
+ \ silent exe "%!xxd -r" |
+ \ let &ma=oldma | let &ro=oldro |
+ \ unlet oldma | unlet oldro |
+ \ endif
+
+ " after writing a binary file, if we're in hex mode, restore hex mode
+ au BufWritePost *
+ \ if exists("b:editHex") && b:editHex && &binary |
+ \ let oldro=&ro | let &ro=0 |
+ \ let oldma=&ma | let &ma=1 |
+ \ silent exe "%!xxd" |
+ \ exe "set nomod" |
+ \ let &ma=oldma | let &ro=oldro |
+ \ unlet oldma | unlet oldro |
+ \ endif
+ augroup END
+endif
+