" vim: set foldmethod=marker foldlevel=0 nomodeline: " ================================================================================ " .init.vim / .vimrc of Marty Oehme {{{ " ================================================================================ " " - stolen from many different sources including " Steve Losh " Junegunn Choi " Tim Pope " this config does not set nocompatible - neovim does this automatically " this config does not set filetype plugin - vim-sensible does this " }}} " PLUGIN INSTALLATION - handled by VIM-PLUG {{{ " ================================================================================ " " automatically install vim-plug if it does not exist " Note: this installs it in the neovim folder, not the vim folder if empty(glob('~/.local/share/nvim/site/autoload/plug.vim')) silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC | q endif " automatically install any missing plugins autocmd VimEnter * \ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) \| PlugInstall --sync | q \| endif " defines plugin directory " Install plugins from vim with :PlugInstall silent! if plug#begin('~/.local/share/nvim/plugged') " Base " a minimal definition of variables TODO still necessary for nvim? Plug 'tpope/vim-sensible' " add seamless movement between vim and tmux, switch windows with C-hjkl Plug 'christoomey/vim-tmux-navigator' " automatically switch between relative and absolute numbers as buffers move " into / out of focus (requires number & relativenumber to be set) Plug 'jeffkreeftmeijer/vim-numbertoggle' " Plug 'liuchengxu/vim-which-key', { 'on': ['WhichKey', 'WhichKey!'] } -> " instructions: http://liuchengxu.org/vim-which-key/, needs setup tp become " useful. TODO enable when setup is more settled down " sneak around your files using Plug 'justinmk/vim-sneak' " highlight all occurences of the current word under the cursor (after 250ms " delay) Plug 'RRethy/vim-illuminate' " " editing Workflow Plug 'tpope/vim-commentary' " easily toggle comments for lines, paragraphs etc with gc Plug 'tommcdo/vim-exchange' " adds exchange operator with cx. common use: cxiw . on 2 words to switch Plug 'tpope/vim-surround' " lets you change surrounding things with cs (or ds to del, ys to add) " " Ecosystem " " Plug 'tpope/vim-fugitive' - Will have to take a closer look some other time Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } " show a directory listing within vim Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } " show git status in nerdtree for files and dirs " Fuzzy matching Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } Plug 'junegunn/fzf.vim' Plug 'alok/notational-fzf-vim' Plug 'dyng/ctrlsf.vim' " Language Integration Plug 'sheerun/vim-polyglot' " syntax plugins for almost every language Plug 'stephpy/vim-yaml' Plug 'mhartington/nvim-typescript', {'for': 'typescript','do': './install.sh'} Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } Plug 'deoplete-plugins/deoplete-go', { 'do': 'make'} Plug 'aliou/bats.vim' " HTML Workflow Plug 'valloric/matchtagalways', { 'on': [] } Plug 'alvan/vim-closetag', { 'on': [] } Plug 'jiangmiao/auto-pairs', { 'on': [] } " Auto close brackets and '' augroup load_html_utils autocmd! autocmd InsertEnter * call plug#load('matchtagalways', 'vim-closetag', 'auto-pairs') \| autocmd! load_html_utils augroup END " Prose Workflow Plug 'kana/vim-textobj-user' " dependency for most other textobj plugins Plug 'reedes/vim-textobj-sentence' " extends the capabilities of sentence detection " and allows you to jump to the *end* of this or last sentence. Plug 'reedes/vim-pencil', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide md convenience functions like hard/softwrap Plug 'junegunn/goyo.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide distraction free writing Plug 'junegunn/limelight.vim', { 'for': ['markdown', 'txt'], 'on': 'Goyo' } " provide even distraction free-er writing (lowlight paragraphs) " RMarkdown & LaTeX workflow Plug 'vim-pandoc/vim-pandoc-syntax' Plug 'vim-pandoc/vim-pandoc' " Plug 'vim-pandoc/vim-rmarkdown' " Note-Taking Workflow Plug 'lervag/wiki.vim' " For async completion Plug 'Shougo/deoplete.nvim', { 'on': [] } " automatic suggestions, can also perhaps be changed for newer plugs Plug 'Shougo/echodoc.vim', { 'on': [] } Plug 'w0rp/ale', { 'on': [] } " asynchronous linting - might be superseded by lsp or coc.nvim at some point " lazy loading since they require a lot of startup time augroup load_ide_features autocmd! autocmd InsertEnter * call plug#load('ale', 'deoplete.nvim', 'echodoc.vim') \| autocmd! load_ide_features autocmd InsertEnter * call deoplete#enable() autocmd InsertEnter * call echodoc#enable() " Add pandoc citations to deoplete automatic completions autocmd InsertEnter * call deoplete#custom#var('omni', 'input_patterns', { \ 'pandoc': '@' \}) augroup END " Design Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'edkolev/tmuxline.vim' " Colorschemes Plug 'rafi/awesome-vim-colorschemes' Plug 'reedes/vim-colors-pencil' Plug 'rakr/vim-togglebg' call plug#end() endif " }}} " PLUGIN CONFIGURATION {{{ " ================================================================================ " PLUGIN: vim-sneak map f Sneak_f map F Sneak_F map t Sneak_t map T Sneak_T let g:sneak#s_next = 1 let g:sneak#use_ic_scs = 1 " PLUGIN: NERDTree " highlight the line the cursor is on let NERDTreeHighlightCursorline = 1 " remove Press ? for help let NERDTreeMinimalUI=1 " loads nerdtree plugin when starting vim with a directory " this is necessary when we lazyload nerdtree with vimplug above " since it would only get loaded with nttoggle otherwise, and run netrw augroup nerd_loader autocmd! autocmd VimEnter * silent! autocmd! FileExplorer autocmd BufEnter,BufNew * \ if isdirectory(expand('')) \| call plug#load('nerdtree') \| execute 'autocmd! nerd_loader' \| endif augroup END " " PLUGIN: markdown-group " " unify markdown extensions to all use markdown filetype " au! BufRead,BufNewFile *.markdown set filetype=markdown " au! BufRead,BufNewFile *.md set filetype=markdown " au! BufRead,BufNewFile *.mkd set filetype=markdown " automatically enables markdown plugins for md & txt files function! Prose() call plug#load('vim-pencil') call pencil#init() " PLUGIN: vim-textobj-sentence " enable extended sentence textobject use on md and plaintext files call textobj#sentence#init() " hide the markdown cruft setlocal conceallevel=2 setlocal foldlevel=2 endfunction " enable syntax highlighting for codeblocks WITHIN markdown let g:markdown_fenced_languages = ['html', 'python', 'bash=sh', 'javascipt', 'go'] " call the prose function defined above for any md files au FileType pandoc,markdown call Prose() " or invoke it manually by writing :Prose command! -nargs=0 Prose call Prose() " PLUGIN: vim-pandoc " handle markdown files with pandoc (and pandoc syntax!) let g:pandoc#modules#disabled = ["folding"] let g:pandoc#filetypes#pandoc_markdown = 1 " disable all default keymaps let g:pandoc#keyboard#use_default_mappings=0 let g:pandoc#hypertext#use_default_mappings=0 " if there's a pdf and an html or similar, open the pdf let g:pandoc#command#prefer_pdf=1 " look for bibtex files w/ same name as edited one, then .bib in current dir, yaml frontmatter, and finally the globally set bibs file let g:pandoc#biblio#sources="bcyg" " the globally set bibs file let g:pandoc#biblio#bibs=[expand("~/Nextcloud/Library/academia/academia.bib")] let g:pandoc#biblio#use_bibtool=1 let g:pandoc#biblio#use_preview=1 let g:pandoc#completion#bib#mode='citeproc' let g:pandoc#folding#fold_yaml=1 let g:pandoc#folding#fastfolds=1 " let g:pandoc#folding#level=2 let g:pandoc#spell#default_langs=["en_us", "de_de"] let g:pandoc#hypertext#ausosave_on_edit_open_link=1 let g:pandoc#hypertext#create_if_no_alternates_exists=1 let g:pandoc#syntax#conceal#use = 1 let g:pandoc#syntax#conceal#urls = 1 " " follow and open links with pandoc " open a file with either local means, or let the system decide nnoremap gX :call pandoc#hypertext#OpenSystem() nnoremap gx :call pandoc#hypertext#OpenLocal() " open a link in the editor (this buffer, or split) nnoremap gf :call pandoc#hypertext#OpenLink( g:pandoc#hypertext#edit_open_cmd ) nnoremap :call pandoc#hypertext#OpenLink( g:pandoc#hypertext#edit_open_cmd ) nnoremap gF :call pandoc#hypertext#OpenLink( g:pandoc#hypertext#split_open_cmd ) nnoremap gF :call pandoc#hypertext#OpenLink( g:pandoc#hypertext#split_open_cmd ) " go back a link nnoremap gb :call pandoc#hypertext#BackFromLink() nnoremap :call pandoc#hypertext#BackFromLink() " PLUGIN: wiki.vim if $WIKIROOT ==? "" let g:wiki_root = '~/Nextcloud/Notes/' else let g:wiki_root = $WIKIROOT endif " filetypes to automatically enable the plugin for, seems to take file endings " rather than vim ft let g:wiki_filetypes = ['md', 'mkd', 'markdown', 'wiki'] let g:wiki_link_extension = '.md' let g:wiki_link_target_type = 'md' let g:wiki_mappings_use_defaults = 1 " overwrites some default mappings I don't use, or that interfere with my own " mappings TODO: currently this just assigns bogus shortcuts, since the plugin grumbles " when setting to an empty string let g:wiki_mappings_global = { \ '(wiki-journal)' : '===', \ '(wiki-code-run)' : '====', \ '(wiki-graph-in)' : '====', \ '(wiki-graph-out)' : '=====', \ '(wiki-link-toggle)' : '=======', \ '(wiki-page-toc)' : '=========', \ '(wiki-page-toc-local)' : '=============', \ '(wiki-export)' : '==============', \ '(wiki-list-uniq)' : '===============', \ '(wiki-list-uniq-local)' : '================', \ '(wiki-tag-list)' : '=================', \ '(wiki-tag-reload)' : '==================', \ '(wiki-tag-search)' : '=====================', \ '(wiki-link-toggle-operator)' : '======================', \} " PLUGIN: vim-pencil " set default wrap mode to hard - TODO test which mode works better for " me, it seems hardmode has trouble with markdown lists (see issue #31) let g:pencil#wrapModeDefault = 'soft' " default is 'hard' " PLUGIN: goyo " set up functions for entering/exiting distraction free mode, or leaving it function! s:goyo_enter() " remove the tmux status bar for actual distraction free environment silent !tmux set status off " maximize the tmux pane that vim is in if any (usually I have vim open as the only pane) silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z " disable line highlighting, we really don't need it for prose set nocursorline " enable limelight which highlights whatever paragraph you are in and lowlights the rest Limelight endfunction function! s:goyo_leave() silent !tmux set status on silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z set cursorline Limelight! endfunction " actually call the functions on entering/leaving goyo autocmd! User GoyoEnter nested call goyo_enter() autocmd! User GoyoLeave nested call goyo_leave() " FZF Fuzzy Finding " set some fzf defaults let g:fzf_layout = { 'up': '~40%' } let g:fzf_command_prefix = 'Fzf' let g:fzf_colors = \ { 'fg': ['fg', 'Normal'], \ 'bg': ['bg', 'Normal'], \ 'hl': ['fg', 'Comment'], \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], \ 'hl+': ['fg', 'Statement'], \ 'info': ['fg', 'PreProc'], \ 'border': ['fg', 'Ignore'], \ 'prompt': ['fg', 'Conditional'], \ 'pointer': ['fg', 'Exception'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] } let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' } " set up fzf-bibtex let g:fzf_bibtex_cache = '~/.cache/' let g:fzf_bibtex_sources = g:pandoc#biblio#bibs " prepare bibtex_ls function to look for bib files in cwd/parent/subdirs, " attach the standard bibtex source file " return the command with standard cache directory filled function! s:bibtex_ls(...) let bibfiles = ( \ globpath('.', '*.bib', v:true, v:true) + \ globpath('..', '*.bib', v:true, v:true) + \ globpath('*/', '*.bib', v:true, v:true) \ ) let bibfiles = join(bibfiles, ' ') let source_cmd = 'bibtex-ls -cache ' . g:fzf_bibtex_cache . ' ' .bibfiles . ' ' . join(g:fzf_bibtex_sources) return source_cmd endfunction " insert citation from normal mode at cursor (with brackets) function! s:bibtex_cite_sink(lines) let r=system("bibtex-cite ", a:lines) execute ':normal! i[' . r . ']' endfunction command! -bang -nargs=* CiteRef call fzf#run(fzf#wrap({ \ 'source': bibtex_ls(), \ 'sink*': function('bibtex_cite_sink'), \ 'up': '25%', \ 'options': '--ansi --multi --prompt "Cite> "' \ })) " insert citation from insert mode at cursor (no brackets inserted) function! s:bibtex_cite_sink_insert(lines) let r=system("bibtex-cite ", a:lines) execute ':normal! i' . r call feedkeys('a', 'n') endfunction " insert markdown formatted reference function! s:bibtex_markdown_sink(lines) let r=system("bibtex-markdown -cache " . g:fzf_bibtex_cache . ' ' . join(g:fzf_bibtex_sources), a:lines) echo join(a:lines, '; ') execute ':normal! i' . r endfunction command! -bang -nargs=* CiteMarkdown call fzf#run(fzf#wrap({ \ 'source': bibtex_ls(), \ 'sink*': function('bibtex_markdown_sink'), \ 'up': '25%', \ 'options': '--ansi --multi --prompt "Markdown> "' \ })) " map @@ to automatically insert citation reference at cursor inoremap @@ u:call fzf#run(fzf#wrap({ \ 'source': bibtex_ls(), \ 'sink*': function('bibtex_cite_sink_insert'), \ 'up': '25%', \ 'options': '--ansi --multi --prompt "Cite> "'})) " map cc to insert a complete citation at cursor nnoremap cc :CiteRef " map cm to insert markdown prettified citation nnoremap cm :CiteMarkdown " PLUGIN: vim-go " change the tabstops for go to use tabs and a width of 4 " this conforms with the gofmt expectations au FileType go set noexpandtab au FileType go set shiftwidth=4 au FileType go set softtabstop=4 au FileType go set tabstop=4 " enable all sorts of highlighting options for " variables/functions/arguments... let g:go_highlight_build_constraints = 1 let g:go_highlight_extra_types = 1 let g:go_highlight_fields = 1 let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_operators = 1 let g:go_highlight_structs = 1 let g:go_highlight_types = 1 " enable highlighting of other uses of the same variable let g:go_auto_sameids = 1 " automatically import needed dependencies " TODO do I need this? not doing it automatically does lead to more conscious " decision making on imports let g:go_fmt_command = "goimports" " show type information for variables in the status line let g:go_auto_type_info = 1 " PLUGIN: DEOPLETE " enable deoplete at startup let g:deoplete#enable_at_startup = 0 let g:deoplete#enable_ignore_case = 1 let g:deoplete#enable_smart_case = 1 let g:deoplete#enable_camel_case = 1 let g:deoplete#enable_refresh_always = 1 let g:deoplete#max_abbr_width = 0 let g:deoplete#max_menu_width = 0 let g:deoplete#omni#input_patterns = get(g:,'deoplete#omni#input_patterns',{}) " PLUGIN: ECHODOC let g:echodoc#type="virtual" set splitbelow set completeopt+=menuone,noinsert,noselect set completeopt-=preview autocmd CompleteDone * pclose " PLUGIN: ALE " clearer Error and warning signs for the gutter let g:ale_sign_error = '⤫' let g:ale_sign_warning = '⚠' " Enable integration with airline. let g:airline#extensions#ale#enabled = 1 let g:ale_fix_on_save = 1 let g:ale_fixers = { \'javascipt': ['eslint', 'prettier'], \'html': ['tidy','prettier'], \'typescript': ['prettier','tslint'], \'*': ['remove_trailing_lines', 'trim_whitespace'], \'go': ['gofmt'], \'sh': ['shfmt'], \'zsh': ['shfmt'], \} let g:ale_linters = { \ 'go': ['gopls'], \ 'sh': ['language_server','shellcheck'], \ 'zsh': ['language_server','shellcheck'], \} " PLUGIN: AIRLINE " PLUGIN: TMUXLINE let g:airline_powerline_fonts=1 " let g:airline_theme='raven' " Enable italics for colorschemes that support them let g:gruvbox_italic=1 let g:one_allow_italics=1 let g:pencil_terminal_italics=1 colorscheme one " disable automatically refreshing the mux statusbar since it breaks tmux " prefix highlighting. Instead, when changing vim statusbar just create " snapshot with :TmuxlineSnapshot file and stick it into tmux config manually let g:airline#extensions#tmuxline#enabled = 1 " custom preset with left-justified window list let g:tmuxline_preset = { \'a' : '#S', \'b' : '#(whoami)', \'c' : '#I:#P', \'win' : '#I #W', \'cwin' : [' ', '#I #W'], \'x' : '#{?client_prefix,#[fg=colour232]#[bg=brightblue],} %H:%M:%S', \'y' : '%d-%b-%y', \'z' : '#H', \'options' : {}} " automatically save the current buffer when navigating away from vim let g:tmux_navigator_save_on_switch = 1 " }}} " VIM SETTINGS {{{ " ================================================================================ " " set truecolor (neovim) set termguicolors " sets tabs to be 2 characters, expanded into spaces, but still removable with " one press of backspace. " great explanation: http://vimcasts.org/transcripts/2/en/ set tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab " set cursor line highlighting, esp useful when using with bracket " highlighting and you don't know which side of the brace the cursor is on set cursorline " shows linenumbers relative to the one you are on, for easy movement and " dNUMBERd deletions set number relativenumber " keeps an undofile next to files so that you can even undo if vim is closed " in between set undofile " ignores case by default but will use case when search is specifically not " all lowercased set ignorecase set smartcase " whenever vim loses focus, save au FocusLost * :wa " disables showing us the current mode in the command line since airline takes " care of it set noshowmode " highlight everything that goes over 80 columns highlight ColorColumn ctermbg=magenta call matchadd('ColorColumn', '\%81v', 100) " Special setting for editing gopass files - make sure nothing leaks outside " the directories it is supposed to au BufNewFile,BufRead /dev/shm/gopass.* setlocal noswapfile nobackup noundofile " }}} " KEYBINDINGS {{{ " ================================================================================ " " Show all mapped keys in a list - from https://stackoverflow.com/questions/13990136/display-a-ordered-vim-keyboard-mapping function! s:ShowMaps() let old_reg = getreg("a") " save the current content of register a let old_reg_type = getregtype("a") " save the type of the register as well try redir @a " redirect output to register a " Get the list of all key mappings silently, satisfy "Press ENTER to continue" silent map | call feedkeys("\") redir END " end output redirection vnew " new buffer in vertical window put a " put content of register " Sort on 4th character column which is the key(s) %!sort -k1.4,1.4 finally " Execute even if exception is raised call setreg("a", old_reg, old_reg_type) " restore register a endtry endfunction " use :ShowMaps to call the function com! ShowMaps call s:ShowMaps() " Enable :ShowMaps to call the function " set our leader key to space since with hjkl, space is largely useless let mapleader = "\" " maps the leader for buffer local mappings (e.g. vim-waikiki for files under " the root dir to the same key -- might lead to incompatibilities, will have " to test) let maplocalleader = "\" " set jk to escape, in case capslock is not mapped to escape on the system inoremap jk " remove search highlights by pressing space+/ - the key for searching the " first place nnoremap / :noh " split buffers vertically/horizontally with the leader \ or - (mirrors my " tmux setup) nnoremap - :sp nnoremap \ :vsp " move around between matching brackets with tab nnoremap % nnoremap % " Spell check set to O, 'o' for 'orthography': noremap O :setlocal spell! spelllang=en_us noremap OE :setlocal spell! spelllang=en_us noremap OG :setlocal spell! spelllang=de_de noremap o z= " select the whole buffer with -a nnoremap a ggVG " quickly edit vimrc with leader+V nnoremap V :vsp $MYVIMRC " automatically source the vimrc file whenever it is saved (causes slowdown " when done in MANY successions) " au BufWritePost init.vim so ~/.config/nvim/init.vim " source vimrc with keystroke combination nnoremap VV :source $MYVIMRC " since u undoes, would it not make sense that U redoes? nnoremap U " when in insertion mode, C-u uppercases the current word, C-l lowercases it, inoremap gUiw`]a inoremap guiw`]a " get rid of the help message popping up when I miss esc and hit F1 nnoremap inoremap vnoremap " yank filename to f buffer nnoremap yf :let @f = expand("%") " remove all trailing whitespaces " on pressing space+W nnoremap W :%s/\s\+$//:let @/='' " automatically on saving " autocmd BufWritePre * :%s/\s\+$//e " 'open new buffer' with leader-t (opens new buffer and switches to it) " open actual new tab with leader-T nnoremap t :vsp . nnoremap T :tabedit . " open/close NERDtree with leader-e " whatever method tree has been opened by, leader-e closes it again nnoremap e :NERDTreeToggle " open root of current VCS project in tree nnoremap :NERDTreeVCS " open current nerdtree with current file highlighted nnoremap E :NERDTreeFind " vim-go mappings - will only activate in go files " most of this credit to https://hackernoon.com/my-neovim-setup-for-go-7f7b6e805876 " switch between test file and function au Filetype go nnoremap ga (go-alternate-edit) " switch between test file and function - in a horizontal/vertical split au Filetype go nnoremap gah (go-alternate-split) au Filetype go nnoremap gav (go-alternate-vertical) " run a test (but run it as short version, in case tests are tagged " accordingly) au FileType go nnoremap :GoTest -short " show/hide code coverage of go file au FileType go nnoremap :GoCoverageToggle -short " To get the documentation of whatever you are hovering over press K (to go " back C-t) -- this is enabled by default and needs no bind " go to the definition of whatever you hover over au FileType go nnoremap (go-def) " Configure notational-fzf-vim let g:nv_search_paths = [ g:wiki_root ] let g:nv_wrap_preview_text=1 " Dictionary with string keys and values. Must be in the form 'ctrl-KEY': " 'command' or 'alt-KEY' : 'command'. See examples below. let g:nv_fzf_binds = [ \ 'alt-a:select-all', \ 'alt-q:deselect-all', \ 'alt-p:toggle-preview', \ 'alt-u:page-up', \ 'alt-d:page-down', \ 'ctrl-w:backward-kill-word', \ ] " Markdown & Pandoc compilation group " the commented out command can be used if vim-rmarkdown plugin is not " installed (it is a bit more brittle) " autocmd FileType rmd noremap :!echo"require(rmarkdown);render('%')"\|R--vanilla " Compile with rmarkdown " autocmd FileType markdown,rmarkdown noremap c :RMarkdown pdf " autocmd FileType markdown,rmarkdown noremap C :RMarkdown! pdf function! SearchWiki() let l:curpath=getcwd() :execute(":cd " . g:wiki_root) let l:texttofind=input("Search in Notes: ") :execute(":CtrlSF " . l:texttofind) :CtrlSFFocus :execute(":cd " . l:curpath) endfunction " search in wiki with ctrlsf, in fullscreen window nnoremap wf :execute(":call SearchWiki()") " FUZZY FINDING " FZF buffers and files in current workdir noremap s :FzfBuffers " FZF most recently used / MRU, bound to S since it is essentially a larger " go-back intention than just buffers noremap S :FzfHistory noremap f :FzfFiles " use wiki.vim to look through document outlines in fzf (only for note " directory atm) nnoremap l :WikiFzfToc " FZF general full-text search in cwd with rg noremap F :FzfRg " FZF note full-text search with notational-velocity like functions (in wiki " directory) noremap n :NV noremap N :NV! " FZF git diff noremap gd :FzfGFiles? " FZF colorschemes nnoremap :FzfColors " Toggle background light/dark call togglebg#map("") " Mostly dealing with Prose writing from here on out " Format current Paragraph (esp useful in prose writing) nnoremap q gqap xnoremap q gq nnoremap Q vapJgqap " Enter distraction free prose mode with F11 noremap :Goyo " surround stuff with quotes, from normal or visual mode nnoremap " viwa"bi"lel vnoremap " ``>la"l " stronger versions of left,right - move all the way nnoremap H ^ nnoremap L $ " }}} " ABBREVIATIONS {{{ " Typos iabbrev adn and iabbrev waht what iabbrev tehn then iabbrev whit with iabbrev whith with " Text expansion iabbrev @e@ marty.oehme@gmail.com iabbrev ccopy Copyright 2019 Marty Oehme, all rights reserved. " " }}} " END " ================================================================================