vim在粘贴时打开我的折叠。怎么预防?

时间:2010-10-13 09:23:36

标签: vim fortran

我的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)吗?你知道任何解决方法/修复吗?

1 个答案:

答案 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