OpenBSD kshの矢印キー、コマンドライン編集、Viモード

OpenBSD kshの矢印キー、コマンドライン編集、Viモード

私は基本を使うkshOpenBSD 6.2で(ベースpdksh)Viコマンドライン編集モードを有効にします。

私はDvořákキーボードを使用しているので、矢印キーは、とのh補足lとして正しく動作するように努力しています。私が知っている限り、彼らはまったく機能しません。 「入力」モードなのか「コマンド」モードなのかは関係ありません。jk

現在のキーバインディングは次のとおりです。

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

を使用すると、矢印キーで生成される文字の順序でもありますCtrl+VArrow key

矢印キーはEmacsコマンドライン編集モードでうまく機能しますが、長いViユーザーとして矢印キーを使用すると少し不快感を感じます。

私の感じは、矢印キーで送信されたEscapeが私が押したかのように解釈されるということです。たとえば、手動で入力するとEsc同じ動作が得られます。たとえば、コマンドモードに切り替えてから最後に挿入モードに切り替えます。線)。Esc[AUp-arrow

Q:OpenBSDのViモードで矢印キーを直感的に操作できる人はいますかksh

答え1

早く参加します。/usr/src/bin/ksh私はOpenBSDシステムで実際のソースコードを確認したからです。一見すると、c_ksh.cViモードがある時点(1989/1990年頃)から改造されたようにemacs.c見えます。使用される正確な単語は次のとおりです。vi.cpdkshnsh

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

-able 関数はbind組み込み関数によって呼び出される関数と同様にすべてに位置しますがemacs.c、一部は呼び出されない別の名前で独自の実装があるようです。x_bind()bindvi.cx_bind()

したがって、私はbindこの特定のシェルで組み込み関数がViモードでは動作しないと結論付けることができると思います。

更新(2018-02-04):これをopenbsd-miscリストに報告し、bind実際にViコマンドライン編集モードで何もしないことを確認しました。kshこれに言及するために、OpenBSDマニュアルを修正するパッチがあります。

bind string=[editing-command] ...

存在するEmacs編集モード、指定された編集コマンドが指定されたものにバインドされますstring。今後の入力により、string編集コマンドはすぐに呼び出されます。 無効なバインディングVi編集モード

関連情報