Autohotkey:剪贴板将标签转换为空格

时间:2017-11-07 19:24:59

标签: text format clipboard autohotkey copy-paste

我有一段代码复制到剪贴板中。粘贴它看起来像这样。其中[tab]是实际的标签缩进

[tab]<header id="masthead" class="site-header">
[tab][tab]<h1>
[tab][tab][tab]<h2>
[tab][tab][tab][tab]<h3>
[tab][tab][tab][tab][tab]<h4>;

我想按一下自动按键以自动规范化代码段。因此,如果每行都有[tab],请删除它。 然后将每个[tab]转换为2个空格[**]

<header id="masthead" class="site-header">
**<h1>
****<h2>
******<h3>
********<h4>;

所以一般的工作流程是:

  1. 将代码复制到剪贴板
  2. 按自动按键
  3. 粘贴新格式化的内容
  4. autohotkey的伪代码看起来像这样

    • 逐行浏览每个剪贴板内容
    • 如果每个项目共享相同数量的[tab]空格,请完全删除它们
    • 逐行,将[tab]转换为[**] 2个空格

2 个答案:

答案 0 :(得分:2)

; convert each tab into 2 spaces:

clipboard =
(
    <header id="masthead" class="site-header">
        <h1>
            <h2>
                <h3>
                    <h4>;
)
clipboard := StrReplace(clipboard, A_Tab, A_Space A_Space)

https://autohotkey.com/docs/commands/StringReplace.htm

答案 1 :(得分:0)

好的问题解决了我现在拥有的一切。我使用了其他源代码段here on autohotkey forum

F9::
clipboard := StrReplace(clipboard, A_Tab, A_Space A_Space)
position := RegExMatch(clipboard, "\S")
test := RegExReplace(clipboard, "m)^[ ]{" . position - 1 . "}")
clipboard := test

作为参考,需要在代码片段中突出显示整行,如此

enter image description here

所以我现在要做的就是:

  1. 复制完整代码
  2. 按F9
  3. 粘贴到我的笔记应用程序(带有codesnippet支持的dynalist.io)