Вы должны объяснить, какую навигацию вы хотите достичь.
В Vim есть концепция области видимости, которая определена в файле синтаксиса для вашего языка.Есть ряд функций, отображающих объем вашего курсора, плавающего здесь и в других местах.В моем .vimrc есть следующее:
function! SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
nnoremap <C-p> :call SynStack()<CR>
Навигация внутри документа, особенно кода, уже является сильной стороной Vim с движениями текстовых объектов, такими как (
и )
или * 1008.*, [{
, ])
и ]}
или [m
и ]m
… См. :help navigation
.В сочетании с другими движениями, такими как *
, #
, /
и ?
или тегами, у вас уже есть много энергии в пальцах.
Хотите больше детализации?
Для более конкретных нужд вы можете определить свои собственные текстовые объекты .Существует скрипт под названием textobj-user , предназначенный для помощи в этой задаче. Многие специальные текстовые объекты были созданы с этим инструментом или без него и доступны на vim.org.