From 8ffa12744c36a20887a9465790fb270c204a2fef Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 4 Nov 2019 19:13:43 +0100 Subject: [PATCH] Add several experimental academia profiles --- .config/nvim/profiles/academia_fzf.vim | 200 ++++++++++++++++++ .config/nvim/profiles/academia_pandoc.vim | 163 ++++++++++++++ ...ademia.vim => academia_unite_citation.vim} | 13 +- 3 files changed, 374 insertions(+), 2 deletions(-) create mode 100644 .config/nvim/profiles/academia_fzf.vim create mode 100644 .config/nvim/profiles/academia_pandoc.vim rename .config/nvim/profiles/{academia.vim => academia_unite_citation.vim} (86%) diff --git a/.config/nvim/profiles/academia_fzf.vim b/.config/nvim/profiles/academia_fzf.vim new file mode 100644 index 0000000..08fba14 --- /dev/null +++ b/.config/nvim/profiles/academia_fzf.vim @@ -0,0 +1,200 @@ +" vim: set foldmethod=marker foldlevel=1 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 academia_fzf.vim | q +endif + +" automatically install any missing plugins +autocmd VimEnter * + \ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) + \| PlugInstall --sync | q + \| endif +" +" 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) + +" 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 + +" quickly edit vimrc with leader+V +nnoremap V :vsp academia_fzf.vim +" 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 academia_fzf.vim + + +" '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 . + +" stronger versions of left,right - move all the way +nnoremap H ^ +nnoremap L $ + +" }}} +" CUSTOMIZATION {{{ + +" defines plugin directory +" Install plugins from vim with :PlugInstall +silent! if plug#begin('~/.local/share/nvim/plugged') +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 'rakr/vim-one' + +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } + +call plug#end() +endif + +" set some fzf defaults +let g:fzf_layout = { 'up': '~40%' } +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 = 'academia.bib' + +" 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 . ' ' . 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 . ' ' . 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 + +" }}} + +colo one diff --git a/.config/nvim/profiles/academia_pandoc.vim b/.config/nvim/profiles/academia_pandoc.vim new file mode 100644 index 0000000..f410700 --- /dev/null +++ b/.config/nvim/profiles/academia_pandoc.vim @@ -0,0 +1,163 @@ +" vim: set foldmethod=marker foldlevel=1 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 academia_pandoc.vim | q +endif + +" automatically install any missing plugins +autocmd VimEnter * + \ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) + \| PlugInstall --sync | q + \| endif +" +" 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) + +" 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 + +" quickly edit vimrc with leader+V +nnoremap V :vsp academia_pandoc.vim +" 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 academia_pandoc.vim + + +" '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 . + +" stronger versions of left,right - move all the way +nnoremap H ^ +nnoremap L $ + +" }}} +" CUSTOMIZATION {{{ + +" defines plugin directory +" Install plugins from vim with :PlugInstall +silent! if plug#begin('~/.local/share/nvim/plugged') +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 'rakr/vim-one' + +Plug 'vim-pandoc/vim-pandoc' +Plug 'vim-pandoc/vim-pandoc-syntax' + +call plug#end() +endif + +set foldlevel=2 + +" PLUGIN: vim-pandoc +" handle markdown files with pandoc (and pandoc syntax!) +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=["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#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() + +" Add pandoc citations to deoplete automatic completions +"call deoplete#custom#var('omni', 'input_patterns', { +" \ 'pandoc': '@' +" \}) + +" }}} +colo one diff --git a/.config/nvim/profiles/academia.vim b/.config/nvim/profiles/academia_unite_citation.vim similarity index 86% rename from .config/nvim/profiles/academia.vim rename to .config/nvim/profiles/academia_unite_citation.vim index 344255f..2abddff 100644 --- a/.config/nvim/profiles/academia.vim +++ b/.config/nvim/profiles/academia_unite_citation.vim @@ -130,7 +130,14 @@ function! s:unite_settings() " control s to split into new buf imap unite#do_action('split') " simple esc to exit when in insert mode - imap (unite_exit) + "imap (unite_exit) + " also esc to exit in normal mode + nmap (unite_exit) + + nnoremap unite#do_action('start') + imap unite#do_action('start') + nnoremap unite#do_action('preview') + imap unite#do_action('preview') endfunction " citation.vim bibtex citations @@ -138,7 +145,9 @@ let g:citation_vim_bibtex_file="academia.bib" let g:citation_vim_mode="bibtex" let g:citation_vim_cache_path='~/.cache/' " insert a citation under cursor (using bibref) -nnoremap c :Unite -buffer-name=citation-start-insert -default-action=append citation/key +nnoremap cc :Unite -buffer-name=citation-start-insert -default-action=append -auto-resize -smartcase -start-insert citation/key +" show info for citation that cursor is currently on +nnoremap ci :Unite -input= -default-action=preview -force-immediately citation/combined " }}} colo one