Vim — не допускает оставления следов при навигации с помощью фигурных скобок

Vim — не допускает оставления следов при навигации с помощью фигурных скобок

Curly При использовании навигации с помощью фигурных скобок, {, }, для перемещения между абзацами перезаписывает отметку «последнего перехода» (доступную через ''). Я бы счел более полезным, если бы она оставляла эту отметку нетронутой. Есть ли способ настроить vim таким образом?

решение1

Вы можете использовать keepjumpsкоманду. Из :h :keepjumps:

                            *:keepj* *:keepjumps*
:keepj[umps] {command}
            Moving around in {command} does not change the |''|,
            |'.| and |'^| marks, the |jumplist| or the
            |changelist|.
            Useful when making a change or inserting text
            automatically and the user doesn't want to go to this
            position.

Так что в вашем случае вам бы хотелось

nnoremap } :keepjumps normal! }<cr>
nnoremap { :keepjumps normal! {<cr>

Или, если вы хотите, чтобы это работало и в визуальном режиме (что, скорее всего, так и есть):

xnoremap } :<C-u>keepjumps normal! gv}<cr>
xnoremap { :<C-u>keepjumps normal! gv{<cr>

Связанный контент