我正在编写一个 Vimscript 函数,其中我需要查找当前折叠的第一行的行号。到目前为止我一直在使用这个:
function! GetFoldStart()
let l:current_line=line('.')
normal [z
let l:current_fold_start=line('.')
execute 'normal ' . l:current_line . 'g'
endfunction
效果很好,但似乎不必要地昂贵。有没有更便宜的方法来实现它?基本上我需要借用的功能[z命令,而不实际移动到该行。
我希望变量 v:foldstart 能够拯救我,但它似乎只适用于闭合折叠(用于折叠文本)。
预先感谢您的 Vim 智慧!
乔纳森.
首先,使用normal!
(用爆炸声)在脚本中,它更安全。第二,
let winview=winsaveview()
try
" Your code here "
finally
call winrestview(winview)
endtry
然后持有更多案件let l:current_line=line('.')
... execute "normal! ".l:current_line."gg"
.
我不知道如何获取您想要的信息normal! [z
,但以下代码不应修改跳转列表:
function! GetFoldStart()
let winview=winsaveview()
try
keepjumps normal! [z
return line(".")
finally
keepjumps call winrestview(winview)
endtry
endfunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)