Vire um único comando sed em um comando reutilizável Textmate
Pergunta
Eu tenho 7 linhas de texto:
a
b
c
d
e
f
g
Agora eu quero adicionar caracteres ao final de cada linha, para acabar com:
a,
b,
c,
d,
e,
f,
g,
Eu achei que eu possa usar o comando "sed" e correr minha selecção através sed usando "Filter através do comando" em Textmate
sed 's/$/,/'
Agora, uma pergunta permanece: como faço para transformar isso em um comando Textmate que leva entrada em algum tipo de caminho (por isso sabe o texto para anexar)
(As minhas tentativas em fazer isso não têm tido sucesso)
Solução
Pop isso em um comando dentro do pacote texto, ele vai anexar o que está na área de transferência para o fim de todas as linhas que foram selecionadas:
#!/bin/bash
if [[ $(pbpaste|wc -l) -eq 0 ]]
then r=`pbpaste`
sed 's/$/'$r'/'
else sed 's/$/,/'
fi
É actualmente limitada a acrescentar valor de uma linha de texto, se a área de transferência contém mais de uma linha que será o padrão para uma vírgula no final das linhas selecionadas.
Editar:
Para levar isso um pouco mais, aqui está uma versão que fornece uma caixa de diálogo que solicita a entrada da string que será anexado a cada linha na seleção:
#!/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/"
Outras dicas
Em Texto Menu já existe um comando " Editar cada linha na seleção " exatamente fazer isso. Ele vai colocar o cursor na primeira linha e que você digita lá repetido em cada linha.
Criar um novo comando no editor de pacote
#!/bin/bash
sed 's/$/,/'
Na entrada suspensa, selecione O texto selecionado ou Nada
na saída selecione Substituir texto existente
Eu só testei e funciona bem.
Você também pode escolher um atalho de teclado para torná-lo mais eficiente.
Se você está disposto a evitar a rota de comando e simplesmente usar a localizar / substituir diálogo simplesmente faça o seguinte:
- destaque / seleccionar as linhas que você gostaria de acréscimo para
- abrir o Find diálogo
- Marque 'Expressões Regulares'
- no campo 'Localizar',
'$'
add (para indicar o fim da linha) - no campo 'Substituir',
','
add (o que você quer em anexo) -
Option
espera, isso vai mudar "Substituir tudo" para "Na Seleção"
Esta técnica pode ser aplicada em uma série de outras maneiras úteis. Por exemplo, alterar '$'
para '^'
se você quiser prefixar cada linha.