Jawaban:
Karena pertanyaan Anda spesifik tentang bash:
Untuk mengaturnya secara permanen untuk setiap sesi baru:
echo 'set -o vi' >> ~/.bashrc
atau (disarankan), tambahkan (atau ubah) suatu baris di ./inputrc:
set editing-mode vi
Ini akan mengatur mode pengeditan readline yang digunakan oleh beberapa program lain di samping bash.
Mudah untuk membatalkan kedua opsi:
shopt -ou vi emacs
Untuk mengatur satu, baik:
set -o vi
Atau
shopt -os vi
Sama untuk emacs
. Pengaturan vi
unsets emacs
dan sebaliknya.
Untuk daftar keadaan:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Atau keduanya sekaligus:
$ shopt -op emacs vi
set +o emacs
set -o vi
Untuk menguji apakah vi
disetel:
shopt -oq vi && echo vi is set
Atau (sintaks ksh):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Atau:
[[ -o emacs ]] && echo emacs is set
atau, untuk menguji bahwa tidak ada opsi yang ditetapkan:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
Kepada set
:
set -o vi
Atau:
set -o emacs
(pengaturan yang satu menghapus yang lain. Anda dapat melakukan set -o vi +o vi
untuk membatalkan keduanya)
Untuk memeriksa:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
Sintaksis itu berasal ksh
. Ini set -o vi
adalah POSIX. set -o emacs
tidak (karena Richard Stallman keberatan dengan emacs
mode yang ditentukan oleh POSIX) tetapi sangat umum di antara implementasi shell. Beberapa shell mendukung mode pengeditan tambahan. [[ -o option ]]
bukan POSIX, tetapi didukung oleh ksh, bash dan zsh. [ -o option ]
didukung oleh bash
, ksh
dan yash
(perhatikan -o
juga operator biner ATAU untuk [
).
set -o | egrep -w '^emacs|vi'
akan mengembalikan apakah emacs atau vi diatur.