gpt4 book ai didi

perl - 缩进时让 Vim 忽略行中的第一个字符

转载 作者:行者123 更新时间:2023-12-04 20:28:27 25 4
gpt4 key购买 nike

每当我必须编辑 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 代码中提取这些标记并仅返回那些标记。)这将获得您想要的缩进。

不幸的是,这不是微不足道的,您必须对原始实现进行 fork 。但是,如果您设法实现了一个干净的解决方案,您可以建议向 indent/html.vim 的作者添加集成点。 .如果除了 Mason 之外还有其他语言在 HTML 之上使用这些前缀,那将是添加此类支持(甚至可能是您的包装器函数)的附加参数。

关于perl - 缩进时让 Vim 忽略行中的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com