我的Ruby折叠表达式导致自动完成(<C-n>
/<C-p>
)显着减慢,这是一个巨大的痛苦。当我切换到手动折叠时,自动完成变为即时。Vim:如何用一个使用旧命令的新命令覆盖命令?
要解决这个问题,我希望折叠是“按需”,即它只在我做zx
或zX
时计算折叠。该计划:
- 集Ruby代码默认折叠方法
manual
- 当打开一个Ruby文件,本地地图
zx
切换折叠方法expr
和运行zx
,然后切换折叠方法回到manual
- 重复#2
zX
的问题是,当我重写zx
,我怎么叫“老” zx
?
完美的答案肯特,这是我最后的工作液(ftplugin/ruby.vim
):
if &filetype == 'ruby'
setlocal foldmethod=manual
nn <buffer> <silent> zx :set foldmethod=expr<CR>:norm! zx<CR>:set foldmethod=manual<CR>
nn <buffer> <silent> zX :set foldmethod=expr<CR>:norm! zX<CR>:set foldmethod=manual<CR>
end
我不知道我理解你的权利......但你可以调用':norm! zx'来绕过你的映射。 – Kent
我想到的一个方法是使用':norm! zx'。但我会等待,因为别人可能会有更有趣的解决方案。无论如何,考虑到如果你走这条路线,当你输入你的ruby缓冲区时,你可以使用自动命令来创建地图,所以其他人将使用“原始”的“zx”。另外,您是否正在扫描包含的文件?这通常会导致一些缓慢 – sidyll
对不起@Kent我想我写在同一时间 – sidyll