Przypisz rodzinę czcionek o stałej szerokości do zaznaczonego tekstu za pomocą skrótu klawiaturowego w Mac OS X

8

Piszę wiele technicznych wiadomości e-mail i lubię używać czcionek o stałej szerokości dla bitów kodu. Zaznacz tekst, naciśnij Apple-T, wybierz moją czcionkę z listy ulubionych, a następnie zamknij okno czcionek. Czy istnieje sposób użycia skrótu klawiaturowego w celu zastosowania danej czcionki do aktualnie zaznaczonego tekstu? Najlepiej byłoby, gdyby obejmował cały system operacyjny, ale jeśli nie jest to możliwe, mogę go użyć tylko dla jednej aplikacji (Mail.app)

Sam Barnum
źródło
Jaka wersja ⌘-T działa w Mail 3.6.
@trashgod Szukam pojedynczego skrótu klawiaturowego, którego można użyć do ustawienia czcionki bieżącego zaznaczenia na określoną czcionkę. Prawdopodobnie jakieś makro.
1
Wydaje się to dość trywialne w przypadku AppleScript, a następnie wystarczy przypisać klucz do tego skryptu. Jeśli ktoś nie przyjdzie dziś wieczorem, przygotuję coś jutro.
lemonginger

Odpowiedzi:

2

Bardzo długo szukałem tego.

W końcu udało mi się skończyć z czymś, co naprawdę działa dla mnie świetnie, za pomocą narzędzia Alfred i Highlight CLI.

Oto część skryptu Alfred:

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}'

Upewnij się, że wyzwalacz skrótu dodaje się __SHORTCUT__do rozpoznania, a argumentem jest „Wybór w OSX”:

wprowadź opis zdjęcia tutaj

Krótkie demo https://youtu.be/y8NJT52APRQ

Yann Bizeul
źródło
1

Nie znam ogólnosystemowego sposobu skryptowania panelu Czcionki, ale oto kilka sposobów szybkiego uzyskania dostępu do czcionek o stałej szerokości w Mail.app

Sposób 1: Zaplanuj wiadomość tekstową

Przejdź do preferencji Mail.app> Czcionki i kolory i zaznacz pole wyboru „Użyj czcionek o stałej szerokości do zwykłych wiadomości tekstowych”

wprowadź opis zdjęcia tutaj

Teraz, gdy jesteś w wiadomości, w której chcesz użyć czcionki o stałej szerokości , możesz po prostu nacisnąć: Command- Shift- Ti możesz przełączać się między czcionką o stałej szerokości i czcionką standardową (zwykła wiadomość tekstowa i tekst sformatowany).

Minusem tej metody jest to, że jeśli odbiorca nie ustawił czcionki na czcionkę o stałej szerokości, może nie zobaczyć komunikatu zgodnie z przeznaczeniem.

Sposób 2: Ustaw czcionkę za pomocą Applescript

Drugim sposobem na to byłoby utworzenie nowej wiadomości z poprawną czcionką wybraną za pomocą Applescript. Możesz to zrobić w następujący sposób:

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

Za pomocą tego skryptu musisz ustawić treść na coś. Wygląda na to, że Mail nie pozwala ustawić czcionki pustej wiadomości.

Sposób 3: Użyj TextExpander

Taki sposób kosztuje, ale może dać ci to, czego szukasz. Możesz skonfigurować kilka skrótów TextExpander (34,99 USD w sklepie z aplikacjami) dla stałej szerokości i normalnego typu, aby móc przełączać się między nimi, wpisując kilka znaków.

TextExpander

TextExpander pozwala wstawiać tekst sformatowany (tekst z czcionką, kolorem, stylem itp.). Wystarczy utworzyć fragment typu Tekst sformatowany, Obrazki i ustawić czcionkę dla tekstu, który chcesz wstawić. Aby ta strategia działała, musisz podać co najmniej znak spacji.

Będziesz potrzebować, aby fragmenty zawierały co najmniej znak spacji, aby zapewnić, że czcionka zajmie.

Samuel Mikel Bowles
źródło
1
Samuelu, szukam sposobu, aby wyróżnić tekst w jednej linii, a nie całą wiadomość. Nie przeszkadza mi użycie Applescript, który wpływa tylko na wybór bieżącej aplikacji. Czy możesz polecić sposób na uruchomienie skryptu jabłkowego za pomocą niestandardowego skrótu klawiaturowego?
Sam Barnum,
1
Sam, problem polega na tym, że Mail.app nie ma obiektu dla zaznaczonego tekstu. Spędziłem trochę czasu, próbując znaleźć sposób i mogę powiedzieć, że nie ma czystego sposobu na osiągnięcie tego.
Samuel Mikel Bowles,
2
TextExpander umożliwia wstawianie zawartości schowka do fragmentu sformatowanego w przestrzeni kosmicznej. Po podświetleniu wpisujesz ⌘X, a następnie skrót skrótu, aby wkleić go z powrotem jako monospace. Dodaj spację z regularnym formatowaniem na końcu fragmentu i możesz pisać dalej. TextExpander jest szalenie użyteczny; i tak każdy, kto używa komputera Mac do załatwiania spraw, powinien go posiadać.
75. puzon
1

Skończyło się to na ręcznym określeniu monospace w jakimś tekście, a następnie Format -> Styl kopiowania (Opcja + Cmd + C), który kopiuje format, ale nie tekst. Następnie wybierz inny zwykły tekst i Format-> Wklej styl (Opcja + Cmd + V), który przypisuje ten format do zaznaczenia. Po ponownym uruchomieniu musisz to zrobić ponownie i działa tylko dla jednego stylu, ale to odpowiada moim potrzebom.

Sam Barnum
źródło
0

Skopiuj znak o określonym stylu:

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

pbcopy -Prefer rtf nie zawiera danych tekstowych, więc wklejanie działa tylko w widokach tekstu sformatowanego.


Wstaw znak o określonym stylu:

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

Wklej styl:

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
Lri
źródło