2009-05-02 6 views
5

У меня есть 7 строк текста:Включите один патч в команду в многоразовой команду Textmate

a 
b 
c 
d 
e 
f 
g 

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

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

я обнаружил, что я могу использовать команду «SED» и запустить свой выбор с помощью СЭД, используя «Фильтр по команде» в Textmate

sed 's/$/,/' 

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

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

ответ

3

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

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

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

+0

Я знаю; но он, похоже, не может добавить. Если я поместил свой курсор в начало строки, нажмите ярлык, затем он перескочит до конца. Я мог бы использовать выбор столбцов, но затем снова использую мышь, что не так быстро. – Wolfr

+2

колонка выбор не требуется мышь. используйте страницу вверх + сдвиг и нажмите кнопку, когда закончите. Я не знаю о sed. но в textmate вы можете легко написать команду bundle, которая заменит выделение на обработанный текст sed, если вы знаете sed/ruby ​​/ regex + ruby ​​и т. д. – nexneo

2

Создать новую команду в редакторе расслоении

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

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

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

2

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

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

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

Смежные вопросы