我对 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
Run Code Online (Sandbox Code Playgroud)
这是插件本身的设置:
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
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果没有插件的支持,就无法做到这一点。(有点。)
这里的关键行是:
setlocal foldmethod=expr
setlocal foldexpr=WorkflowishCompactFoldLevel(v:lnum)
Run Code Online (Sandbox Code Playgroud)
第一个意思是“使用 的值'foldexpr'
来确定每行的折叠级别”。第二个设置该选项以使用插件中定义的函数的值。
Vim 中的折叠是基于折叠级别的。在 中foldmethod=expr
,每行都由 分配一个折叠级别(整数)'foldexpr'
。这些水平决定了折叠的开始和结束位置。
解决方案1:编写一个新的'foldexpr'
.
这可以调用WorkflowishCompactFoldLevel()
,但调整值以便多行项目符号项目不会折叠。不过,我会将其作为练习,因为我认为这是错误的方法。这让我们想到:
解决方案 2:使其现在的工作方式不再成为问题。
我认为真正的问题不是这些折叠的存在,而是它们妨碍了你。你能描述一下你做了什么让你甚至注意到这些折叠的存在吗?'foldlevel'
这可能是为缓冲区适当设置起始值的问题ft=workflowish
。
理想情况下,除非您真正尝试关闭折叠,否则您不会注意到这些折叠的存在。