diff --git a/autoload/fzf/vim.vim b/autoload/fzf/vim.vim index 41bbca1..c1e4550 100755 --- a/autoload/fzf/vim.vim +++ b/autoload/fzf/vim.vim @@ -1850,9 +1850,13 @@ function! s:tags_sink(from, lines) call s:fill_quickfix('tags', qfl) elseif len(qfl) == 1 " Entries opened in the loop take the action only when one was selected, so - " the last one standing of a multi-selection still owes the key its action + " the last one standing of a multi-selection still owes the key its action. + " The loop opened it in the starting window, which goes back as it was first if len(list) > 1 - call s:action_for(key, qfl[0].filename, 1) + call s:execute_silent('b '.buf) + call winrestview(view) + call s:action_for(key, qfl[0].filename) + call cursor(qfl[0].lnum, 1) endif normal! ^zvzz endif