Làm cách nào để thiết lập và xác định chế độ chỉnh sửa dòng lệnh của Bash?


10

Làm cách nào để đặt chế độ chỉnh sửa vihoặc emacsdòng lệnh Bash và làm thế nào để xác định chế độ nào hiện đang được đặt?

Câu trả lời:


6

Vì câu hỏi của bạn là cụ thể về bash:

Để đặt nó vĩnh viễn cho mỗi phiên mới:

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

hoặc (được khuyến nghị), thêm (hoặc thay đổi) một dòng trong ./inputrc:

set editing-mode vi

Điều này sẽ thiết lập chế độ chỉnh sửa của đường dẫn được sử dụng bởi một số chương trình khác bên cạnh bash.

Thật dễ dàng để bỏ đặt cả hai tùy chọn:

shopt -ou vi emacs

Để đặt một, một trong hai:

set -o vi

Hoặc là

shopt -os vi

Tương tự cho emacs. Đặt cài viđặt emacsvà ngược lại.

Để liệt kê trạng thái:

$ shopt -op emacs
set +o emacs

$ shopt -op vi
set -o vi

Hoặc cả hai cùng một lúc:

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

Để kiểm tra nếu viđược đặt:

shopt -oq vi      &&   echo vi is set

Hoặc (cú pháp ksh):

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

emacs:

shopt -oq emacs   &&   echo emacs is set

Hoặc là:

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

hoặc, để kiểm tra rằng không có tùy chọn nào được đặt:

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

16

Tới set:

set -o vi

Hoặc là:

set -o emacs

(đặt cái này bỏ cài đặt cái kia. Bạn có thể làm set -o vi +o viđể bỏ đặt cả hai)

Để kiểm tra:

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

Cú pháp đó đến từ ksh. Các set -o vilà POSIX. set -o emacskhông phải (vì Richard Stallman phản đối emacschế độ được chỉ định bởi POSIX) nhưng rất phổ biến trong các triển khai shell. Một số shell hỗ trợ các chế độ chỉnh sửa bổ sung. [[ -o option ]]không phải là POSIX, nhưng được hỗ trợ bởi ksh, bash và zsh. [ -o option ]được hỗ trợ bởi bash, kshyash(lưu ý rằng -ocũng là một nhị phân tử OR cho [).


Nó hoạt động và thật đáng ngạc nhiên, rất khó để xác định chế độ.
Blcknx

4
set -o | egrep -w '^emacs|vi'sẽ trả về dù emacs hay vi được đặt.
Stephen Harris

4

Cũng có bind -V | grep editing-mode.

man bash là rất lớn nhưng cũng đáng đọc sâu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.