Bash'in komut satırı düzenleme modunu nasıl ayarlayabilir ve belirleyebilirim?


10

Nasıl ayarlamak viveya emacskomut satırı Bash modunu düzenleme VE nasıl şu anda ayarlandığı modu belirlemek için?

Yanıtlar:


6

Sorunuz bash hakkında özel olduğundan:

Her yeni oturum için kalıcı olarak ayarlamak üzere:

echo 'set -o vi' >> ~/.bashrc

veya (önerilir), ./inputrc dosyasına bir satır ekleyin (veya değiştirin):

set editing-mode vi

Bu, bash yanındaki diğer birçok program tarafından kullanılan readline'ın düzenleme modunu ayarlayacaktır.

Her iki seçeneği de ayarlamak kolaydır:

shopt -ou vi emacs

Bir tanesini ayarlamak için:

set -o vi

Veya

shopt -os vi

Aynısı emacs. viUnsets emacsve viceversa ayarlama .

Durumu listelemek için:

$ shopt -op emacs
set +o emacs

$ shopt -op vi
set -o vi

Ya da her ikisi de aynı anda:

$ shopt -op emacs vi
set +o emacs
set -o vi

Ayarlanıp viayarlanmadığını test etmek için :

shopt -oq vi      &&   echo vi is set

Veya (ksh sözdizimi):

[[ -o vi ]]        &&   echo vi is set

emacs:

shopt -oq emacs   &&   echo emacs is set

Veya:

[[ -o emacs ]]    &&   echo emacs is set

veya herhangi bir seçeneğin belirlenmediğini test etmek için:

! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set

16

Alıcı set:

set -o vi

Veya:

set -o emacs

(birini ayarlamak diğerini kaldırır. Her set -o vi +o viikisini de kaldırmak için yapabilirsiniz )

Kontrol etmek:

if [[ -o emacs ]]; then
  echo emacs mode
elif [[ -o vi ]]; then
  echo vi mode
else
  echo neither
fi

Bu sözdizimi geliyor ksh. set -o viPOSIX olduğunu. set -o emacs(Richard Stallman'ın emacsPOSIX tarafından belirtilen moda itiraz ettiği gibi ) değil, kabuk uygulamaları arasında çok yaygın. Bazı kabuklar ekstra düzenleme modlarını destekler. [[ -o option ]]POSIX değil, ksh, bash ve zsh tarafından desteklenir. [ -o option ]tarafından desteklenmektedir bash, kshve yash(not -oayrıca bir ikili VEYA operatörüdür [).


Çalışır ve şaşırtıcıdır, modu belirlemenin zor olması.
Blcknx

4
set -o | egrep -w '^emacs|vi'emacs veya vi ayarlanıp ayarlanmadığını döndürür.
Stephen Harris

4

Ayrıca var bind -V | grep editing-mode.

man bash çok büyük ama derinlemesine okumaya değer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.