两个foldexpr可以在我的.vimrc中共存吗?
1) 我的.vimrc中有一个折叠表达式(参见:help fold expr部分下的第三个示例),它将由空行分隔的段落折叠起来:两个foldexpr可以在我的.vimrc中共存吗?,vim,folding,Vim,Folding,1) 我的.vimrc中有一个折叠表达式(参见:help fold expr部分下的第三个示例),它将由空行分隔的段落折叠起来: set foldmethod=expr set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 set foldmethod=expr 设置foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\s
set foldmethod=expr
set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
set foldmethod=expr
设置foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\s'?'选项foldexpr
是窗口的本地选项,因此:
:set
将建立全局值和局部值。全局值将用作未指定本地值的后续窗口的默认值
:setlocal
将仅确定本地值
我不清楚合并这两个表达式意味着什么,但当然可以创建一个包含所有复杂逻辑的折叠函数
非常简单的是根据文件(或文件类型)为foldexpr
设置不同的值。为此使用自动命令
所以,整个事情可能是,在你的.vimrc中:
" Default: for all files
set foldmethod=expr
set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
nnoremap <F8> :setlocal foldmethod=expr<CR><Bar>zM
" Only for specific files
augroup NonDefaultFoldMethod
autocmd!
autocmd BufNewFile,BufRead file1.txt,file2.txt setlocal foldexpr=getline(v:lnum)!~@/
augroup end
“默认值:适用于所有文件
设置foldmethod=expr
设置foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\s'?'选项foldexpr
是窗口的本地选项,因此:
:set
将建立全局值和局部值。全局值将用作未指定局部值的后续窗口的默认值
:setlocal
将仅确定本地值
我不清楚合并这两个表达式意味着什么,但当然可以创建一个包含所有复杂逻辑的折叠函数
根据文件(或文件类型)的不同,为foldexpr
设置不同的值是非常容易的。为此,请使用自动命令
所以,整个事情可能是,在你的.vimrc中:
" Default: for all files
set foldmethod=expr
set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
nnoremap <F8> :setlocal foldmethod=expr<CR><Bar>zM
" Only for specific files
augroup NonDefaultFoldMethod
autocmd!
autocmd BufNewFile,BufRead file1.txt,file2.txt setlocal foldexpr=getline(v:lnum)!~@/
augroup end
“默认值:适用于所有文件
设置foldmethod=expr
设置foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\s'?'(我之前的评论似乎已被删除)它工作得很好。谢谢。(看来我之前的评论已经被删除了)它工作得很好。非常感谢。