"{{{ Plugs call plug#begin('~/.local/share/nvim/plugged') "completion Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'lionawurscht/deoplete-biblatex' Plug 'deoplete-plugins/deoplete-jedi' " ledger Plug 'ledger/vim-ledger' "language packs Plug 'sheerun/vim-polyglot' "syntax checking Plug 'dense-analysis/ale' "manages tag files Plug 'ludovicchabant/vim-gutentags' "run your tests Plug 'janko/vim-test' " latex Plug 'lervag/vimtex' "snippet solution Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets' "autopair plugin Plug 'tmsvg/pear-tree' "colored brackets Plug 'luochen1990/rainbow' " Plugin outside ~/.vim/plugged with post-update hook Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' "tree explorer Plug 'scrooloose/nerdtree' "displays tags ordered by scope Plug 'majutsushi/tagbar' "status/tabline Plug 'bling/vim-airline' " " color theme Plug 'joshdick/onedark.vim' "Personal wiki Plug 'vimwiki/vimwiki' "distraction-free writing Plug 'junegunn/goyo.vim' Plug 'junegunn/limelight.vim' "text alignment Plug 'godlygeek/tabular' "color code highlight Plug 'chrisbra/Colorizer' "move selections up and down Plug 'matze/vim-move' " search/select/edit sandwiched textobjects (vim-surround) Plug 'machakann/vim-sandwich' " provide additional text objects Plug 'wellle/targets.vim' " indentation level text object Plug 'michaeljsmith/vim-indent-object' " undo history visualizer Plug 'mbbill/undotree' "reopen files at your last edit position Plug 'farmergreg/vim-lastplace' "toggle, display and navigate marks Plug 'kshenoy/vim-signature' "git diff in the sign column Plug 'airblade/vim-gitgutter' "jump to location by 2 characters Plug 'justinmk/vim-sneak' "splits delete into cut and delete Plug 'svermeulen/vim-cutlass' "change text with yank Plug 'svermeulen/vim-subversive' "yank history Plug 'svermeulen/vim-yoink' "enable repeating supported plugin maps with '.' Plug 'tpope/vim-repeat' "pairs of handy bracket mappings Plug 'tpope/vim-unimpaired' "git wrapper Plug 'tpope/vim-fugitive' "increment dates, times & more Plug 'tpope/vim-speeddating' "search, substitute and abbreviate Plug 'tpope/vim-abolish' "provides ga, show unicode stuff of char under cursor Plug 'tpope/vim-characterize' "comment helper Plug 'tpope/vim-commentary' "asynchronous build and test dispatcher Plug 'tpope/vim-dispatch' "fancy start screen Plug 'mhinz/vim-startify' Plug 'ryanoasis/vim-devicons' " asks to be placed last, sure call plug#end() " required "}}} "{{{Auto Commands " Remove any trailing whitespace that is in the file autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif " Close vim if the only window left open is NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " Resize all windows proportionally when the terminal is resized " let terminal resize scale the internal windows autocmd VimResized * :wincmd = "}}} "{{{Misc Settings " Use deoplete. let g:deoplete#enable_at_startup = 1 " interact with system clipboard set clipboard=unnamed,unnamedplus " required for yoink/cutlass/subversive interaction let g:yoinkIncludeDeleteOperations = 1 " Tab stuff set autoindent set expandtab " Use appropriate number of spaces to insert a set shiftwidth=4 set softtabstop=4 set tabstop=8 " Use english for spellchecking, but don't spellcheck by default set spell spelllang=en_gb set nospell " Cool tab completion stuff set wildmode=list:longest,full set wildignore=*.o,*.obj,*.class,*.aux,*.lof,*.log,*.lot,*.fls,*.toc,*.fmt,*.fot,*.cb,*.cb2,.*.lb,.dvi,*.xdv,*.bbl,*.bcf,*.blg,*-blx.aux,*-blx.bib,*.run.xml,*.fdb_latexmk,*.synctex,*.synctex(busy),*.synctex.gz,*.synctex.gz(busy),*.pdfsync let g:NERDTreeRespectWildIgnore = 1 set nojoinspaces set scrolloff=4 " Keep n lines above/below cursor set number " line numbers set foldmethod=marker " folding stuffs set title " set terminal title set showmatch " jump to the matching bracket briefly, REMOVE AFTER TESTING set linebreak " wrap using 'breakat' character set splitbelow " new split panes will split to below and right set splitright set cursorline " persistent undo set undodir=~/.vim/undodir set undofile " lower case searches ignore case, upper case searches do not set ignorecase set smartcase " https://stackoverflow.com/a/3445040/ " switch case labels set cinoptions=l1 " https://www.reddit.com/r/vim/comments/7bj837/favorite_console_tools_to_use_with_vim/ if executable('rg') set grepprg=rg\ --vimgrep\ --no-heading endif set diffopt+=internal,algorithm:patience " }}} "{{{Look and Feel set termguicolors colorscheme onedark " }}} "{{{ Mappings " Open the TagBar Plugin nnoremap :TagbarToggle " Open NERDTree nnoremap :NERDTreeToggle " Fix whole buffer via ALE nmap (ale_fix) " these "Ctrl mappings" work well when Caps Lock is mapped to Ctrl nmap t :TestNearest nmap t :TestFile nmap t :TestSuite nmap t :TestLast nmap t :TestVisit " New Tab nnoremap :tabnew " Edit vimrc \ev nnoremap ev :tabnew:e ~/.config/nvim/init.vim " Up and down are more logical with g.. nnoremap k gk nnoremap j gj inoremap gka inoremap gja " quicker window movement nnoremap j nnoremap k nnoremap h nnoremap l " Disable highlight when is pressed nnoremap :noh " Space will toggle folds! nnoremap za " Search mappings: These will make it so that going to the next one in a " search will center on the line it's found in. " map N Nzz " map n nzz " checkmarks on vimwiki nmap v VimwikiToggleListItem nmap ` Sneak_s nmap ` Sneak_S nnoremap ' ` nmap i :IndentGuidesToggle " separate cut and delete nnoremap x d xnoremap x d nnoremap xx dd nnoremap X D " use the special yoink paste nmap p (YoinkPaste_p) nmap P (YoinkPaste_P) " substitute from yank nmap ys (SubversiveSubstitute) nmap yss (SubversiveSubstituteLine) nmap yS (SubversiveSubstituteToEndOfLine) " substitute over range nmap s (SubversiveSubstituteRange) xmap s (SubversiveSubstituteRange) nmap ss (SubversiveSubstituteWordRange) " subvert over range nmap s (SubversiveSubvertRange) xmap s (SubversiveSubvertRange) nmap ss (SubversiveSubvertWordRange) " iterate over yank list nmap (YoinkPostPasteSwapBack) nmap (YoinkPostPasteSwapForward) " change into pwd of current directory nnoremap cd :cd %:p:h:pwd "}}} "{{{Tagbar let g:tagbar_autofocus = 1 let g:tagbar_compact = 1 let g:tagbar_sort = 0 let g:tagbar_width = 25 "}}} "{{{ Airline let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#formatter = 'unique_tail' let g:airline#extensions#ycm#enabled = 1 let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' let g:airline_mode_map = {} let g:airline_mode_map['ic'] = 'INSERT' "}}} "{{{ NERDTree let g:NERDTreeWinSize=25 "}}} "{{{ Ale let g:ale_sign_error = '✗' let g:ale_sign_warning = '⚑' let g:ale_lint_on_text_changed = 'insert' let g:ale_lint_on_enter = 0 "}}} "{{{ Ledger " let g:ledger_extra_options = '--pedantic --explicit --check-payees' let g:ledger_maxwidth = 48 let g:ledger_fillstring = ' ~' "}}} "{{{ UltiSnips set runtimepath+=~/.vim/my-snippets/ let g:UltiSnipsEditSplit="vertical" let g:UltiSnipsSnippetsDir=$HOME.'/.vim/my-snippets/UltiSnips' " ctrl + l expands the snippet, c + j/k navigates placeholders let g:UltiSnipsExpandTrigger = "" "}}} "{{{ vim-startify function! StartifyEntryFormat() return 'WebDevIconsGetFileTypeSymbol(absolute_path) ." ". entry_path' endfunction let entry_format = "' ['. index .']'. repeat(' ', (3 - strlen(index)))" if exists('*WebDevIconsGetFileTypeSymbol') " support for vim-devicons let entry_format .= ". WebDevIconsGetFileTypeSymbol(entry_path) .' '. entry_path" else let entry_format .= '. entry_path' endif let g:ascii = [ \' | ', \'\ \ \ / -_) | _| _ \ ` \ -_)', \' \_/\_/\___|_|\__|\___/_|_|_|\___|', \ '', \] let g:startify_custom_header = \ 'map(g:ascii + startify#fortune#boxed(), "\" \".v:val")' "}}} "{{{ vimwiki let g:vimwiki_list = [{'path': '/home/yigit/Nextcloud/personal_wiki', \ 'path_html': '/home/yigit/Nextcloud/personal_wiki_html', \ 'css_name': 'tufte.css', \ 'auto_export': 1}] let g:vimwiki_global_ext = 0 "}}} " {{{ vimtex let g:vimtex_view_method = 'zathura' let g:tex_flavor='latex' let g:vimtex_quickfix_mode = 0 let g:polyglot_disabled = ['latex', 'tex', 'ledger'] " }}} " {{{ rainbow let g:rainbow_active = 0 " }}} " {{{ Gutentags let g:gutentags_add_default_project_roots = 0 let g:gutentags_project_root = ['Makefile', '.git'] let g:gutentags_generate_on_new = 1 let g:gutentags_generate_on_missing = 1 let g:gutentags_generate_on_write = 1 let g:gutentags_generate_on_empty_buffer = 0 " }}}