转到行号时自动展开折叠

dc-*_*dc- 6 vim folding macvim

有没有办法在转到行号时展开代码?例如,我输入:35第35行折叠的地方,然后我必须手动展开该部分以实际到达该行.我想输入:35并让代码自动展开,我的光标放在第35行,无需再按任何键.

Ing*_*kat 7

如果使用35G命令而不是:35,则可以使用以下映射实现此目的:

"[count]G       Also open fold under cursor when supplying [count] (i.e.
"               jumping to a particular line, not the end of the
"               buffer). Use [count]|gg| if you don't want this.
nnoremap <expr> G (v:count ? 'Gzv' : 'G')
Run Code Online (Sandbox Code Playgroud)

:35其本身而言,这很难实现.你必须拦截<CR>通过a :cmap <expr>,通过getcmdtype()和检查键入的命令getcmdline(),并且,如果它是一个数字,操纵命令,即附加normal! zv到它; 像这样:

cmap <expr> <CR> getcmdtype() == ':' && getcmdline() =~ '^\d\+$' ? 'normal! zv<CR>' : '<CR>'
Run Code Online (Sandbox Code Playgroud)