VIM:折疊要點
我對 VIM 很陌生,但過去一周一直在嘗試自學,但我遇到了一個事實證明非常令人沮喪的問題:
目前我主要使用VIM做筆記,並使用VIM的折疊能力讓我的工作不那麼雜亂。然而我遇到了一個問題,每一個超出我設定的換行符的項目符號都會自行折疊。為了更清楚:
我不想讓單個項目符號折疊。
我似乎已經將問題追溯到我的文本縮進的方式:由於預設情況下折疊似乎發生在縮進級別,我的項目符號折疊由於第二行被更多地“縮進”。所以我認為解決這個問題的方法可能很模糊:如果下一行的縮進大於 1,則告訴 VIM 折疊,或者處理項目符號點的包裝方式完全不同。
這些解決方案如何實施?
我使用了一個名為Workflowish的外掛,所以這是我的 vimrc:
set tw=100 set formatoptions=tcq set com=fb:* set spell set spelllang=de colorscheme synic set fileencoding=utf8 execute pathogen#infect() syntax on filetype plugin indent on
這是外掛本身設置的內容:
setlocal foldlevel=1 setlocal foldenable setlocal sw=2 sts=2 setlocal expandtab setlocal foldtext=WorkflowishFoldText() setlocal foldmethod=expr setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum) setlocal autoindent
不幸的是,如果沒有外掛的支持,就無法做到這一點。(有點。)
這裡的關鍵線是:
setlocal foldmethod=expr setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)
第一個意思是“使用 的值
'foldexpr'
來確定每行的折疊級別”。第二個將該選項設置為使用外掛中定義的函式的值。Vim 中的折疊基於折疊級別。在
foldmethod=expr
中,每一行都由 分配一個折疊級別(一個整數)'foldexpr'
。這些級別決定了折疊的開始和結束位置。解決方案 1:寫一個新的
'foldexpr'
.這可以呼叫
WorkflowishCompactFoldLevel()
,但調整值以使多行項目符號項不折疊。不過,我將把它留作練習,因為我認為這是錯誤的方法。這使我們:解決方案 2:讓現在的工作方式不再是問題。
我認為真正的問題不是這些褶皺的存在,而是它們妨礙了你。你能描述一下你做了什麼讓你甚至注意到這些褶皺在那裡嗎?這可能是為緩衝區設置
'foldlevel'
適當的起點的問題。ft=workflowish
理想情況下,您不會注意到這些折疊存在,直到您真正嘗試關閉一個。