Bash는 .inputrc의 vi-ins / cmd-mode-string 옵션을 무시합니다.


0

.inputrc를 처음 만들었을 때 (기본적으로 존재하지 않음) 모드를 구분하기 vi-ins-mode-string위해 "+"와 vi-cmd-mode-string":"로 설정 했습니다 . 기본적으로 프롬프트에 "(cmd)"또는 "(ins)"가 붙지 않았지만 나중에 표시되도록하기로 결정했습니다. 따라서 .inputrc에서 해당 옵션을 변경했습니다. 그러나 "+"와 ":"는 계속 내 bash 프롬프트 앞에 붙어 있으며 이유를 모르겠습니다. sourceand로 .inputrc 소싱을 시도했지만 bind터미널의 모든 인스턴스를 종료했지만 아무것도 작동하지 않습니다. 내가 잘못하고있는 것이 있습니까? 내 .inputrc는 현재 다음과 같습니다.

set show-mode-in-prompt on
set vi-ins-mode-string "(ins)"
set vi-cmd-mode-string "(cmd)"

편집 : 가상 환경 내부에서 파이썬의 대화 형 cli를 시작할 때 (중요한 경우 conda로 작성) (in)과 (cmd)가 적절하게 추가됩니다. "+"와 ":"가 계속 표시되는 것은 내 일반 bash 명령 줄에만 있습니다.


나는 똑같은 문제가 있었다. readline 7.0에서 bash 4.4를 실행하고 있지 않을 수 있습니다. bash --version은 4.4를 반환했지만 시작 셸 (/ etc / passwd)은 /usr/local/bin/bash(4.4) 대신 /bin/bash(4.3)를 가리 켰습니다. (경로의 bash 버전이 4.4 인 경우 명령 줄에 'bash'를 입력하면 문자열이 표시 될 수 있습니다). BASH_VERSION은 현재 실행중인 bash 쉘의 실제 현재 버전을 보유합니다. 그렇다면 / etc / passwd의 시작 쉘을 bash 바이너리 버전 4.4로 변경하면 문제가 해결 될 수 있습니다.
Bennix Deprîx

방금 실행 bash --version하여 4.3.48 (그리고 약간의 추가 표기법)을 얻었으므로 아마도 그 것입니다.
alyms108

답변:


0
  1. 해당 줄을 ~/.inputrc파일에 추가 하십시오.
  2. 쉘을 다시 시작하십시오 (새 터미널 세션을여십시오).
  3. 을 사용하여 bash쉘이 vi명령 행 모드 인지 확인하십시오 set -o vi.

또는

  1. 해당 줄을 ~/.inputrc파일에 추가 하십시오.
  2. bash사용하여 파일을 다시 읽습니다 Ctrl+XCtrl+R(을 사용하여 emacs먼저 모드로 일시적으로 전환해야 합니다 set -o emacs).
  3. 을 사용하여 bash쉘이 vi명령 행 모드 인지 확인하십시오 set -o vi.

당신이 경우 INPUTRC환경 변수를, 다음이되는 파일을 가리 킵니다 실제로 사용. 셸의 시작 파일에서 변수를 제거하고 셸을 다시 시작하거나 기본값이 있는지 확인 $HOME/.inputrc하고 셸을 다시 시작하십시오.


위의 모든 것을 시도했지만 프롬프트는 여전히 변경되지 않습니다.
alyms108

@ alyms108 채색 프롬프트가 있습니까? PS1변수 의 제어 문자 가 간섭 할 수 있습니다. 또한 실제로 실행 중이고 bash(예 : zsh가 아님) INPUTRC변수 세트 가 없는지 확인 하십시오.
Kusalananda

bash를 실행 중이며 INPUTRC가 설정되어 있지 않습니다. 즉, 채색 된 프롬프트의 제어 문자 일 수 있습니다. 나는 그것이 어떻게 프롬프트 문자열의 변경 사항이 눈에 띄지 않도록 방해하는지 / 왜 모르겠는지 모른다.
alyms108 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.