aptend / typing-transformer-obsidian

Improved, configurable auto formatting as typing in Obsidian
MIT License
52 stars 1 forks source link

功能请求:在选中词语的两端自动添加【】,最终效果为【所选词语】,类似在Emeditor中的那样 #66

Open tyf2018 opened 2 years ago

tyf2018 commented 2 years ago

我添加了一条规则,'【' -> '【' + '】',执行正常。现在我期待:如果能在选中词语的两端自动添加【】,最终效果为【所选词语】,类似在Emeditor中的那样,而不是在敲出【字符的瞬间只会删掉所选词语。请问后续会考虑支持此功能吗?

aptend commented 2 years ago

Hello,感谢使用~ 我可能没理解正确,但感觉你描述的期待正是 '【' -> '【' + '】' 规则所实现的?或者你可以再描述一下 '【' -> '【' + '】' 目前的行为和你预期的差异?

tyf2018 commented 2 years ago

@aptend Hi,

期待效果如:

https://user-images.githubusercontent.com/56342788/190836018-53cce163-b418-4cec-acf4-f5f16cb7a391.mp4

目前行为:

https://user-images.githubusercontent.com/56342788/190836047-b02dda9d-c532-462a-ad54-f5a1d7392481.mp4

aptend commented 2 years ago

看起来是 '【' -> '【' + '】' 没有正常工作,但我的机器上没有复现相同的问题。

sample

其他两侧插入的规则的情况呢,比如 'k' -> 'k' + 'k' 能出现 k所选词语k 吗?

另外可以提供一下你目前的规则配置和所装的插件列表?不清楚是不是和其他插件有冲突

tyf2018 commented 2 years ago

应该是跟输入法有关,英文状态下,类似'k' -> 'k' + 'k'的规则,可以得到预期结果,但切换中文输入法后,则会删掉所选词语(如视频中所示)。

我用的是小狼毫输入法。

另外我的插件列表如下: auto-note-mover copy-url-in-preview creases customizable-page-header-buttons dataview Enhanced-editing find-unlinked-files hotkeysplus-obsidian longform media-extended obsidian-another-quick-switcher obsidian-columns obsidian-copy-block-link obsidian-dynamic-highlights obsidian-excalidraw-plugin obsidian-hypothesis-plugin obsidian-kanban obsidian-reminder-plugin obsidian-shellcommands obsidian-sidekick quick-explorer quickadd recent-files-obsidian tag-wrangler templater-obsidian typing-transformer-obsidian various-complements yaml-bulk-edit

设置:

# Line head conversion
# Note: this rule can't apply to the very first line of the document
'\n》|' -> '\n>|'
'\n、|' -> '\n/|'

# CN symbols to EN
'。。|' -> '.|'
'》》|' -> '>|'
'、、|' -> '/|'
';;|' -> ';|'
',,|' -> ',|'

# Auto-pair, Input Conversion, and Deletion
'《《|》' -> '<|' # this one take higer priority than the next line
'《|'    -> '《|》'
'《|》'   -x '|'
'((|)' -> '(|)'
'(|'     -> '(|)'
'(|)'   -x '|'

# Auto code block
'··|'  -> '`|`' # inline block
'`·|`' -> '```|\n```'

# have fun converting!
'dpx|' -> 'don\'t panic|'

# Selection Insert Rules
'·'  -> '`' + '`'
'¥'  -> '$' + '$'
'《'  -> '《' + '》'
'<'  -> '<' + '>'
'【|' -> '【|】'
'【'  -> '【' + '】'
'('  -> '(' + ')'
'“'  -> '“' + '”'
'k'  -> 'k' + 'k'
caasion commented 2 years ago

@aptend @tyf2018 To see if it is due to a plugin's influence you could use "Divide & Conquer" by pseudometa. It helps with enabling and disabling plugins in bulk.

aptend commented 2 years ago

感觉很可能是输入法的问题,从视频上看,输入法在输入 【 前已经将选中区域置空了,然后再输入 【,这会命中 '【|' -> '【|】' 规则,于是出现成对的【】。

@tyf2018 你可以到插件目录下把的 data.json 里面的 debug 字段改为 true ,重启 obsidian,然后在 obsidian 的调试台(ctrl-shift-i) 确定下字符输入的过程

选中区域再输入 【,成功转换后只会打印类似这样的两行记录

image

tyf2018 commented 2 years ago

@aptend 是与输入法有关,但是我在想是否可以提高插件的兼容性,以改善这个问题。因为在Emeditor中,类似的操作是成功的。

另外这是控制台中的截图 image

tyf2018 commented 2 years ago

Divide & Conquer

Thanks.

aptend commented 2 years ago

另外这是控制台中的截图 image

这里确实是先插入了一个空格,完成内容替换后才触发 ’【|' -> '【|】' 的……

你平时输入【不会插入空格是吧?我觉得大概率是的,不然你也不用这输入法了 😂 , 如果是这样,我还没想到这个空格的原理是什么,但感觉插件好像不好处理,暂时没什么想法