GNU/Linux >> Linux Esercitazione >  >> Linux

Tasti freccia in Ksh di Openbsd, modifica della riga di comando, modalità Vi?

Sto usando l'impostazione predefinita ksh su OpenBSD 6.2 (basato su pdksh ) con la modalità di modifica della riga di comando Vi abilitata.

Sto cercando di far funzionare correttamente i tasti freccia come complemento a h , l , j e k (dato che sono su una tastiera Dvorak). Per quanto ne so, non funzionano affatto. Non importa se sono in modalità "input" o "comando".

Le attuali associazioni di tasti includono:

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

Questi sono anche i caratteri in sequenza prodotti dai miei tasti freccia se uso Ctrl+V Tasto freccia .

I tasti freccia funzionano come previsto nella modalità di modifica della riga di comando di Emacs, ma come utente Vi da molto tempo, mi sento un po' paralizzato quando lo uso.

La mia sensazione è che l'Escape inviato dal tasto freccia venga interpretato come se avessi premuto Esc ... Ottengo il comportamento equivalente digitando manualmente ad es. Esc [ Un come quando premo Freccia su (mi mette in modalità comando e poi in modalità inserimento alla fine della riga).

Domanda:qualcuno è stato in grado di far funzionare i tasti freccia in modo intuitivo in modalità Vi in ksh di OpenBSD ?

Risposta accettata:

Ho fatto una rapida incursione in /usr/src/bin/ksh sul mio sistema OpenBSD, visto che avevo comunque controllato i sorgenti effettivi. Ho dato una rapida occhiata a c_ksh.c , emacs.c e vi.c e sembra che la modalità Vi sia stata adattata a pdksh da nsh ad un certo punto (intorno al 1989/1990). Le parole esatte usate sono

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

Il bind -able tutte le funzioni risiedono in emacs.c , così come x_bind() funzione che viene chiamata da bind integrato, mentre vi.c sembra avere una propria implementazione di alcuni di essi con nomi diversi che non vengono chiamati da x_bind() .

Pertanto penso di poter concludere che il bind builtin non è operativo in modalità Vi in questa particolare shell.

AGGIORNAMENTO (04-02-2018):dopo averlo segnalato a openbsd-misc list, è stato confermato che bind in effetti non fa nulla nella modalità di modifica della riga di comando di Vi. Verrà inserita una patch per modificare ksh manuale su OpenBSD in modo che questo sia menzionato:

bind string=[editing-command] ...

In Modalità di modifica di Emacs , il comando di modifica specificato è associato a
alla string specificata . Immissione futura della string farà immediatamente richiamare il comando di modifica
. Le associazioni non hanno effetto
in Modalità di modifica Vi .


Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. Avere una mucca sulla riga di comando di Linux

  3. Ti piace eseguire la modifica dello stile Vi nella riga di comando BASH?

  4. Calcolatrice della riga di comando di Unix bc in modalità batch

  5. Interfaccia a riga di comando C++

Comando Diff in Linux

Padroneggia la riga di comando di Linux

Nozioni di base sulla riga di comando di Linux:sudo

Come salvare + chiudere il file durante la modifica in bash?

Risolutore di espressioni da riga di comando?

Clonezilla dalla riga di comando