【问题标题】:Turn a single sed command into a reusable Textmate command将单个 sed 命令转换为可重用的 Textmate 命令
【发布时间】:2010-10-23 09:06:49
【问题描述】:

我有 7 行文字:

a
b
c
d
e
f
g

现在我想在每行的末尾添加字符,以结束:

a,
b,
c,
d,
e,
f,
g,

我发现我可以使用“sed”命令并使用 Textmate 中的“通过命令过滤”通过 sed 运行我的选择

sed 's/$/,/'

现在,还有一个问题:如何将其转换为 Textmate 命令,以某种方式接受输入(因此它知道要附加什么文本)?

(我在这方面的尝试被证明是不成功的)

【问题讨论】:

    标签: text editor sed textmate


    【解决方案1】:

    将其弹出到文本包中的命令中,它会将剪贴板中的任何内容附加到已选择的所有行的末尾:

    #!/bin/bash
    if [[ $(pbpaste|wc -l) -eq 0 ]]
        then r=`pbpaste`
        sed 's/$/'$r'/'
        else sed 's/$/,/'
    fi
    

    目前仅限于附加一行文本,如果剪贴板包含多行文本,则默认为所选行末尾的逗号。

    编辑:

    为了更进一步,这里有一个版本,它提供了一个对话框,提示输入将附加到所选内容的每一行的字符串:

    #!/bin/bash
    r=$(CocoaDialog inputbox --title "String to be appended to EOL" \
       --informative-text "Enter string:" \
       --button1 "Okay" --button2 "Cancel")
    
    [[ $(head -n1 <<<"$r") == "2" ]] && exit_discard
    
    r=$(tail -n1 <<<"$r")
    
    sed "s/$/$r/"
    

    【讨论】:

      【解决方案2】:

      如果您愿意避免使用命令路径而只使用“查找/替换”对话框,只需执行以下操作:

      • 突出显示/选择要附加到的行
      • 打开“查找”对话框
      • 检查“正则表达式”
      • 在“查找”字段中,添加'$'(表示行尾)
      • 在“替换”字段中,添加','(您要附加的内容)
      • 按住Option,这会将“全部替换”更改为“选择中”

      这项技术可以以许多其他有用的方式应用。例如,如果您想为每一行添加前缀,请将 '$' 更改为 '^'

      【讨论】:

        【解决方案3】:

        在包编辑器中创建一个新命令

        #!/bin/bash
        sed 's/$/,/'
        

        在输入下拉菜单中选择所选文本
        在输出中选择替换现有文本

        我刚刚测试了它,它工作正常。
        您还可以选择键盘快捷键以提高效率。

        【讨论】:

          【解决方案4】:

          Text 菜单中已经有一个命令“Edit each line in selection”正是这样做的。它会将光标放在第一行,然后在每一行重复输入的内容。

          【讨论】:

          • 我知道;但它似乎无法前置。如果我将光标放在行首,点击快捷方式,然后它会跳到最后。我可以使用列选择,但是我再次使用鼠标,速度不够快。
          • 列选择不需要鼠标。使用 page up + shift 并在完成后按选项。我不知道sed。但是在 textmate 中,如果你知道 sed/ruby/regex+ruby 等,你可以很容易地编写 bundle 命令,用 sed 处理的文本替换选择。
          猜你喜欢
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 2016-08-26
          • 2017-09-06
          • 1970-01-01
          • 1970-01-01
          • 2011-03-07
          • 1970-01-01
          相关资源
          最近更新 更多