Programming

다른 vi 편집 모드에 대한 다른 bash 프롬프트?

procodes 2020. 8. 4. 19:44
반응형

다른 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~/.inputrceMPee584가 쓴, 그러나이 프롬프트 (배쉬와 readline에 이전 버전의) 여러 잘 작동하지 않습니다.

솔루션에는 한 줄 PS1( >)과 프롬프트 전에 무언가를 에코하는 함수가 있습니다. bash에 내장되어 PROMPT_COMMAND있습니다.

function prompt {
    PS1=' > '
    echo -e "$(date +%R)  $PWD"
}

PROMPT_COMMAND='prompt' 

echof printf에서는 일반적인 프롬프트 문자열을 사용할 수 없습니다. -einterprete 색상 코드로이며, 추가 할 필요가 없습니다 \[또는 \]어쨌든 작동하지 않는다.

삽입 모드 :

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

반응형