vim - 在不应用 foldlevel 的情况下重新计算 vim 中的折叠
问题描述
我正在尝试将 neovim 设置为 python IDE,但在进行折叠工作时遇到了一些麻烦。
我的设置:
NVIM 0.4.3
Plug 'Konfekt/FastFold'
Plug 'tmhedberg/SimpylFold'
nnoremap <space> za
用空格键切换折叠
insert
我的问题是,当我在模式下编辑文件时,SimpylFold 似乎没有重新计算折叠。因此,我使用插入模式添加到文件中的任何函数或类都会说E490: No fold found
. 奇怪的是,如果我选择我添加的行,删除它们并撤消,那么折叠就会被正确识别。在模式中粘贴函数normal
也可以正确检测到新折叠。所以这个问题似乎只在insert
模式中添加行时出现。
到目前为止,这是我所知道的:
我已经尝试过
:set foldmethod=indent
,但它没有达到我正在寻找的功能。zx
力在折叠上重新计算。这确实有效,但问题是它重新foldlevel
应用于整个缓冲区,这将撤消我对空间所做的所有手动折叠切换。在文档中找不到有关重新计算折叠而不重新应用的任何内容foldlevel
据我所知,vim 中的每一行都有一个foldlevel
决定该行所属的折叠级别。例如,python 中所有未缩进的行都会有foldlevel=0
,然后整个缓冲区也有一个折叠级别,它决定了实际折叠的级别。 . 所以如果缓冲区foldlevel
设置为 1,那么所有foldlevel
1 或更多的行都将被折叠。
我用来手动切换特定折叠的za
命令似乎在与所有这些foldlevel
东西分开的层上操作,当zx
用于重新计算折叠时,所有手动折叠/展开za
都将丢失
无论如何,如果我错了,请纠正我,几周前我刚刚切换到 linux(以及 vim),所以我远非你认为的专家。
解决方案
推荐阅读
- java - 如何使用wiremock模拟框架html?
- sql - 将 regexp_substr 语句转换为 SQL Server 等效语句
- regex - 我的正则表达式代码无法正常工作需要帮助
- ios - 如何在 iOS 设备的设备名称更改时获得通知?
- angular - 如何以角度将数据从父组件传回子组件
- reactjs - 内容在 React 中隐藏在顶部
- flutter - Navigator.push 不适用于颤振中的 setState
- sql - 从访问文件填充列表框
- ruby - 删除二叉搜索树中的一个节点。在某些地方存在逻辑错误,但我无法弄清楚?
- php - 基于子域动态更改实体管理器连接