Pregunta

Desde un punto de vista programático, cuando se establece la cáscara del golpe de usar vi o emacs a través de

set -o vi

o

set -o emacs

Lo que está pasando aquí? He estado leyendo un libro en el que afirma que el intérprete de comandos bash utiliza cualquiera de estos editores para la entrada al depósito propiamente dicho, pero pensé que podría haber usado readline.

¿Fue útil?

Solución

Bash sigue utilizando readline. Readline usa emacs o vi ajuste de modo y el modo cambia entre los diferentes modos de edición. Puede comprobar la carpeta lib / readline en el código fuente base para ver las distintas asociaciones de teclas.

Otros consejos

De acuerdo con la página del manual BASH_BUILTINS (1) (en Fedora 8):

   set [--abefhkmnptuvxBCHP] [-o option] [arg ...]

... (se pierden todas las opciones de una sola letra)

         -o option-name
            The option-name can be one of the following:

...

            emacs   Use  an  emacs-style  command  line  editing interface.  This is
                    enabled by default when the shell  is  interactive,  unless  the
                    shell is started with the --noediting option.
...
            vi      Use a vi-style command line editing interface.
Interpreto que el sentido de que bash se interpreta directamente los comandos de edición de línea. Esta opción se limita a establecer que comando configurado para utilizar. Consulte la página del manual de readline (3).

Utiliza las pulsaciones de teclado que son familiares para los usuarios de uno de esos editores para editar la línea de comandos.

Readline es la facilidad que ofrece esa característica a Bash y otros programas.

De man bash:

READLINE
       This is the library that handles reading input when using  an  interac‐
       tive shell, unless the --noediting option is given at shell invocation.
       Line editing is also used when using the -e option to the read builtin.
       By default, the line editing commands are similar to those of emacs.  A
       vi-style line editing interface is also available.  Line editing can be
       enabled  at  any  time  using  the -o emacs or -o vi options to the set
       builtin (see SHELL BUILTIN COMMANDS below).  To turn off  line  editing
       after  the  shell  is running, use the +o emacs or +o vi options to the
       set builtin.

Por lo que sé, readline es lo que proporciona la funcionalidad de línea de edición para la fiesta.

Una condición:. Al pulsar v en modo comando vi, se obtiene el editor vi completo soplado para editar su línea de comandos

De man bash:

  

READLINE
  Esta es la biblioteca que se encarga de leer la entrada cuando se utiliza un shell interactivo, a menos que la opción --noediting se da en la llamada concha. Por defecto, los comandos de edición de línea son similares a las de emacs. Una interfaz de edición de línea de estilo vi también está disponible. Para desactivar la edición de línea después de la cáscara se está ejecutando, utilice las opciones +o emacs o +o vi a la orden interna set.

Cuando la cáscara se presenta con un mensaje (a menos que esté en el modo de edición no), usted es ya usando readline. Ya sea que usted esté en el modo de emacs o el modo de inserción VI (que es por eso que sólo puede utilizar ESC para volver a VI modo de comando).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top