Marty Oehme
2e59341d6d
Simply take all the mappings and move them to one big new file for now. At some point we can start thinking about splitting them up further, and if that could make sense. The groundwork is laid by vimrc looking for a maps.vim file in every subdirectory of its runtime path.
530 lines
18 KiB
VimL
530 lines
18 KiB
VimL
" 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 <g)> or last <g(> 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 {{{
|
||
" ================================================================================
|
||
|
||
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('<amatch>'))
|
||
\| 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
|
||
|
||
" 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
|
||
|
||
" 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 <SID>goyo_enter()
|
||
autocmd! User GoyoLeave nested call <SID>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': <sid>bibtex_ls(<q-args>),
|
||
\ 'sink*': function('<sid>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': <sid>bibtex_ls(),
|
||
\ 'sink*': function('<sid>bibtex_markdown_sink'),
|
||
\ 'up': '25%',
|
||
\ 'options': '--ansi --multi --prompt "Markdown> "'
|
||
\ }))
|
||
|
||
" 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
|
||
|
||
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
|
||
|
||
" Configure notational-fzf-vim
|
||
let g:nv_search_paths = [ g:wiki_root ]
|
||
let g:nv_wrap_preview_text=1
|
||
|
||
" }}}
|
||
" 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("\<CR>")
|
||
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
|
||
|
||
" Begin mapping definitions
|
||
runtime! **/maps.vim
|
||
|
||
" }}}
|
||
" ABBREVIATIONS {{{
|
||
|
||
" Typos
|
||
iabbrev adn and
|
||
iabbrev waht what
|
||
iabbrev tehn then
|
||
iabbrev whit with
|
||
iabbrev whith with
|
||
|
||
" Text expansion
|
||
iabbrev mo@ marty.oehme@gmail.com
|
||
iabbrev mo.me@ <https://martyoeh.me/>
|
||
iabbrev mcc@ Copyright 2019 Marty Oehme, all rights reserved.
|
||
|
||
"
|
||
" }}}
|
||
" END
|
||
" ================================================================================
|