다른 vi 편집 모드에 대한 다른 bash 프롬프트?
Bash와 함께 vi 모드 (set -o vi)를 사용할 때 현재 사용중인 모드 (삽입 또는 명령)에 따라 프롬프트가 표시되는 것이 좋습니다. 이 편집 모드를 어떻게 알 수 있습니까?
Btw, 이것은 ZSH 에서 가능해 보입니다 .
신선한 bash 4.3과 readline 6.3에는 변경 사항이 있습니다.
4. New Features in Readline
j. New user-settable variable, show-mode-in-prompt, adds a characters to the
beginning of the prompt indicating the current editing mode.
퍼팅
set show-mode-in-prompt on
/ etc / inputrc 또는 ~ / .inputrc (thx stooj)로 들어가면 모든 readline 가능 프로그램에 영향을 미칩니다;)
Google을 검색하고 bash 매뉴얼 페이지를 찾은 다음 bash 소스 코드 (lib / readline / vi_mode.c)를 살펴보면 삽입 모드에서 명령 모드로 이동할 때 프롬프트를 쉽게 변경할 수없는 것처럼 보입니다. 소스에서 모드를 시작하고 중지하기위한 호출이 있기 때문에 누군가가 bash 소스를 패치 할 수있는 기회가있을 것 같습니다.
게시물을 보았을 때 bash vi 모드 설정에 관심이있었습니다. 나는 vi를 좋아하고 왜 커맨드 라인에 있지 않을 것입니다. 그러나 우리는 프롬프트 변경없이 삽입 모드에 있는지 여부를 추적 해야하는 것처럼 보입니다 (많은 포럼 게시물을 말합니다). ESC를 누르지 않으면 항상 삽입 모드에 있습니다. 조금 더 쉽지만 항상 직관적 인 것은 아닙니다.
이것이 어디로 가는지 관심을 가지고 귀하의 질문을 제기하고 있습니다.
Bash 4.4 / Readline 7.0 은 사용자 설정 가능 모드 문자열에 대한 지원을 추가합니다 .
베타 버전을 사용해 볼 수 있지만 현재 약간 버그가있는 것 같습니다. 또한 프롬프트에서 모드 표시기를 원하는 위치 (킬러 기능이라고 생각 함) 지정을 아직 지원하지 않습니다.
기다리지 않고 약간의 컴파일을 두려워하지 않는다면이 기능을 지원하는 패치 버전의 bash 4.3 및 readline 6.3을 github에 게시했습니다.
패치 된 버전으로 다음과 같은 작업을 수행 할 수 있습니다.
설치 방법을 포함한 자세한 내용은 https://github.com/calid/bash 를 참조하십시오.
여러 줄 프롬프트 .inputrc
INPUTRC는 표시 할 수있는 옵션이 +
삽입과 :
추가하여, 정상 모드 set show-mode-in-prompt on
에 ~/.inputrc
eMPee584가 쓴, 그러나이 프롬프트 (배쉬와 readline에 이전 버전의) 여러 잘 작동하지 않습니다.
솔루션에는 한 줄 PS1
( >
)과 프롬프트 전에 무언가를 에코하는 함수가 있습니다. bash에 내장되어 PROMPT_COMMAND
있습니다.
function prompt {
PS1=' > '
echo -e "$(date +%R) $PWD"
}
PROMPT_COMMAND='prompt'
echof printf에서는 일반적인 프롬프트 문자열을 사용할 수 없습니다. 는 -e
interprete 색상 코드로이며, 추가 할 필요가 없습니다 \[
또는 \]
어쨌든 작동하지 않는다.
삽입 모드 :
20:57 /home/sshbio/dotfiles/bash
+ > _
일반 모드 :
20:57 /home/sshbio/dotfiles/bash
: > _
tab을 누르면 PS1 만 반복되어 나에게 의미가 있습니다.
20:57 /home/sshbio/dotfiles/bash
+ > ls _
bashrc bash_profile inputrc
+ > ls _
나는 또한 BASH vi 모드에 대한 지표를 얻으려고 노력하고 있으며, 모두 간단하고 아직 할 방법이 없다는 것을 알게되었습니다.
현재 접근 방식은 어떤 모드인지 확실하지 않을 때 'a'를 누르십시오. BASH PROMOT 뒤에 'a'가 표시되면 'INSERT'모드에 있다는 것을 알게됩니다. 그런 다음 'RETURN'을 누르고 계속 진행하십시오. 이것은 작은 성가심을 해결하는 쉬운 방법입니다.
그건 그렇고, 나는 '별칭 a ='cal ', 또는 빈 히트를 줄 수있는 다른 것을'유용함 '.
이 이미지 와 같은 여러 줄 프롬프트
내 작업 arround는 다음과 같습니다
내 배쉬 프롬프트
export PS1=" ┌錄 \[\e[32m\]\u\[\e[m\]\[\e[32m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\] \w \\$ \n "
.inputrc
set show-mode-in-prompt on
set vi-ins-mode-string " └──錄 (ins):"
set vi-cmd-mode-string " └──錄 (cmd):"
이것이 당신에게 도움이 되었기를 바랍니다
참고 URL : https://stackoverflow.com/questions/1039713/different-bash-prompt-for-different-vi-editing-mode
'Programming' 카테고리의 다른 글
종료 / 중지 될 때 중요한 변경 위치 API에 대한 동작? (0) | 2020.08.04 |
---|---|
nodejs에 적합한 메시지 큐 옵션은 무엇입니까? (0) | 2020.08.04 |
pip가 버전 10에서 버전 18로 업그레이드 한 이유는 무엇입니까? (0) | 2020.08.04 |
동일한 솔루션 / 프로젝트에서 Visual Studio를 사용하여 32 비트 및 64 비트 모두 대상 (0) | 2020.08.04 |
HTTP 폴링, 롱 폴링, HTTP 스트리밍 및 웹 소켓에 대한 이해 (0) | 2020.08.04 |