Bash의 명령 줄 편집 모드를 설정하고 결정하는 방법은 무엇입니까?


10

Bash vi또는 emacs명령 줄 편집 모드 를 설정하는 방법 과 현재 설정된 모드를 결정하는 방법은 무엇입니까?

답변:


6

귀하의 질문은 bash에 관한 것이므로 :

모든 새 세션에 대해 영구적으로 설정하려면 다음을 수행하십시오.

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

또는 (권장), ./inputrc에 행을 추가 (또는 변경)하십시오.

set editing-mode vi

이것은 bash 이외의 다른 여러 프로그램에서 사용되는 readline의 편집 모드를 설정합니다.

두 옵션을 모두 쉽게 설정 해제 할 수 있습니다.

shopt -ou vi emacs

하나를 설정하려면 다음 중 하나를 수행하십시오.

set -o vi

또는

shopt -os vi

에 대해서도 동일합니다 emacs. 설정 vi설정 해제 emacs및 viceversa에 있습니다.

상태를 나열하려면

$ shopt -op emacs
set +o emacs

$ shopt -op vi
set -o vi

또는 한 번에 둘 다 :

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

vi설정되어 있는지 테스트하려면 :

shopt -oq vi      &&   echo vi is set

또는 (ksh 구문) :

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

이맥스 :

shopt -oq emacs   &&   echo emacs is set

또는:

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

또는 옵션이 설정되지 않았 음을 테스트하려면 다음을 수행하십시오.

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

16

받는 사람 set:

set -o vi

또는:

set -o emacs

(하나를 설정하면 다른 하나가 해제됩니다. set -o vi +o vi둘 다 설정을 해제 할 수 있습니다 )

확인하다:

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

이 구문은에서 온 것입니다 ksh. 은 set -o viPOSIX입니다. POSIX가 지정한 모드에 set -o emacs반대하는 Richard Stallman은 emacs아니지만 쉘 구현에서 매우 일반적입니다. 일부 쉘은 추가 편집 모드를 지원합니다. [[ -o option ]]POSIX는 아니지만 ksh, bash 및 zsh에서 지원됩니다. [ -o option ]에 의해 지원되고 bash, ksh그리고 yash(참고 -o도 대한 이진 OR 연산자이다 [).


작동하고 모드를 결정하기가 어렵다는 것은 놀라운 일입니다.
Blcknx

4
set -o | egrep -w '^emacs|vi'emacs 또는 vi 설정 여부를 반환합니다.
Stephen Harris

4

또한 있습니다 bind -V | grep editing-mode.

man bash 거대하지만 깊이 읽을 가치가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.