5 Stimmen

Einen einzelnen sed-Befehl in einen wiederverwendbaren Textmate-Befehl verwandeln

Ich habe 7 Textzeilen:

a
b
c
d
e
f
g

Nun möchte ich am Ende jeder Zeile Zeichen hinzufügen, so dass am Ende Folgendes steht:

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

Ich habe herausgefunden, dass ich den "sed"-Befehl verwenden und meine Auswahl mit "Filter through command" in Textmate durch sed laufen lassen kann

sed 's/$/,/'

Nun bleibt noch eine Frage: Wie mache ich daraus einen Textmate-Befehl, der in irgendeiner Form Eingaben entgegennimmt (damit er weiß, welcher Text angehängt werden soll)?

(Meine Versuche, dies zu tun, haben sich als erfolglos erwiesen)

3voto

Greg Annandale Punkte 491

Fügen Sie dies in einen Befehl innerhalb des Textbündels ein, und es wird alles, was sich in der Zwischenablage befindet, an das Ende aller ausgewählten Zeilen angehängt:

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

Die Funktion ist derzeit auf das Anhängen von Text in einer Zeile beschränkt. Enthält die Zwischenablage mehr als eine Zeile, wird standardmäßig ein Komma am Ende der ausgewählten Zeilen gesetzt.

編集する。

Um das Ganze noch ein wenig weiter zu treiben, hier eine Version, die ein Dialogfeld bereitstellt, das zur Eingabe der Zeichenfolge auffordert, die an jede Zeile in der Auswahl angehängt werden soll:

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

2voto

nexneo Punkte 1119

En Text Menü gibt es bereits einen Befehl " Jede Zeile in der Auswahl bearbeiten " genau dies tun. Es setzt den Cursor in die erste Zeile und wiederholt das, was Sie dort eingeben, in jeder Zeile.

2voto

andi Punkte 14214

Erstellen Sie einen neuen Befehl im Bundle-Editor

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

Wählen Sie in der Dropdown-Liste für die Eingabe Ausgewählter Text o Nichts
Auf dem Ausgang wählen Ersetzen Sie bestehenden Text

Ich habe es gerade getestet und es funktioniert einwandfrei.
Sie können auch ein Tastaturkürzel wählen, um die Arbeit effizienter zu gestalten.

2voto

Devin Reams Punkte 912

Wenn Sie den Weg über die Befehle vermeiden und einfach das Dialogfeld Suchen/Ersetzen verwenden möchten, gehen Sie wie folgt vor:

  • Markieren Sie die Zeilen, an die Sie etwas anhängen möchten
  • den Suchdialog öffnen
  • Reguläre Ausdrücke" prüfen
  • im Feld 'Suchen', fügen Sie '$' (um das Ende der Zeile anzuzeigen)
  • im Feld 'Ersetzen', fügen Sie ',' (was Sie angefügt haben möchten)
  • halten Option Dadurch wird "Alle ersetzen" in "In Auswahl" geändert.

Diese Technik kann auf eine Reihe anderer nützlicher Arten angewendet werden. Zum Beispiel, indem man die '$' a '^' wenn Sie jeder Zeile ein Präfix voranstellen wollen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X