Превратите одну команду sed в команду Textmate для повторного использования - PullRequest
5 голосов
/ 03 мая 2009

У меня есть 7 строк текста:

a
b
c
d
e
f
g

Теперь я хочу добавить символы в конец каждой строки, чтобы в итоге:

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

Я обнаружил, что могу использовать команду "sed" и выполнить выбор через sed с помощью команды "Фильтровать по" в Textmate

sed 's/$/,/'

Теперь остается один вопрос: как мне превратить это в команду Textmate, которая каким-либо образом принимает ввод (чтобы он знал, какой текст добавить)?

(Мои попытки сделать это оказались безуспешными)

Ответы [ 4 ]

3 голосов
/ 10 сентября 2009

Вставьте это в команду в текстовом пакете, она добавит все, что находится в буфере обмена, в конец всех выбранных строк:

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

В настоящее время он ограничивается добавлением текста на одну строку, если в буфере обмена содержится более одной строки, по умолчанию в конце выбранных строк будет использоваться запятая.

Edit:

Чтобы продвинуться немного дальше, вот версия, которая предоставляет диалоговое окно, которое запрашивает ввод строки, которая будет добавлена ​​к каждой строке в выделении:

#!/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 голосов
/ 12 мая 2009

Создать новую команду в редакторе пакетов

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

В раскрывающемся списке выберите Выбранный текст или Ничего
На выходе выберите Заменить существующий текст

Я только что проверил это, и он отлично работает.
Вы также можете выбрать сочетание клавиш, чтобы сделать его более эффективным.

2 голосов
/ 13 мая 2009

Если вы хотите избежать командного маршрута и просто использовать диалог поиска / замены, просто сделайте следующее:

  • выделите / выберите линии, которые вы хотите добавить к
  • открыть диалог поиска
  • отметьте «Регулярные выражения»
  • в поле «Найти», добавьте '$' (чтобы указать конец строки)
  • в поле «Заменить», добавьте ',' (что вы хотите добавить)
  • удерживайте Option, изменится «Заменить все» на «В выделении»

Эта техника может быть применена рядом других полезных способов. Например, изменив '$' на '^', если вы хотите добавить префикс к каждой строке.

2 голосов
/ 04 мая 2009

В Текст меню уже есть команда " Редактировать каждую строку в выделении ", точно сделайте это. Он поместит курсор на первую строку, а то, что вы там напечатаете, повторяется в каждой строке.

...