Bagaimana cara mengatur dan menentukan mode pengeditan baris perintah dari Bash?


10

Bagaimana mengatur mode edit baris perintah viatau emacsBash DAN bagaimana menentukan mode mana yang saat ini ditetapkan?

Jawaban:


6

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 viunsets emacsdan 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 vidisetel:

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

16

Kepada set:

set -o vi

Atau:

set -o emacs

(pengaturan yang satu menghapus yang lain. Anda dapat melakukan set -o vi +o viuntuk 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 viadalah POSIX. set -o emacstidak (karena Richard Stallman keberatan dengan emacsmode 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, kshdan yash(perhatikan -ojuga operator biner ATAU untuk [).


Ini bekerja dan mengejutkan, bahwa sulit untuk menentukan modenya.
Blcknx

4
set -o | egrep -w '^emacs|vi'akan mengembalikan apakah emacs atau vi diatur.
Stephen Harris

4

Ada juga bind -V | grep editing-mode.

man bash sangat besar tapi layak dibaca secara mendalam.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.