GNU/Linux >> Tutoriels Linux >  >> Linux

Touches fléchées dans Ksh d'Openbsd, édition de ligne de commande, mode Vi ?

J'utilise le ksh par défaut sur OpenBSD 6.2 (basé sur pdksh ) avec le mode d'édition de la ligne de commande Vi activé.

J'essaie de faire fonctionner correctement les touches fléchées en complément de h , l , j et k (comme je suis sur un clavier Dvorak). Autant que je sache, ils ne fonctionnent pas du tout. Peu importe que je sois en mode "entrée" ou "commande".

Les raccourcis clavier actuels incluent :

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

Ce sont aussi les caractères séquencés produits par mes touches fléchées si j'utilise Ctrl+V Touche fléchée .

Les touches fléchées fonctionnent comme prévu dans le mode d'édition de la ligne de commande d'Emacs, mais en tant qu'utilisateur Vi de longue date, je me sens quelque peu paralysé lors de son utilisation.

Mon sentiment est que l'échappement envoyé par la touche fléchée est interprété comme si j'appuyais sur Esc … J'obtiens le comportement équivalent en tapant manuellement, par ex. Échap [ A comme lorsque j'appuie sur Flèche vers le haut (me place en mode commande puis en mode insertion en fin de ligne).

Question :Quelqu'un a-t-il réussi à faire fonctionner intuitivement les touches fléchées en mode Vi dans ksh d'OpenBSD ?

Réponse acceptée :

J'ai fait une incursion rapide dans /usr/src/bin/ksh sur mon système OpenBSD, étant donné que j'ai quand même vérifié les sources réelles. J'ai jeté un coup d'œil rapide à c_ksh.c , emacs.c et vi.c et il semble que le mode Vi ait été intégré dans pdksh de nsh à un moment donné (vers 1989/1990). Les mots exacts utilisés sont

/*      $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
 *
 */

Le bind -able les fonctions vivent toutes dans emacs.c , tout comme x_bind() fonction qui est appelée par le bind intégré, tandis que vi.c semble avoir sa propre implémentation de certains d'entre eux sous des noms différents qui ne sont pas appelés depuis x_bind() .

Par conséquent, je pense pouvoir conclure que le bind builtin est un no-op en mode Vi dans ce shell particulier.

MISE À JOUR (2018-02-04) :Après l'avoir signalé à openbsd-misc list, il a été confirmé que bind ne fait en effet rien en mode d'édition de ligne de commande Vi. Un patch ira pour modifier le ksh manuel sur OpenBSD pour que cela soit mentionné :

bind string=[editing-command] ...

En mode d'édition Emacs , la commande d'édition spécifiée est liée à
la string donnée . Saisie future de la string entraînera l'invocation immédiate de la
commande d'édition. Les liaisons n'ont aucun
effet en mode d'édition Vi .


Linux
  1. Linux - Appel de ligne de commande équivalent pour le mode avion ?

  2. Aimez-vous effectuer l'édition de style Vi dans la ligne de commande BASH ?

  3. Calculatrice de ligne de commande Unix bc en mode batch

  4. Guide du débutant pour l'éditeur vi (référence de la ligne de commande)

  5. vim :commande introuvable

Avoir une vache à la ligne de commande Linux

Commande Diff sous Linux

Maîtrisez la ligne de commande Linux

Principes de base de la ligne de commande Linux :sudo

Solveur d'expression de ligne de commande ?

Clonezilla depuis la ligne de commande