perl – 在缩进时让Vim忽略第一个字符
发布时间:2020-12-15 21:44:44 所属栏目:大数据 来源:网络整理
导读:每当我必须编辑Perl Mason文件时,由于Perl代码以%开头,我总是会出现缩进行的问题.例如: div div% if( !$something ) { strong% $title %/strong% } /div/div 知道我怎么能告诉Vim忽略行开头的%并缩进,就像它不存在一样? 我使用https://github.com/aming/
每当我必须编辑Perl Mason文件时,由于Perl代码以%开头,我总是会出现缩进行的问题.例如:
<div> <div> % if( !$something ) { <strong><% $title %></strong> % } </div> </div> 知道我怎么能告诉Vim忽略行开头的%并缩进,就像它不存在一样? 我使用https://github.com/aming/vim-mason来支持混合的Perl / HTLM语法,但我认为它不会改变任何东西. 解决方法
这是嵌入在HTML中的Perl代码,因此缩进来自$VIMRUNTIME / indent / html.vim.这定义了一个’indentexpr’,由HtmlIndent()实现.
您需要修改该实现以忽略第一列中的%;每当它访问缓冲区(getline(),prevnonblank(),shiftwidth())时,你需要拦截,找到确实有这样的%sigil的前一行,并返回该值. (如果这些特殊行也可以包含HTML标记,则可能必须从Perl代码中提取这些标记并仅返回那些.)这样可以获得您想要的缩进. 不幸的是,它不是微不足道的,你必须分叉原始的实现.但是,如果您设法实现干净的解决方案,则可以建议向indent / html.vim的作者添加集成点.如果除了Mason之外还有其他语言在HTML之上使用这些前缀,那么这将是添加此类支持(甚至可能是您的包装函数)的另一个参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |