Asigne una familia de fuentes monoespaciadas al texto seleccionado con el método abreviado de teclado en mac os x

8

Escribo muchos correos electrónicos técnicos y me gusta usar una fuente monoespaciada para los bits de código. Resalte el texto, presione apple-T, elija mi fuente de la lista de favoritos, luego cierre la ventana de fuentes. ¿Hay alguna manera de usar un método abreviado de teclado para aplicar una fuente determinada al texto seleccionado actualmente? Idealmente, esto sería todo el sistema operativo, pero si eso no es posible, puedo usarlo para una sola aplicación (Mail.app)

Sam Barnum
fuente
Que versión ⌘-T funciona en Mail 3.6.
@trashgod Estoy buscando un método abreviado de teclado único que pueda usar para establecer la fuente de la selección actual en una fuente específica. Probablemente algún tipo de macro.
1
Esto parece bastante trivial para hacer con AppleScript y luego simplemente asignar una clave a ese script. Si no viene alguien esta noche, prepararé algo mañana.
lemonginger

Respuestas:

2

He estado buscando hacer esto por mucho tiempo.

Finalmente logré terminar con algo que realmente funciona muy bien para mí, con la ayuda de la herramienta Alfred y Highlight CLI.

Aquí está la porción del script 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}'

Asegúrese de que el activador de acceso directo se agregue __SHORTCUT__para ser reconocido y el argumento sea "Selección en OSX":

ingrese la descripción de la imagen aquí

Demo breve https://youtu.be/y8NJT52APRQ

Yann Bizeul
fuente
1

No conozco una forma en todo el sistema de crear un script para el panel de Fuentes, pero aquí hay algunas formas de obtener acceso rápido a las fuentes monoespaciales en Mail.app

Forma 1: Planificar mensaje de texto

Vaya a las preferencias de Mail.app> Fuentes y colores y marque la casilla de verificación "Usar fuente de ancho fijo para mensajes de texto sin formato"

ingrese la descripción de la imagen aquí

Ahora, cuando se encuentra en un mensaje en el que desea utilizar una fuente monoespaciada, simplemente puede presionar: Command- Shift- Ty puede alternar entre la fuente de ancho fijo que elija y su fuente estándar (mensaje de texto plano y texto enriquecido).

La desventaja de este método es que si el receptor no ha configurado su fuente en una fuente de ancho fijo, es posible que no vea el mensaje según lo previsto.

Camino 2: establecer la fuente con Applescript

La segunda forma de hacerlo sería crear un nuevo mensaje con la fuente correcta elegida usando Applescript. Puedes hacer eso así:

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

Debe configurar el contenido en algo con este script. Parece que Mail no te permite configurar la fuente para un mensaje vacío.

Camino 3: usar TextExpander

De esta manera, cuesta dinero, pero podría darte lo que buscas. Puede configurar un par de accesos directos TextExpander ($ 34.99 USD en la tienda de aplicaciones) para ancho fijo y tipo normal para que pueda cambiar de un lado a otro escribiendo algunos caracteres.

TextExpander

TextExpander le permitirá insertar texto enriquecido (texto con una fuente, color, estilo, etc.). Simplemente cree un fragmento de tipo Texto con formato, Imágenes y configure una fuente para el texto que va a insertar. Deberá incluir al menos un carácter de espacio para que esta estrategia funcione.

Necesitará que sus fragmentos incluyan al menos un carácter de espacio para asegurarse de que la fuente tomará.

Samuel Mikel Bowles
fuente
1
Samuel, estoy buscando una manera de hacer que el texto resaltado sea monoespaciado, no todo el mensaje. Estoy de acuerdo con usar un Applescript que solo afecta la selección de la aplicación actual. ¿Me puede recomendar una forma de activar el AppleScript con un atajo de teclado personalizado?
Sam Barnum
1
Sam, el problema es que Mail.app no ​​tiene un objeto para el texto seleccionado. Pasé algún tiempo tratando de encontrar una manera y puedo decir que no hay una manera limpia de lograr esto.
Samuel Mikel Bowles
2
Con TextExpander, puede hacer que inserte el contenido del portapapeles en el fragmento con formato monoespacio. Entonces, cuando resalta, simplemente escribe ⌘X y luego la abreviatura de su fragmento para pegarlo nuevamente como monoespacio. Agregue un espacio con formato regular al final del fragmento y podrá seguir escribiendo. TextExpander es de otra manera locamente útil; todos los que usan una Mac para hacer las cosas deberían poseerla de todos modos.
75th Trombone
1

Lo que terminé usando fue especificar manualmente el monoespacio en algún texto, luego Formato -> Copiar estilo (Opción + Cmd + C) que copia el formato pero no el texto. Luego seleccione otro texto plano y Formato-> Pegar estilo (Opción + Cmd + V) que asigna este formato a la selección. Después de reiniciar, debe hacer esto nuevamente, y solo funciona para un estilo, pero esto satisface mis necesidades.

Sam Barnum
fuente
0

Copie un personaje con un estilo específico:

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

pbcopy -Prefer rtf no incluye datos de texto sin formato, por lo que pegar solo funcionará en vistas de texto enriquecido.


Insertar un personaje con un estilo específico:

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

Pegar estilo:

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
fuente