No creo que lo que pides sea fácilmente realizable. Creo que las funciones secundarias de cortar y pegar están aisladas en cada aplicación que las soporta y probablemente requeriría atrapar mediante programación la secuencia de teclas de destino y procesarla en consecuencia. Esto es algo que probablemente tendría que ser escrito en C y o Objetivo-C , compilado a ejecutable y permanecer residente en memoria.
Dicho esto, sin embargo, creo que el ^K sólo corta la última línea de texto desde la posición del cursor y la coloca en el cartón secundario . Así que, con esto entendido, permítanme ofrecer lo siguiente como solución solución.
Lo siguiente ejemplo AppleScript código que se muestra más adelante, se utilizará en un Automatizador servicio donde se puede asignar un atajo de teclado a la servicio . Este servicio utilizará, por ejemplo K (Control-Shift-K) y lograr el objetivo de la OP. Que es conseguir lo que se coloca en el cartón secundario en Terminal , pulsando normalmente K en el sistema general de cartulina también conocido como el Portapapeles aunque con la presión, por ejemplo. K en su lugar.
Lo siguiente fue creado, probado y me funciona en MacOS High Sierra .
Crear el automatismo servicio ...
En Automatizador :
- Archivo > Nuevo o pulse: N
- Seleccione Servicio y haga clic en el botón Elija botón.
- Configure los ajustes como se muestra en la primera imagen de abajo.
- Añade un Ejecutar AppleScript acción .
- Sustituir el valor por defecto código con el ejemplo AppleScript código .
- Guardar como por ejemplo Mi Ctrl-K para Terminal
Ejemplo AppleScript código :
tell application "Terminal"
if (count windows) is greater than 0 then
try
activate
set c1 to contents of selected tab of front window
tell application "System Events" to ¬
keystroke "k" using control down
delay 0.5
set c2 to contents of selected tab of front window
end try
else
return
end if
end tell
tell current application
set pCount to (count paragraphs of text of c1)
repeat with i from 1 to pCount
if (count characters of (paragraph i of c1)) is greater than 0 then
set t1 to (paragraph i of c1)
set t2 to (paragraph i of c2)
end if
end repeat
if (count characters of t1) is not equal to (count characters of t2) then
set AppleScript's text item delimiters to {t2}
set CtrlY to text items of t1
set AppleScript's text item delimiters to {}
set the clipboard to CtrlY as text
end if
end tell
- Nota: El ejemplo AppleScript código es sólo eso y no contiene ningún otro tratamiento de errores entonces lo que puede estar presente. El usuario siempre tiene la responsabilidad de emplear las tratamiento de errores según sea necesario y/o deseado.
- El valor de la
delay
comando puede o no necesitar ser ajustado para su sistema. Ajuste el valor según sea necesario y o añadir más delay
comandos según sea necesario.
Asignar el atajo de teclado...
En Preferencias del sistema ...
Ahora en Terminal cuando uno pulsa K te pondrás en el Portapapeles lo que K lugares en el cartón secundario .
Como nota al margen, si utiliza un programa como FastScripts sólo tiene que utilizar el ejemplo AppleScript código como .scpt en Script Editor no crear un Automatizador servicio y puede asignar el atajo de teclado en el Preferencias para FastScripts . Ninguna de las otras instrucciones se aplica a menos que quiera hacerlo todo de forma nativa sin el uso de software de terceros.
Tenga en cuenta que no estoy afiliado al desarrollador de FastScripts, sólo soy un usuario satisfecho.
1 votos
¿qué pasa con cmd-x?
0 votos
Cmd-x no 'corta' desde la Terminal (ni siquiera copia).
0 votos
He leído mal la pregunta. He borrado mi respuesta.
0 votos
¿Está ejecutando el shell bash? Cmd-x no corta desde la terminal pero copia. Para mí de todos modos. Estoy usando iTerm. Acabo de probar en la terminal y cmd-x no funcionó. Pero commmand-c sí funcionó.
0 votos
Sí, bash. Puedo copiar desde la Terminal usando el ratón y Cmd-c pero no quiero interrumpir mi flujo para hacer eso. Quiero que cualquier atajo de teclado que esté usando en la terminal para cortar/copiar envíe ese mismo texto al portapapeles del sistema. Por ejemplo, en la terminal usando atajos de teclado tipo emacs (los predeterminados) puedo usar Ctrl-a para saltar al principio de la línea de comandos y Ctrl-k para "cortar" (matar en términos de emacs) el contenido de la línea. Este texto se puede pegar (tirar en términos de emacs) con Ctrl-y. Pero si voy a otro programa no tengo acceso a lo que he cortado. ¿Tiene esto sentido?
0 votos
Otra pequeña nota que probablemente sea irrelevante - vim soporta esto (cuando se compila con +clipboard) a través del
clipboard=unnamed
y que funciona para vim-in-terminal.