2010-10-13 81 views
1

在我的fortran摺疊中有些奇怪的事情發生。這是該示例文件vim在粘貼上打開我的摺疊。如何防止呢?

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

不': h'foldopen'幫助? (不確定)。 – Benoit 2010-10-13 09:30:01

+0

@Benoit:不,我認爲fortran的摺疊設置存在某種錯誤,當模塊內有東西時,但這是一個瘋狂的猜測。 – 2010-10-13 09:45:53

+0

我想推薦一些與''.folddoopen'和':.folddoclosed'有關的棘手問題的nnoremapping,但我不確定這可以解決它。 – Benoit 2010-10-13 13:01:00

回答

1

我認爲這不是特定的fortran模塊問題,而是一般性問題。

有一個vimtip,提供了一個解決方案,用於在編輯文件時意外打開摺疊。關鍵是要設置foldmethodmanual編輯時開始:

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