Vim

VIM:折疊要點

  • December 23, 2013

我對 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

理想情況下,您不會注意到這些折疊存在,直到您真正嘗試關閉一個。

引用自:https://unix.stackexchange.com/questions/105167