GNU/Linux >> Belajar Linux >  >> Linux

Tombol Panah Di Ksh Openbsd, Pengeditan Baris Perintah, Vi-mode?

Saya menggunakan ksh default pada OpenBSD 6.2 (berdasarkan pdksh ) dengan mode pengeditan baris perintah Vi diaktifkan.

Saya mencoba agar tombol panah berfungsi dengan baik sebagai pelengkap h , l , j dan k (karena saya menggunakan keyboard Dvorak). Sejauh yang saya tahu, mereka tidak bekerja sama sekali. Tidak masalah apakah saya dalam mode "input" atau "perintah".

Binding kunci saat ini meliputi:

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

Ini juga merupakan urutan karakter yang dihasilkan oleh tombol panah saya jika saya menggunakan Ctrl+V Tombol panah .

Tombol panah berfungsi seperti yang diharapkan dalam mode pengeditan baris perintah Emacs, tetapi sebagai pengguna Vi yang lama, saya merasa agak lumpuh saat menggunakannya.

Perasaan saya adalah bahwa Escape yang dikirim oleh tombol panah ditafsirkan seolah-olah saya menekan Esc … Saya mendapatkan perilaku yang setara dengan mengetik secara manual mis. Esc [ A seperti ketika saya menekan Panah atas (menempatkan saya dalam mode perintah dan kemudian dalam mode penyisipan di akhir baris).

Pertanyaan:Adakah yang bisa membuat tombol panah bekerja secara intuitif dalam mode-Vi di ksh OpenBSD ?

Jawaban yang Diterima:

Saya melakukan perampokan cepat ke /usr/src/bin/ksh pada sistem OpenBSD saya, mengingat saya telah memeriksa sumber yang sebenarnya. Sekilas saya melihat c_ksh.c , emacs.c dan vi.c dan sepertinya mode Vi dipasang kembali ke pdksh dari nsh di beberapa titik (sekitar 1989/1990). Kata-kata persis yang digunakan adalah

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

bind -bisa fungsi semua tinggal di emacs.c , seperti halnya x_bind() fungsi yang dipanggil oleh bind bawaan, sedangkan vi.c tampaknya memiliki implementasi sendiri dari beberapa di antaranya dengan nama berbeda yang tidak dipanggil dari x_bind() .

Oleh karena itu saya rasa saya dapat menyimpulkan bahwa bind builtin adalah no-op dalam Vi-mode di shell khusus ini.

UPDATE (2018-02-04):Setelah melaporkan ini ke openbsd-misc list, telah dikonfirmasi bahwa bind memang tidak melakukan apa pun dalam mode pengeditan baris perintah Vi. Sebuah patch akan masuk untuk mengubah ksh manual di OpenBSD sehingga disebutkan:

bind string=[editing-command] ...

Dalam mode pengeditan Emacs , perintah pengeditan yang ditentukan terikat ke
string yang diberikan . Masukan masa depan dari string akan menyebabkan perintah pengeditan
segera dipanggil. Pengikatan tidak
berpengaruh dalam mode pengeditan Vi .


Linux
  1. Linux – Panggilan Baris Perintah Setara Untuk Mode Pesawat?

  2. Apakah Anda Suka Melakukan Pengeditan Gaya Vi di Baris Perintah BASH?

  3. Kalkulator Baris Perintah Unix bc dalam Mode Batch

  1. vim:perintah tidak ditemukan

  2. Antarmuka baris perintah C++

  3. Konversi zona waktu dengan baris perintah

  1. Jadikan klien ftp baris perintah Linux mengabaikan alamat IP lokal dalam mode pasif

  2. Bash jika dalam satu baris

  3. Masalah baris perintah Netcat