5

私は7行のテキストを持っています:

a
b
c
d
e
f
g

ここで、各行の最後に文字を追加して、次のようにします。

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

「sed」コマンドを使用して、Textmate の「Filter through command」を使用して sed を介して選択を実行できることがわかりました。

sed 's/$/,/'

ここで、1 つの疑問が残ります。これを、何らかの方法で入力を受け取る Textmate コマンドに変換するにはどうすればよいでしょうか (どのテキストを追加すればよいかがわかります)。

(これを行う私の試みは失敗したことが証明されています)

4

4 に答える 4

3

これを Text バンドル内のコマンドにポップすると、クリップボードにあるものはすべて、選択されているすべての行の末尾に追加されます。

#!/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/"
于 2009-09-10T10:06:50.403 に答える
2

バンドル エディターで新しいコマンドを作成する

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

入力ドロップダウンで選択したテキストまたはなし
を選択します出力で既存のテキストを置き換えるを選択します

私はちょうどそれをテストし、それはうまくいきます。
キーボード ショートカットを選択して、より効率的にすることもできます。

于 2009-05-11T21:30:52.973 に答える
2

コマンド ルートを避けて [検索/置換] ダイアログを使用する場合は、次のようにします。

  • 追加したい行を強調表示/選択します
  • 検索ダイアログを開く
  • 「正規表現」にチェックを入れる
  • 「検索」フィールドに追加'$'します(行の終わりを示すため)
  • 「置換」フィールドに追加','します(追加したいもの)
  • Option長押しすると、「すべて置換」が「選択中」に変わります

この手法は、他の多くの便利な方法で適用できます。たとえば、各行にプレフィックスを付けたい場合は に変更'$'します。'^'

于 2009-05-12T20:27:20.090 に答える
2

テキストメニューには、すでに「選択範囲の各行を編集する」というコマンドがあり、正確にこれを行います。最初の行にカーソルが置かれ、そこに入力した内容が各行で繰り返されます。

于 2009-05-03T20:06:47.760 に答える