微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

perl – 在缩进时让Vim忽略第一个字符

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐