2009-05-02 22 views
5

我有7行文字:打開一個sed命令到一個可重用的TextMate命令

a 
b 
c 
d 
e 
f 
g 

現在我想字符添加到每一行的末尾,直到結束:

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

我發現我可以使用「sed的」命令,並通過運行我選擇在TextMate中

sed 's/$/,/' 

沒有使用「通過命令過濾器」的sed w,還有一個問題:我怎麼把它變成一個Textmate命令,以某種方式接受輸入(所以它知道要附加的文本)?

(在做這個嘗試我已經證明不成功)

回答

3

流行到文本束中的命令這一點,它會追加無論是在剪貼板已選擇的所有行的末尾:

#!/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

文本菜單已經有一個命令「編輯在選擇每行」正是這樣做。它會將光標放在第一行,並在每行上重複您鍵入的內容。

+0

我知道;但它似乎無法預先安排。如果我將光標放在行的開頭,點擊快捷方式,然後跳到最後。 我可以使用列選擇,但我再次使用鼠標,這是不夠快。 – Wolfr 2009-05-03 20:17:52

2

在包編輯器

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

在輸入下拉菜單中創建一個新的命令來選擇所選文本沒有
在輸出選擇替換現有文本

我只是測試它和它工作正常。
您也可以選擇一個鍵盤快捷鍵,以使其更高效。

2

如果你願意,以避免命令路線,只是用查找/替換對話框簡單地做如下:

  • 高亮/選擇的線路要追加到
  • 打開查找對話框
  • 檢查「正則表達式」中的「查找」字段
  • ,加'$'(表示該行的結束)在「替換」字段
  • ,加','(你想追加)
  • 持有Option,這將改變「全部替換」,以「在選擇」

這種技術可以在許多其他有用的方式應用。例如,如果要爲每行加前綴,請將'$'更改爲'^'