在使用 vim 和 python-mode / rope 和 SimpylFold 进行重构后,如何防止自动重新折叠 python 代码

How do I prevent automatic re-folding of python code after refactoring using vim with python-mode / rope and SimpylFold

我正在使用 vim 创建和编辑 python 代码。我安装了 python-mode,它提供(除其他外)通过绳索进行重构。我还安装了 SimpylFold 来提供代码折叠。

除了一件烦人的小事外,一切都很好...

当我进行重构操作时,所有折叠立即自动关闭。这非常烦人,因为我将折叠设置为适合我当时正在处理的内容的各种打开/关闭状态,而这会撤消它,所以我必须重新打开我正在处理的折叠。

有谁知道/有谁能想出办法防止这种情况发生,以便我进行分解操作并且折叠保持原样吗?

干杯:)

是的!我做到了!

我的解决方案是:

  • 安装 FastFold (https://github.com/Konfekt/FastFold)[1]

  • 安装vim-停留(https://github.com/kopischke/vim-stay)[2]。我不确定这个插件是否是这个解决方案 100% 必需的,但它似乎非常有用(例如保存、关闭和重新打开后仍然存在折叠)。

  • 使用 vim-stay 的推荐设置,即将 set viewoptions=cursor,folds,slash,unix 添加到 .vimrc

  • 通过将可选的快速折叠设置 let g:fastfold_savehook = 0 添加到 .vimrc 来设置它。这似乎是最终让它发挥作用的关键步骤。

快乐的日子!享受吧!

更新: 如果您更改自打开文件后打开/关闭的折叠,则必须保存 视图 (不是文件)使用 :mkview 使这些折叠在重构 [3].

后保持不变

脚注:

[1] 我使用 Vundle (https://github.com/VundleVim/Vundle.vim) 所以对我来说这只是将 Bundle 'Konfekt/FastFold' 添加到我的 .vimrc、保存、关闭、重新打开和然后是 运行 :BundleList 然后是 :BundleInstall.

[2] 安装与上面相同,但将 kopischke/vim-stay 替换为 Konfekt/FastFold

[3] 我发现映射到键时更容易,在我的例子中 <F9>