我的fortran折叠有一些奇怪的事情。这是示例文件
module foo
contains
subroutine hello()
end subroutine hello
subroutine hello()
end subroutine
subroutine hello()
end subroutine
end module foo
subroutine hello()
end subroutine
subroutine hello()
end subroutine
subroutine hello()
end subroutine
这是vimrc
syntax on
au! BufRead,BufNewFile *.f90 setfiletype fortran
set foldmethod=syntax
let fortran_fold=1
令人烦恼的是以下内容。如果我在模块/末端模块块上切割(dd)并粘贴(P)折叠的子程序,则新粘贴的折叠保持关闭状态。如果我将粘贴到模块/结束模块块中,则会显示新粘贴的折叠区域。你能重现这个问题(这里是vim 7.2)吗?你知道任何解决方法/修复吗?
答案 0 :(得分:2)
我认为这不是特定的fortran-module问题,而是一般问题。
有一个vimtip提供了在编辑文件时意外打开折叠的解决方案。诀窍是在编辑开始时将foldmethod
设置为manual
:
autocmd InsertEnter * if !exists('w:last_fdm') | let w:last_fdm=&foldmethod | setlocal foldmethod=manual | endif
完成编辑(或离开窗口)后,将foldmethod
重置为原始值:
autocmd InsertLeave,WinLeave * if exists('w:last_fdm') | let &l:foldmethod=w:last_fdm | unlet w:last_fdm | endif