Другие ответы здесь хороши, особенно @ rodrigo, но я хотел написать решение, которое сохраняет положение прокрутки и делает это, не затрагивая ни одну из меток.
Это работает для меня:
function! StarPositionSave()
let g:star_position_cursor = getpos('.')
normal! H
let g:star_position_top = getpos('.')
call setpos('.', g:star_position_cursor)
endfunction
function! StarPositionRestore()
call setpos('.', g:star_position_top)
normal! zt
call setpos('.', g:star_position_cursor)
endfunction
nnoremap <silent> * :call StarPositionSave()<CR>*:call StarPositionRestore()<CR>
Ввод normal! *
непосредственно в функцию, похоже, не работает, поскольку (по крайней мере, в neovim) он подавляет подсветку поиска от запуска (как если бы :nohlsearch
был запущен).