我写了很多技术电子邮件,并且喜欢在代码位上使用等宽字体。突出显示文本,单击apple-T,从收藏夹列表中选择我的字体,然后关闭字体窗口。有没有一种方法可以使用键盘快捷键将给定的字体应用于当前选定的文本?理想情况下,它将在整个操作系统范围内,但是如果不可能,我可以仅将其用于单个应用程序(Mail.app)
我写了很多技术电子邮件,并且喜欢在代码位上使用等宽字体。突出显示文本,单击apple-T,从收藏夹列表中选择我的字体,然后关闭字体窗口。有没有一种方法可以使用键盘快捷键将给定的字体应用于当前选定的文本?理想情况下,它将在整个操作系统范围内,但是如果不可能,我可以仅将其用于单个应用程序(Mail.app)
Answers:
我一直在寻找这样做很长一段时间。
最终,在Alfred和Highlight CLI工具的帮助下,我最终获得了对我来说非常有用的东西。
这是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}'
确保添加了快捷方式触发器__SHORTCUT__
,并且参数为“ OSX中的选择”:
我不知道在系统范围内编写“字体”面板的脚本的方法,但是这里有一些方法可以快速访问Mail.app中的等宽字体。
转到Mail.app的首选项>字体和颜色,然后选中“对纯文本消息使用定宽字体”复选框
现在,当你在你想用你可以简单地打了等宽字体的消息:Command- Shift- T你可以将所选的固定宽度字体和你的标准字体(纯文本消息和富文本)之间切换。
此方法的缺点是,如果接收方尚未将其字体设置为固定宽度的字体,则他们可能看不到预期的消息。
第二种方法是使用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
您必须使用此脚本将内容设置为某些内容。邮件似乎不允许您为空消息设置字体。
这种方式要花钱,但可能会给您带来好处。您可以为固定宽度和常规类型设置几个TextExpander(在应用商店上为$ 34.99 USD)快捷方式,以便您可以通过键入几个字符来回切换。
TextExpander将允许您插入富文本(带有字体,颜色,样式等设置的文本)。只需创建一个格式文本,图片类型的代码片段,然后为您要插入的文本设置字体。您需要至少包含一个空格字符,此策略才能起作用。
您需要在代码片段中至少包含一个空格字符,以确保该字体可以使用。
复制具有特定样式的字符:
echo "<span style=\"font:14px 'Monaco'\"> </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'\"> </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