¿Cuál es la diferencia entre `set -o emacs` y `bindkey -e`?

¿Cuál es la diferencia entre `set -o emacs` y `bindkey -e`?

Por lo que he visto, ambos set -o emacsy bindkey -ese usan para modificar el comportamiento de su editor de línea de terminal para emular, emacsmientras que set -o viy bindkey -vse usan para emular vicombinaciones de teclas. Dado que ambos set -oparecen bindkeyhacer lo mismo, me preguntaba cuáles eran las diferencias entre los dos y si había alguna diferencia.

Parece que set -ofunciona para la mayoría de los shells, aunque bindkeyes un zlecomando específico. ¿Es esta la única diferencia? Además, ¿vinculan las mismas claves o hay algunas claves que se set -ovinculan bindkeya diferentes operaciones?

Respuesta1

bindkey -v/-ees la tcshsintaxis ( bindkeyse agregó una función incorporada a tcsh en 5.19PL2 en 1990), mientras que set -o vi/emacses la sintaxis ksh (ya está en ksh85, probablemente antes, ya que ksh tenía el modo emacs/vi al menos desde 1983).

En zsh, bindkeyse agregó en 2.0 en 1991, que vino con la primera versión de zle (1.0, la versión anterior utilizada readlinefue tomada de bash).

zsh, ya que la primera versión 1.0 tenía setoptque configurar opciones (además de las opciones pasadas en la línea de comando como en csh/Bourne), mientras que (t)cshen bashsu lugar usaba variables especiales. En 2.0, se agregó una -oopción (tanto al intérprete como al incorporado) para compatibilidad con ( él mismo convirtió sus variables especiales en opciones configuradas con un nuevo incorporado en 2.0 en 1996; ese es un conjunto de opciones separado de las configuradas allí; soporte agregado alrededor de 1990).setkshbashshoptset -oset -o

Las "opciones" viy emacsno eranagregado a zsh hasta 2003Sin embargo, en la versión 4.1.1. El paradigma de "opción" no es muy apropiado para eso, ya que cuando configura la emacsopción, desactiva el vimodo.

Notarás eso zsh -o emacsy zsh -o viactualmente no funciona correctamente en los informes zsh zsh: invalid module name `zsh/zle'al inicio (unbicho).

La mayoría de los shells zshtambién seleccionan el modo de edición predeterminado según el valor de las variables de entorno $EDITORy $VISUALpara intentar hacer coincidir el modo de edición de línea con la preferencia del editor del usuario.

información relacionada