Konfiguracja trybu Bash vi do domyślnego trybu poleceń

14

Czy można skonfigurować tryb bash vi tak, aby początkowo był w trybie poleceń zamiast w trybie wstawiania ? Uważam, że muszę Esczbyt mocno naciskać . Wydaje się, że istnieje możliwość określenia tego w Zsh, ale nie znalazłem sposobu na zrobienie tego w bash / readline.

Galisperis
źródło

Odpowiedzi:

2

Nie sądzę, że jest to możliwe przy użyciu standardowej biblioteki GNU Readline .

Jednak możesz użyć xdotool do zwykłego hacka, aby osiągnąć ten sam efekt. Dodanie polecenia .bashrcsymulującego Escapenaciśnięcie klawisza zapewniłoby otwarcie terminu w trybie polecenia:

xdotool key Escape

Możesz użyć niewielkiego opóźnienia z --delayprzełącznikiem, aby zapobiec wyświetlaniu monitu ...

Zauważ, że może to spowodować więcej frustracji, niż się spodziewasz: terminale są zaprojektowane tak, aby akceptować dane wejściowe; przełamanie tego (choć tylko nieznacznie) może nie okazać się tak dobrym pomysłem ...

jasonwryan
źródło
1

Cofam to, to nie działa z ruchem kursora. Działa, ale z zabawnym zachowaniem, jeśli je usuniesz:PS1="$PS1 ^[


Zmień PS1monit:

PS1="test $ \[^[[s^[^[[u\]"

Gdzie ^[jest dosłowna ucieczka ( Ctrl+ V Esc).

Ucieczka sama w środku zmienia się w tryb poleceń, ^[[sa ^[[uucieczki przechowują i przywracają pozycję kursora; bez tego odkryłem, że było trochę zabawnego zachowania.

Kevin
źródło
1

Odpowiedź brzmi nie . Odpowiednim plikiem źródłowym bash jestbashline.c

Alexander
źródło
-1

próbować set +o vi

set -o vi ponownie przejdzie w tryb edycji.

http://tldp.org/LDP/abs/html/options.html

Nikhil Mulley
źródło
To nie działa: wyłącza tryb vi ...
jasonwryan
tak próbowałem. Dobrze. Mogę o tym myśleć - używając vima, zmień cmap (odniesienie: zmiana trybu pomocy w vimie) dla Escklucza. Domyślne równoważne mapowanie EsctoCtrl + ]
Nikhil Mulley,
Nie działa również na moim ksh88.
rahmu