加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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之上使用这些前缀,那么这将是添加此类支持(甚至可能是您的包装函数)的另一个参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读