Назначение семейства моноширинных шрифтов выделенному тексту с помощью сочетания клавиш в Mac OS X

8

Я пишу много технических писем, и мне нравится использовать моноширинный шрифт для битов кода. Выделите текст, нажмите apple-T, выберите мой шрифт из списка избранного, затем закройте окно шрифта. Есть ли способ использовать сочетание клавиш, чтобы применить данный шрифт к текущему выделенному тексту? В идеале это будет для всей ОС, но если это невозможно, я могу использовать его только для одного приложения (Mail.app)

Сэм Барнум
источник
Какая версия? Mail-T работает в Почте 3.6.
@trashgod Я ищу единственное сочетание клавиш, которое я могу использовать, чтобы установить шрифт текущего выделения к указанному шрифту. Вероятно, какой-то макрос.
1
Это кажется довольно тривиальным для AppleScript, а затем просто назначить ключ для этого скрипта. Если кто-то не придет сегодня вечером, я завтра что-нибудь взбесю.
лемонджер

Ответы:

2

Я очень долго искал это.

В конце концов мне удалось получить что-то, что действительно отлично работает для меня, с помощью инструмента Alfred и Highlight CLI.

Вот часть сценария Альфреда:

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

Удостоверьтесь, что ярлык ярлыка добавляет, __SHORTCUT__чтобы быть распознанным, и аргумент "Выбор в OSX":

введите описание изображения здесь

Короткая демоверсия https://youtu.be/y8NJT52APRQ

Ян Бизеул
источник
1

Я не знаю общесистемного способа написания скриптов для панели «Шрифты», но вот несколько способов получить быстрый доступ к моноширинным шрифтам в Mail.app

Способ 1: планирование текстового сообщения

Перейдите в настройки Mail.app> Шрифты и цвета и установите флажок «Использовать шрифт фиксированной ширины для текстовых сообщений».

введите описание изображения здесь

Теперь, когда вы находитесь в сообщении, в котором вы хотите использовать моноширинный шрифт, вы можете просто нажать: Command- Shift- Tи вы можете переключаться между шрифтом фиксированной ширины по вашему выбору и вашим стандартным шрифтом (текстовое сообщение и форматированный текст).

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

Способ 2: установить шрифт с помощью Applescript

Второй способ сделать это - создать новое сообщение с правильным шрифтом, выбранным с помощью Applescript. Вы можете сделать это так:

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

Вы должны установить содержимое на что-то с помощью этого сценария. Кажется, что Mail не позволяет вам установить шрифт для пустого сообщения.

Способ 3: использовать TextExpander

Этот способ стоит денег, но он может дать вам то, что вы ищете. Вы можете настроить пару ярлыков TextExpander ($ 34.99 USD в магазине приложений) для фиксированной ширины и обычного типа, чтобы вы могли переключаться назад и вперед, набрав несколько символов.

TextExpander

TextExpander позволит вам вставлять форматированный текст (текст с установленным шрифтом, цветом, стилем и т. Д.). Просто создайте фрагмент типа Форматированный текст, Изображения и установите шрифт для текста, который вы будете вставлять. Чтобы эта стратегия работала, вам нужно будет указать хотя бы пробел.

Вам понадобятся ваши отрывки, чтобы в них был хотя бы пробел, чтобы шрифт был принят.

Сэмюэл Микел Боулз
источник
1
Сэмюэль, я ищу способ сделать выделенный текст моноширинным, а не все сообщение. Я в порядке с использованием Applescript, который влияет только на выбор текущего приложения. Можете ли вы порекомендовать способ запуска яблочного сценария с помощью специального сочетания клавиш?
Сэм Барнум
1
Сэм, проблема в том, что у Mail.app нет объекта для выделенного текста. Я потратил некоторое время, пытаясь найти способ, и я могу сказать, что нет чистого способа сделать это.
Сэмюэль Микел Боулз
2
С TextExpander вы можете вставить содержимое буфера обмена в отформатированный фрагмент кода. Поэтому, когда вы выделяете, вы просто набираете andX, а затем аббревиатуру своего фрагмента, чтобы вставить его обратно как моноширинный. Добавьте пробел с регулярным форматированием в конец фрагмента, и вы можете продолжать печатать. TextExpander в противном случае безумно полезен; каждый, кто использует Mac для достижения цели, должен в любом случае владеть им.
75-й тромбон
1

В итоге я использовал ручное указание монопространства в некотором тексте, а затем « Формат» -> «Стиль копирования» (Option + Cmd + C), которое копирует формат, но не текст. Затем выберите другой обычный текст и выберите Формат-> Вставить стиль (Option + Cmd + V), который назначит этот формат выделению. После перезапуска вам нужно сделать это снова, и это работает только для одного стиля, но это отвечает моим потребностям.

Сэм Барнум
источник
0

Скопируйте персонажа с определенным стилем:

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

pbcopy -Prefer rtf не включает в себя текстовые данные, поэтому вставка будет работать только в форматированных текстовых представлениях.


Вставьте символ с определенным стилем:

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

Вставить стиль:

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
источник