GNU/Linux >> Tutoriales Linux >  >> Linux

¿Teclas de flecha en Ksh de Openbsd, edición de línea de comandos, modo Vi?

Estoy usando el ksh predeterminado en OpenBSD 6.2 (basado en pdksh ) con el modo de edición de línea de comando Vi habilitado.

Estoy tratando de hacer que las teclas de flecha funcionen correctamente como complemento de h , l , j y k (ya que estoy en un teclado Dvorak). Por lo que puedo decir, no funcionan en absoluto. No importa si estoy en modo "entrada" o "comando".

Las combinaciones de teclas actuales incluyen:

^[[A = up-history
^[[B = down-history
^[[C = forward-char
^[[D = backward-char

Estos son también los caracteres secuenciados producidos por mis teclas de flecha si uso Ctrl+V Tecla de flecha .

Las teclas de flecha funcionan como se esperaba en el modo de edición de línea de comandos de Emacs, pero como usuario de Vi desde hace mucho tiempo, me siento un poco lisiado cuando lo uso.

Mi sensación es que el Escape que se envía con la tecla de flecha se interpreta como si hubiera presionado Esc … Obtengo el comportamiento equivalente al escribir manualmente, p. Esc [ A como cuando presiono flecha arriba (me coloca en modo de comando y luego en modo de inserción al final de la línea).

Pregunta:¿Alguien ha podido hacer que las teclas de flecha funcionen de manera intuitiva en modo Vi en ksh de OpenBSD? ?

Respuesta aceptada:

Hice una incursión rápida en /usr/src/bin/ksh en mi sistema OpenBSD, ya que tenía las fuentes reales verificadas de todos modos. Eché un vistazo superficial a c_ksh.c , emacs.c y vi.c y parece que el modo Vi se adaptó a pdksh de nsh en algún momento (alrededor de 1989/1990). Las palabras exactas utilizadas son

/*      $OpenBSD: vi.c,v 1.55 2018/01/16 22:52:32 jca Exp $     */

/*
 *      vi command editing
 *      written by John Rochester (initially for nsh)
 *      bludgeoned to fit pdksh by Larry Bouzane, Jeff Sparkes & Eric Gisin
 *
 */

El bind Todas las funciones disponibles viven en emacs.c , al igual que x_bind() función que es llamada por bind integrado, mientras que vi.c parece tener su propia implementación de algunos de ellos bajo diferentes nombres que no son llamados desde x_bind() .

Por lo tanto, creo que puedo concluir que bind builtin no funciona en modo Vi en este shell en particular.

ACTUALIZACIÓN (2018-02-04):después de informar esto a openbsd-misc list, se confirmó que bind de hecho, no hace nada en el modo de edición de línea de comandos de Vi. Se introducirá un parche para modificar el ksh manual sobre OpenBSD para que se mencione esto:

bind string=[editing-command] ...

En modo de edición de Emacs , el comando de edición especificado está vinculado a
la string dada . Entrada futura de la string hará que el comando de edición
se invoque inmediatamente. Los enlaces no tienen
efecto en el modo de edición Vi .


Linux
  1. Linux:¿llamada de línea de comando equivalente para el modo avión?

  2. ¿Le gusta realizar la edición de estilo Vi en la línea de comandos BASH?

  3. ¿Qué significa un símbolo de flecha (->) en la línea de comando?

  4. Conversión de zona horaria por línea de comando

  5. Solucionador de expresiones de línea de comando?

Tener una vaca en la línea de comandos de Linux

Comando Dif en Linux

Domina la línea de comandos de Linux

Conceptos básicos de la línea de comandos de Linux:sudo

Problemas con la línea de comandos de Netcat

¿Cómo guardar + cerrar archivo al editar en bash?