"set viminfo+=~/.config/vim/viminfo set runtimepath+=~/.config/vim,~/.config/vim/after set autoindent set wrap set linebreak set mouse=a set autowrite set tabstop=4 softtabstop=0 expandtab shiftwidth=4 smarttab set nocompatible set spelllang=en_gb set number relativenumber syntax on nnoremap :nohl inoremap { {}ha inoremap [ []ha inoremap " ""ha inoremap ( ()ha inoremap nnoremap nnoremap nnoremap nnoremap nnoremap :w:!chmod+x"%:p":!"%:p" set foldmethod=syntax set foldlevel=99 set conceallevel=2 call plug#begin() Plug 'preservim/nerdtree' nnoremap :NERDTree let NERDTreeMinimalUI=1 Plug 'ryanoasis/vim-devicons' set encoding=UTF-8 Plug 'preservim/vim-markdown' "let g:vim_markdown_math = 1 "let g:vim_markdown_frontmatter = 1 "let g:vim_markdown_toml_frontmatter = 1 "let g:vim_markdown_json_frontmatter = 1 "Plug 'neoclide/coc.nvim' "hi CocInlayHint ctermbg=Black ctermfg=Gray " "set updatetime=300 "set signcolumn=yes " "nmap [g (coc-diagnostic-prev) "nmap ]g (coc-diagnostic-next) " "nmap gd (coc-definition) "nmap gy (coc-type-definition) "nmap gi (coc-implementation) "nmap gr (coc-references) " "xmap f (coc-format-selected) "nmap f (coc-format-selected) " "nmap rn (coc-rename) "nmap re (coc-codeaction-refactor) "xmap r (coc-codeaction-refactor-selected) "" nmap r (coc-codeaction-refactor-selected) " "inoremap " \ coc#pum#visible() ? coc#pum#next(1) : " \ CheckBackspace() ? "\" : " \ coc#refresh() "inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" " "inoremap coc#pum#visible() ? coc#pum#confirm() " \: "\u\\=coc#on_enter()\" " "function! CheckBackspace() abort " let col = col('.') - 1 " return !col || getline('.')[col - 1] =~# '\s' "endfunction " " "if has('nvim') " inoremap coc#refresh() "else " inoremap coc#refresh() "endif " "xmap a (coc-codeaction-selected) "nmap a (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' let g:fzf_cache_dir = '$HOME/.cache' Plug 'yuki-yano/fzf-preview.vim' Plug 'BurntSushi/ripgrep' nnoremap :Files nnoremap :Rg nnoremap :Tags nnoremap g] :call fzf#vim#tags(expand('')) nnoremap ag :Ag Plug 'heavenshell/vim-pydocstring', { 'do': 'make install', 'for': 'python' } Plug 'tpope/vim-fugitive' Plug 'yggdroot/indentline' "Plug 'yuttie/comfortable-motion.vim' "noremap :call comfortable_motion#flick(40) "noremap :call comfortable_motion#flick(-40) let g:comfortable_motion_interval = 2000.0/60 let g:comfortable_motion_friction = 80.0 let g:comfortable_motion_air_drag = 2.0 Plug 'myusuf3/numbers.vim' let g:numbers_exclude = ['tagbar', 'gundo', 'minibufexpl', 'nerdtree'] call plug#end() 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(""), 'editHex') == 1 | \ call setbufvar(expand(""), '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