在Vim中,我经常发现自己想要快速zk或zj跳转到文件中的上一个或下一个折叠.问题是,我经常想要跳过所有打开的折叠,然后跳到最近的闭合折叠.
有没有办法做到这一点?我在手册中看不到内置的键盘映射.
ib.*_*ib. 30
让我提出以下映射来实现所描述的行为.
nnoremap <silent> <leader>zj :call NextClosedFold('j')<cr>
nnoremap <silent> <leader>zk :call NextClosedFold('k')<cr>
function! NextClosedFold(dir)
let cmd = 'norm!z' . a:dir
let view = winsaveview()
let [l0, l, open] = [0, view.lnum, 1]
while l != l0 && open
exe cmd
let [l0, l] = [l, line('.')]
let open = foldclosed(l) < 0
endwhile
if open
call winrestview(view)
endif
endfunction
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3678 次 |
| 最近记录: |