求助:vim 自定义语法折叠
vim的折叠方式有好几种,但想自己写个语法折叠。
看帮助文档里面,只有简单的介绍一个例子:
"fold" 参数使得本项目的折叠级别加 1。示例: >
:syn region myFold start="{" end="}" transparent fold
:syn sync fromstart
:set foldmethod=syntax
这使得每个 {} 块形成一个折叠。
然而,将{}替换成其他的,例如 if endif ,均不成功,只有花括号才成功。
请教一下有哪位知道要怎么设置?例如设置成 "if" "endif" 之类的
在 Vim 中设置基于 if
和 endif
的语法折叠,你需要使用 Vim 的语法高亮(syntax highlighting)和折叠(folding)功能。由于 Vim 的语法文件(通常是 .vim
文件)定义了如何高亮和折叠代码,你需要编写或修改一个语法文件来识别 if
和 endif
之间的区域作为折叠区域。
以下是一个简化的步骤和示例,说明如何为 Vim 创建一个基本的语法折叠规则,用于识别 if
到 endif
的代码块:
.vim
文件),这个文件定义了如何识别你的代码结构。假设你的文件名为 mylang.vim
,并放在 Vim 的 syntax
文件夹中(或者在你的 ~/.vim/syntax
文件夹中,如果你使用的是个人 Vim 配置)。定义折叠区域:
在语法文件中,你可以使用 syn region
命令来定义一个区域,这个区域从 if
开始到 endif
结束。但是,由于 Vim 的语法引擎不直接支持跨行匹配(如从 if
到 endif
),你需要使用其他技巧,如匹配 if
并使用 syn sync
来尝试同步到 endif
,但这通常不直接支持。
一个更实用的方法是使用 Vim 的 foldmethod=marker
或 foldmethod=expr
,但如果你坚持使用 foldmethod=syntax
,你可能需要定义多个区域或使用正则表达式来近似匹配。
然而,这里有一个简化的示例,它使用 foldmethod=expr
来实现基于 if
/endif
的折叠,因为 foldmethod=syntax
直接处理可能较为复杂:
" 在你的 vimrc 或类似的配置文件中设置
autocmd FileType mylang setlocal foldmethod=expr foldexpr=GetMyLangFold(v:lnum)
" 定义一个 Vim 函数来返回折叠级别
function! GetMyLangFold(lnum)
let line = getline(a:lnum)
if line =~? '^if\s'
return '>1'
elseif line =~? '^endif\s'
return '<1'
else
return '='
endif
endfunction
注意:上面的示例使用了 Vim 脚本(VimL)来定义一个函数 GetMyLangFold
,该函数根据行内容返回折叠级别。这要求你设置 foldmethod=expr
并指定 foldexpr
为这个函数。
.vimrc
文件中添加 autocmd
来自动为特定文件类型设置语法和折叠方法。请注意,上述示例使用了 foldmethod=expr
而不是 foldmethod=syntax
,因为 foldmethod=syntax
通常需要语法文件内部定义折叠区域,这在使用 if
/endif
时较为复杂。使用 foldmethod=expr
提供了更大的灵活性,但可能需要更多的 Vim 脚本知识。
当文件内容为大文本时,折叠功能将非常有用。使用此功能,只能显示选定的文件部分。 在使用编程语言时,此功能特别有用。 在本章中,将讨论以下主题内容 - 激活和停用折叠功能 各种折叠操作 1. 折叠激活和停用 要激活折叠使用以下命令 - 要停用折叠,请使用以下命令 - 2. 折页操作 关闭折页 要折叠代码,请转到任何方法并执行以下命令 - 例如,下图显示了此操作的结果 - 打开折页 要打开折页使用以下
Vim 是超经典的文本编辑器。 安装 可以直接用 软件管理器 安装Vim。 安装完成之后,可以点 “开始菜单” -> “附件” —> “Vim” 中打开,Gnome Do 也可以正确识别 vim。
本节介绍vim的Rust支持配置,在阅读本节之前,我们假定你已经拥有了一个可执行的rustc程序,并编译好了racer。 我的vim截图 应邀而加 使用vundle vundle是vim的一个插件管理工具,基本上算是本类当中最为易用的了。 首先我们需要安装它 linux or OS X mkdir -p ~/.vim/bundle/ git clone https://github.com/Vu
我想要vim保存我的折叠信息,网上的说法一般是用:mkview和:loadview两个命令。但是如果我将文档的存放路径改变后以前的折叠信息就没有了。 大家有什么方法能让无论如何改变文档的存储路vim都能记住折叠信息吗?
但当我输入它时,它就会出现在对象体中。
Vim提供了许多命令,使编辑功能非常强大。 在本章中,将讨论以下主题内容 - 插入 附加 打开新行 替换 更改 更换 加入 1. 在光标前插入文本 要在光标之前插入文本执行以下步骤 - 打开Vim 切换到插入模式 在行的开头插入文本 假设位于行的中间,并且希望在当前行的开头插入文本,然后执行以下步骤 - 切换到命令模式 激活插入模式 此操作将光标移动到当前行的开头并在插入模式下切换Vim。 在光标