obsidian-pangu icon indicating copy to clipboard operation
obsidian-pangu copied to clipboard

希望 `行内代码` 与其他文本之间也支持盘古之白

Open MrPaiZi opened this issue 1 year ago • 4 comments

目前效果:

这个 demo 的 fps 只有 30,估计是`Player`类的`run()`方法太慢

这个 demo 的 fps 只有 30,估计是Player类的run()方法太慢


期望效果:

这个 demo 的 fps 只有 30,估计是 `Player` 类的 `run()` 方法太慢

这个 demo 的 fps 只有 30,估计是 Player 类的 run() 方法太慢

MrPaiZi avatar May 06 '23 15:05 MrPaiZi

这个简单,用正则Regex Pipeline替换

(?<![ ])(`.+?`)(?![ ])

 $1

$1前后有各有一个空格

就行了,不过这个主要的问题是不能忽略代码块里的反单引号``

```powershell
`some codes with`
```

所以就不能无脑对整个文档使用,可以选中需要替换的文本后使用。 Regex Pipeline写法

:: 反单引号前后加空格
"(?<![ ])(`.+?`)(?![ ])"->" $1 "

9micra avatar May 25 '23 17:05 9micra

@9micra 谢谢你介绍的插件,之后我会研究研究。但是感觉盘古之白没这么简单,它不仅是把反引号 ` 包裹的内容两边加个空格,还有很多特殊情况,比如行内代码前后紧接着中文的标点符号,或者后面紧接着英文的标点符号,这些情况下是不希望加空格的:

这个 `demo`,`fps` 只有 `30`。This `demo`, `fps` is only `30`.

一旦无脑加空格,会变成这样:

这个 `demo` , `fps` 只有 `30` 。This `demo` , `fps` is only `30` .

对比一下:

这个 demofps 只有 30。This demo, fps is only 30. 这个 demofps 只有 30 。This demo , fps is only 30 .

所以用正则表达式就想实现不太行,更何况这个表达式我刚刚测试了一下,好像还有 bug:它的原理是识别前后未加空格的代码块并给其前后加上空格吧?可如果一块行内代码前面加了空格而后面没加——如我上面举例的 这个 `demo`,——那么此时调用正则替换,会匹配到从后面那个反引号到下一个代码块开头的反引号之间包裹的部分。

MrPaiZi avatar May 26 '23 15:05 MrPaiZi

@MrPaiZi 抱歉,才看到,我现在用Linter了, 它有内置了很多Ob的md语法规范,当然也有CJK(包括中文)和英文之间加空格 和 在行内代码与CJK间加空格,是比较智能的,不是无脑的正则。

9micra avatar Jun 05 '23 12:06 9micra

@9micra 谢谢!这个插件太好用了。

MrPaiZi avatar Jun 06 '23 09:06 MrPaiZi