Así como he aprendido, no son/fueron sólo 3 maneras de manipular a la selección en la Terminal de entrada/utilizando un valor de longitud (o a través de una serie de teclado prensas).
-
Accesibilidad Inspector de la muestra que debe ser posible manipular mediante programación la selección de la longitud, ya que se puede editar una existente, la selección de la longitud usando la len en el campo "Texto Seleccionado Rango" en la sección "Avanzado" haciendo clic en editar y escribir un nuevo número, como se ve en la pantalla de la tapa: https://www.dropbox.com/s/bn2z6ewmdj4mfai/Accessibility_Inspector-selected_text_len.png?dl=0
El "Texto Seleccionado" Rango De Propiedad O Atributo(?) no parece ser accesibles en AppleScript, aunque si era accesible, sería aquí: (text area of (scroll area 1 of (splitter group 1 of (front window))))
si ha habilitado UI elements
en su Applescript. Podría ser posible acceder a estos valores, como @CJK se indica en los comentarios a través de Objective-C. Applescript sin embargo, incluso si pudiera acceder a la variable probable que no tenga la capacidad de alterar.
Una característica útil para ver lo que applescript puede manipular o tiene acceso a la es, simplemente, return attributes
o return properties
. Por ejemplo:
tell application "System Events"
if UI elements enabled is false then
set UI elements enabled to true
if UI elements enabled is false then error "Can't do it"
end if
tell application process "Terminal"
tell window 1
tell splitter group 1
tell scroll area 1
--return properties
return attributes
end tell
end tell
end tell
end tell
end tell
Este método, como el de OS X 10.8 ya no funciona, pero haciendo una selección en la Terminal usando el teclado se utiliza para ser posible, como se describe aquí. Todo lo que tenía que hacer era pulsa Comando-Opción-Retorno, vaya a la región en la que desea seleccionar con las teclas de flecha, pulse la tecla de retorno, seleccione desde la posición del cursor utilizando las teclas de flecha y pulse la tecla de retorno. He buscado por la capacidad de re-habilitar esta característica, sino que vino seco.
Hay una manera de seleccionar el texto en la Terminal usando el teclado, pero es muy limitado. Usted puede seleccionar texto entre "marcas" usando el Comando-Shift-a (no incluyendo las líneas de marcas). Las marcas se agrega de forma predeterminada en cada línea del símbolo del sistema. Sin embargo, usted puede agregar marcas de clic derecho en la selección y escribir Command-U
. Las marcas son sólo por línea, sin embargo, no son específicos para la selección de inicio/parada de una línea. Si usted haga clic en cualquier texto no seleccionado que es ajustado suave (es decir, multi-línea de cadena) y añadir una marca, una marca separada se agrega para cada suave forrado en línea. Usted puede seleccionar texto entre varias marcas, ni es posible añadir marcas a través de applescript, por lo tanto no es posible utilizar este para ajustar una selección de la longitud de programación. Más info sobre las marcas se pueden encontrar aquí.
Yo también había explorado lo que las teclas de flecha se supone que es capaz de hacer, ya shift-{left,right}-flecha para mí entra en las cadenas ";2C" y ";2D" con un sonido en la línea de comandos para mí. Así que me quita las entradas de la tabla en la Terminal -> Preferencias -> Perfiles -> Teclado para evitar que. Yo esperaba que me permita seleccionar el texto (al menos en la corriente de la línea de comandos) usando shift-flecha, pero todo lo que hice fue mover el cursor sin seleccionar.
Sin embargo, dado el objetivo de esta tarea (ver por dónde coordinar está en una cadena seleccionada), usted puede lograr esto a través de un cuadro de diálogo desde el Automator servicio mediante un Applescript. Todo lo que tienes que hacer es presentar la selección en un cuadro de diálogo y, si la longitud de destino es mayor que el de la selección, tienes que rellenar el resto de los personajes con un personaje ficticio ('N' de ADN).
Usted puede hacer esta estrategia de forma condicional, sólo cuando el Terminal es la aplicación situada en primer plano. Nota, esto no es toda la secuencia de comandos - sólo un fragmento, pero se puede ver toda la secuencia de comandos aquí, que contiene un montón de campanas y silbatos ajenos a esta pregunta.
--Check the length of the selected text passed in
set character_count to count characters of ((input as string) as string)
set lengthen to false
set mod_length to character_count - n
--Figure out whether the selection must be lengthened or shrunk
if character_count is equal to 0 or n is greater than character_count then
set lengthen to true
set mod_length to n - character_count
end if
--See if we're in Terminal
set isTerminal to ((name of first process where it is frontmost) as string) is equal to "Terminal"
if isTerminal is true then
if lengthen is true then
set substr to (input as string)
repeat mod_length times
set substr to substr & "N"
end repeat
else
set substr to text 1 thru n of (input as string)
set substr to substr & (text (n + 1) thru character_count of (input as string))
end if
ignoring application responses
display dialog "Length " & n & " is selected below:" default answer substr buttons {"OK"} default button 1 with title "Selected Character Position"
end ignoring
end if
--Trick to make sure arrow presses affect the right side of the selection instead of the left
if not (character_count is equal to 0 or n is greater than character_count) then
key code 124 using {shift down}
key code 123 using {shift down}
key code 124 using {shift down}
end if
repeat mod_length times
if lengthen is true then
key code 124 using {shift down}
else
key code 123 using {shift down}
end if
end repeat
delay 1
Que efectivamente va a lograr la meta final. Por desgracia, la posición tiene que ser marcado con un texto de marcador en un ancho variable tipo de cara, ya de cuadros de diálogo no permitir que el formato o automática, selección de texto.