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

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

viBash 또는 명령줄 편집 모드를 어떻게 설정 emacs하고 현재 어떤 모드가 설정되어 있는지 어떻게 확인합니까?

답변1

도착하다 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

구문은 kshPOSIX set -o vi에서 나옵니다. set -o emacs아니요(Richard Stallman이 emacsPOSIX 지정 모드에 반대했기 때문에). 그러나 이는 쉘 구현에서 일반적입니다. 일부 쉘은 추가 편집 모드를 지원합니다. [[ -o option ]]POSIX는 아니지만 ksh, bash 및 zsh에서 지원됩니다. , 및 에서 지원됩니다 [ -o option ](이진 OR 연산자이기도 함).bashkshyash-o[

답변2

귀하의 질문은 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으며 그 반대도 마찬가지입니다.

목록 상태:

$ 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

답변3

게다가 bind -V | grep editing-mode.

man bash방대한 내용이지만 깊이 있게 읽어볼 가치가 충분히 있습니다.

관련 정보