3 votos

¿Cómo puedo hacer que funcione el enlace de la tecla de texto "yankAndSelect"?

El sistema de entrada de texto de MacOS lleva mucho tiempo soportando atajos de teclado personalizados a través de ~/Library/KeyBindings/DefaultKeyBinding.dict . Lo he utilizado con éxito durante años para hacer la edición de texto más parecida a la de Emacs, pero hay una característica que nunca he podido hacer funcionar: el yankAndSelect: método. Nunca pasa por el anillo de muerte para mí; siempre sólo arranca el último objeto muerto. Estoy buscando ayuda para que funcione.

Así es como lo he probado. En primer lugar, puse NSTextKillRingSize utilizando este comando en un terminal:

defaults write -g NSTextKillRingSize -int 20

(También he probado -string en lugar de -int en el comando anterior, pero no hace ninguna diferencia en el comportamiento). A continuación, he eliminado todo de mi DefaultKeyBinding.dict archivo y dejó sólo esto:

{
  "^y" = (yankAndSelect:);
}

Tenga en cuenta que dejo controlk ligado a su acción de sistema de texto por defecto (que es matar hasta el final de la línea). Finalmente, reinicié, sólo para estar absolutamente seguro de que nada inesperado persistía.

Basado en muchas fuentes, como Documentación de Apple Los dos documentos sobre personalización del sistema de texto Cocoa y la lista de selectores por Jacob Rus desde 2006, KeyBindings de Brett Terpstra y páginas aleatorias de otras personas en la web, parece que el siguiente comportamiento debe (como describe Brett Terpstra):

  1. Abra TextEdit (reinícielo si ya estaba abierto)
  2. Escriba una línea de texto, mueva el cursor al principio de la línea, escriba controlk
  3. Escribe otra línea con un texto diferente, y repite el paso 2
  4. Hazlo una vez más
  5. En una línea en blanco, escriba controly . Esto debería pegar la última línea que mataste
  6. Tipo controly de nuevo, y el texto pegado debería ser reemplazado por la segunda línea que mataste
  7. De nuevo, y deberías ver la primera línea. Las repeticiones continuas harán un ciclo a través del anillo de muerte.

Esto es no lo que sucede en mi uso . En cambio, lo que sucede es que el paso #6 sí no pegar la penúltima muerte, sino la más reciente (tercera), siempre. Es como si no hubiera ningún anillo de muerte, y yankAndSelect: siempre se retira la muerte más reciente.

Este es un comportamiento 100% repetible en todos los sistemas (MacOS 10.13, y una VM 10.14 casi fresca) y en todas las aplicaciones que respetan DefaultKeyBinding.dict (no sólo TextEdit) que he probado.

¿Qué más hay que hacer para conseguir yankAndSelect: para recorrer el anillo de muerte ?

2voto

aaplmath Puntos 599

Actualización: Parece que en algunas versiones de MacOS, establecer la configuración globalmente no funciona; en su lugar, utilice defaults write com.apple.TextEdit NSTextKillRingSize -string 6 (sustituyendo com.apple.TextEdit con la aplicación deseada y 6 con el tamaño del anillo de la muerte deseado) para fijarlo en cada aplicación. Además, parece que NSTextKillRingSize no debe ser mayor de 16 o no funcionará.


Respuesta original:

La cuestión parece residir en cómo el defaults CLI maneja el dominio de los valores globales. Específicamente, usted quiere escribir en el host (es decir, la suya), lo que parece que no ocurre por defecto. (Todavía no comprendo del todo los entresijos de cómo funciona todo esto.) Para conseguirlo, sustituya su actual defaults write con lo siguiente:

defaults -currentHost write -g NSTextKillRingSize -string 6

Esto me funcionó en el Big Sur 11.1.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X