【问题标题】:How do I add four spaces to the beginning of every line in a selected text via autohotkey?如何通过自动热键在所选文本的每行开头添加四个空格?
【发布时间】:2016-07-21 04:51:12
【问题描述】:

我目前正在使用以下代码。当每一行都以换行符开头时它起作用,但不是其他的。 我尝试了一些导致 Autohotkey 自动剥离字符串开头的变体。

AppsKey::
    oldClipBoard := ClipboardAll ; old Clipboard
    clipboard = ; Emptying clipboard to prepare for ClipWait
    SendInput, ^c ; Copying the selected text (Crtl+C)
    ClipWait

    selected_text := Clipboard

    StringReplace, selected_text , selected_text , `r`n , `n , All

    placeholder := "`n    "
    StringReplace, selected_text , selected_text , `n , %placeholder% , All

    SendInput, %selected_text%

    ClipBoard := oldClipBoard ; restore ClipBoard

    return

【问题讨论】:

    标签: regex string autohotkey


    【解决方案1】:

    尝试在要粘贴的字符串的开头添加四个空格:

    SendInput, {space 4}%selected_text%
    

    并且不要在您的选择中选择上一行末尾的换行符或回车符。

    注意,由于文本选择通常不会以换行符开头,因此上面的代码仅将四个字符 {space 4} 添加到选择的开头,并且 OP 的原始代码处理每个新行的四个空格(如它们确实有前面的换行符,然后被换行符和四个空格替换)。

    【讨论】:

    • 我猜你没有读过 OP。 It works when every line begins with a newline character but not otherwise. 换句话说,OP 已经有在每个 新行 处添加四个空格的代码,这是通过将换行符 `n 替换为换行符加上四个空格来完成的。不幸的是,这种方法忽略了原始选择的第一行(因为没有先前的换行符),而接受的答案 (AA) 解决了这个问题。
    • 我无法撤消反对票。 wtf。从什么时候开始......如果你编辑你的帖子,我可以。不知道大声笑。对不起。
    • 好的——我会添加进一步的解释,让我们看看会发生什么。
    • 好的 - 很高兴知道编辑帖子确实允许您撤消 DV(至少,看起来就是这样)。谢谢,我学到了一些东西(即上面的评论很有用),所以我把它晒了。
    猜你喜欢
    • 1970-01-01
    • 2020-11-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多