aboutsummaryrefslogtreecommitdiff
path: root/vim/.vimrc
diff options
context:
space:
mode:
Diffstat (limited to 'vim/.vimrc')
-rw-r--r--vim/.vimrc19
1 files changed, 19 insertions, 0 deletions
diff --git a/vim/.vimrc b/vim/.vimrc
index 4e25604..f37d803 100644
--- a/vim/.vimrc
+++ b/vim/.vimrc
@@ -174,6 +174,25 @@ augroup gitgutter
autocmd gitgutter BufEnter * call s:reset_gitgutter_highlights()
augroup END
+" Switch to a window that has a buffer open, or open a new window if no window
+" exists for that filename.
+function! s:switch_to_file_or_open(filename, in_tab)
+ let id=bufwinid('^' . a:filename . '$')
+ if id < 0
+ if a:in_tab
+ tabnew
+ else
+ new
+ endif
+ exe 'edit ' . fnameescape(a:filename)
+ else
+ call win_gotoid(id)
+ endif
+endfunction
+
+" NB: this is used in ~/.latexmkrc, don't change without checking there
+command! -nargs=1 -complete=file SwitchToFileOrOpen call s:switch_to_file_or_open(<f-args>, 1)
+
" Move through long lines as they were short multiple lines
map <down> gj
map <up> gk