Weisen Sie ausgewähltem Text mit einer Tastenkombination in Mac OS X eine monospaced Schriftfamilie zu

Ich schreibe viele technische E-Mails und verwende gerne eine monospaced Schriftart für die Codebits. Markieren Sie Text, drücken Sie Apfel-T, wählen Sie meine Schriftart aus der Favoritenliste und schließen Sie dann das Schriftartenfenster. Gibt es eine Möglichkeit, eine Tastenkombination zu verwenden, um eine bestimmte Schriftart auf den aktuell ausgewählten Text anzuwenden? Idealerweise wäre dies betriebssystemweit, aber wenn das nicht möglich ist, kann ich es nur für eine einzelne App (Mail.app) verwenden.

Welche Version? ⌘-T funktioniert in Mail 3.6.
@trashgod Ich suche nach einer einzelnen Tastenkombination, mit der ich die Schriftart der aktuellen Auswahl auf eine bestimmte Schriftart festlegen kann. Vermutlich eine Art Makro.
Dies scheint mit AppleScript ziemlich trivial zu sein und diesem Skript dann einfach eine Taste zuzuweisen. Wenn heute Abend niemand vorbeikommt, werde ich morgen etwas zaubern.

Antworten (4)

Ich habe sehr lange danach gesucht, dies zu tun.

Mit Hilfe von Alfred und dem Highlight-CLI-Tool habe ich es endlich geschafft, etwas zu finden, das wirklich großartig für mich funktioniert.

Hier ist der Teil des Alfred-Skripts:

query="{query}"
if echo $query|grep -e "^__SHORTCUT__"
then
    echo "$query"|sed -E "s/^__SHORTCUT__//"|pbcopy
    syntax=txt
else
    osascript -e 'tell application "System Events" to keystroke "c" using {command down}'
    syntax=$query
fi

pbpaste|/usr/local/bin/highlight --syntax $syntax --font Menlo --font-size 12 --out-format=rtf|pbcopy
osascript -e 'tell application "System Events" to keystroke "v" using {command down}'

Stellen Sie sicher, dass der Shortcut-Trigger __SHORTCUT__erkannt werden soll und das Argument "Selection in OSX" ist:

Geben Sie hier die Bildbeschreibung ein

Kurze Demo https://youtu.be/y8NJT52APRQ

Ich kenne keine systemweite Möglichkeit, das Schriftenbedienfeld zu skripten, aber hier sind einige Möglichkeiten, um schnell auf Monospace-Schriftarten in Mail.app zuzugreifen

Weg 1: Planen Sie eine Textnachricht

Gehen Sie zu den Einstellungen von Mail.app > Schriftarten und Farben und aktivieren Sie das Kontrollkästchen für "Schriftart mit fester Breite für Nur-Text-Nachrichten verwenden".

Geben Sie hier die Bildbeschreibung ein

Wenn Sie sich jetzt in einer Nachricht befinden, in der Sie eine Monospace-Schriftart verwenden möchten, können Sie einfach drücken: Command- Shift- Tund Sie können zwischen der Schriftart Ihrer Wahl mit fester Breite und Ihrer Standardschriftart (einfache Textnachricht und Rich-Text) umschalten.

Der Nachteil dieser Methode besteht darin, dass der Empfänger die Nachricht möglicherweise nicht wie beabsichtigt sieht, wenn er seine Schriftart nicht auf eine Schriftart mit fester Breite eingestellt hat.

Weg 2: Legen Sie die Schriftart mit Applescript fest

Die zweite Möglichkeit besteht darin, mit Applescript eine neue Nachricht mit der richtigen Schriftart zu erstellen. Das kannst du so machen:

tell application "Mail"
    set outgoingMessage to make new outgoing message
    set fontFace to "Times"
    tell outgoingMessage
        set the content to " "
        set font of content to fontFace
        set size of content to (14)
        set visible to true
    end tell
end tell

Sie müssen den Inhalt mit diesem Skript auf etwas setzen. Anscheinend lässt Mail Sie die Schriftart für eine leere Nachricht nicht festlegen.

Weg 3: Verwenden Sie TextExpander

Dieser Weg kostet Geld, aber er könnte Ihnen das geben, wonach Sie suchen. Sie könnten ein paar TextExpander -Verknüpfungen (34,99 USD im App Store) für feste Breite und normalen Typ einrichten, sodass Sie durch Eingabe einiger Zeichen hin und her wechseln können.

TextExpander

Mit TextExpander können Sie Rich-Text einfügen (Text mit festgelegter Schriftart, Farbe, Stil usw.). Erstellen Sie einfach ein Snippet vom Typ Formatierter Text, Bilder und legen Sie eine Schriftart für den einzufügenden Text fest. Sie müssen mindestens ein Leerzeichen einfügen, damit diese Strategie funktioniert.

Ihre Snippits müssen mindestens ein Leerzeichen enthalten, um sicherzustellen, dass die Schriftart verwendet wird.

Samuel, ich suche nach einer Möglichkeit, nur den hervorgehobenen Text monospaced zu machen, nicht die gesamte Nachricht. Ich bin damit einverstanden, ein Applescript zu verwenden, das nur die Auswahl der aktuellen App betrifft. Können Sie eine Möglichkeit empfehlen, das Applescript mit einer benutzerdefinierten Tastenkombination auszulösen?
Sam, das Problem ist, dass Mail.app kein Objekt für den ausgewählten Text hat. Ich habe einige Zeit damit verbracht, einen Weg zu finden, und ich kann sagen, dass es keinen sauberen Weg gibt, dies zu erreichen.
Mit TextExpander können Sie den Inhalt der Zwischenablage in das Snippet im Monospace-Format einfügen. Wenn Sie also markieren, geben Sie einfach ⌘X und dann Ihre Snippet-Abkürzung ein, um sie wieder als Monospace einzufügen. Fügen Sie am Ende des Snippets ein Leerzeichen mit normaler Formatierung hinzu, und Sie können mit der Eingabe fortfahren. TextExpander ist ansonsten wahnsinnig nützlich; Jeder, der einen Mac verwendet, um Dinge zu erledigen, sollte ihn sowieso besitzen.

Was ich am Ende verwendet habe, war die manuelle Angabe von Monospace in einem Text, dann Format -> Copy Style (Option + Cmd + C), wodurch das Format, aber nicht der Text kopiert wird. Wählen Sie dann einen anderen einfachen Text und Format->Stil einfügen (Option+Cmd+V), der dieses Format der Auswahl zuweist. Nach dem Neustart müssen Sie dies erneut tun, und es funktioniert nur für einen Stil, aber das entspricht meinen Anforderungen.

Kopieren Sie einen Charakter mit einem bestimmten Stil:

echo "<span style=\"font:14px 'Monaco'\">&nbsp;</span>" | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf

pbcopy -Prefer rtfenthält keine Nur-Text-Daten, daher funktioniert das Einfügen nur in Rich-Text-Ansichten.


Ein Zeichen mit einem bestimmten Stil einfügen:

try
    try
        set old to the clipboard
    end try
    set html to quoted form of "<span style=\"font:14px 'Monaco'\">&nbsp;</span>"
    do shell script "echo " & html & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try

Stil einfügen:

try
    try
        set old to the clipboard
    end try
    tell application "System Events" to keystroke "c" using command down
    delay 0.03
    set input to Unicode text of (the clipboard as record)
    set txt to quoted form of ("<span style=\"font:14px 'Monaco'\">" & input & "</span>")
    do shell script "echo " & txt & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
    tell application "System Events" to keystroke "v" using command down
    delay 0.03
    set the clipboard to old
end try