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()
) 时,您需要拦截,找到确实具有此类符号的上一行%
,然后返回该值。(如果这些特殊行也可以包含 HTML 标记,您可能必须从 Perl 代码中提取这些标记并仅返回这些标记。)这样就可以得到您想要的缩进。
不幸的是,这不是微不足道的,您必须分叉原始实现。但是,如果您设法实现一个干净的解决方案,您可以建议向indent/html.vim
. 如果除了 Mason 之外还有其他语言在 HTML 之上使用这些前缀,那将是添加此类支持的额外参数(甚至可能是您的包装函数)。
推荐阅读
- angular - 如果我不关心响应,Angular 8 是否需要订阅请求
- c - 从系统调用或在 c 中打开时无法识别 curl 命令
- java - 如何验证 Android 应用程序以连接 Spotify?
- typescript - 打字稿装饰器类型推断问题
- c# - 一组具有相同类型 ID 的警报中的自定义排序顺序
- laravel - AJAX POST 请求不适用于 Laravel 中的 XMLHttpRequest
- database - 在 win 10 中安装 postgres 11.5-1 时出现 icacls 错误?
- excel - 如何在打开之前检查 .txt 文件的文件锁定
- python - 从现在到结束日期每月查找天数
- amazon-dynamodb - 保持 DynamoDB 分区键的唯一值