bash 쉘에서 man을 호출하여 커서 아래에 명령을 가져옵니다.

bash 쉘에서 man을 호출하여 커서 아래에 명령을 가져옵니다.

zsh"모든 명령에 대해 실행할 수 있습니다 " 에서 Esc h명령에 대한 매뉴얼 페이지를 가져오고 매뉴얼 페이지를 종료한 후 모든 인수가 포함된 명령을 가져옵니다. 예를 들어 내 셸에 다음을 입력합니다.

zsh# tar -czvf docs.tgz docs

커서를 아무데나 놓으면 tarman 을 호출 할 수 있습니다 .Esc h

이제 나는 똑같은 것을 원하지만 bash를 원합니다. 가능한 해결 방법 중 하나가 아래에 표시되어 있지만 다른 해결 방법도 있는지 알고 싶습니다.

bind '"\eh": "\C-a\ef\C-k\C-f\C^Cman \C-y\C-m\C-y\C-y\ey"'

답변1

명령줄 작업에 관해 이야기할 때 실제로는 readline 라이브러리에 대해 이야기하는 것입니다. readline 바인딩 업데이트는 예제에서와 같이 명령줄에서 readline의 기본 초기화 파일 /etc/inputrc( 확인 echo $INPUTRC)에서 수행하거나 계정에 대한 로컬 초기화를 생성하여 수행 할 수 있습니다 ~/.inputrc. 아직 GNU readline 라이브러리를 찾지 않았다면(여기에서 시도해 보세요)

문제에 대한 몇 가지 제안 사항은 다음과 같습니다.


제안 1

  • \ehzsh readline을 사용하면 zsh를 사용하여 계정에서 ESC-h( )에 대한 키 바인딩을 확인하고 bash를 사용하여 해당 바인딩을 계정에 복사할 수 있습니다. 매우 똑똑한 몇몇 사람들은 이러한 바인딩을 결합하여 아무런 조정 없이 작동합니다.
    • zsh 계정에서 바인딩 명령( bind -P[원시 바인딩 출력에 소문자 p 스위치 사용])을 사용하여 zsh 계정의 활성 바인딩을 확인합니다.
    • 바인딩 출력에서 ​​실제 코드를 함께 모아야 할 수도 있습니다.
    • bash 계정의 바인딩에 전체 줄을 추가하세요(위에서 시도한 것처럼).

제안 2

  • 위 예시의 경로를 따라가세요

이 시점에서는 위의 예가 작동하지만 약간의 조정이 필요합니다. 이것은 나에게 효과적입니다

  • "\eh": "\C-a\C-kman \e1\e.\C-m\C-y\M-y"

바인딩을 /etc/inputrc.conf에 넣었습니다. 명령줄에서 키 시퀀스를 사용하여 inputrc를 다시 읽어야 합니다 ctrl+x ctrl+r.

그러나 귀하의 질문은 커서 아래에 있는 단어에 대해 이 작업을 수행하는 방법입니다. 이것은 나에게 효과적입니다.

  • "\eh": "\ef\eb\ed\C-y\e#man \C-y\C-m\C-p\C-p\C-a\C-d"

간단히 말해서 다음과 같이 작동합니다.

키 시퀀스의 경우 \eh(ESC+h)

  • 먼저 단어의 끝을 찾은 다음 시작( \ef\eb) 을 찾으세요.
  • 현재 단어(관심있는 단어)를 삭제하고 다시 넣으세요( \ed\C-y). 이를 종료 버퍼에 넣어야 합니다.
  • 전체 명령줄을 주석 처리하고 새 프롬프트( \e#) 로 이동합니다.
  • 명령줄에 "man"을 입력합니다(공백에 주의하세요).
  • 관심 있는 명령을 명령줄에 붙여넣고 실행합니다( \C-y\C-m).
  • 명령 기록( )에서 두 번째(이전) 항목("man", 그 다음 원래 명령)을 찾습니다 \C-p\C-p.
  • 줄의 시작 부분으로 이동하여 주석 문자( \C-a\C-d) 를 제거합니다.

제안 3

  • emacs 및 vi 모드를 사용하도록 readline을 설정하십시오. 여러분이 즐겨 사용하는 매우 강력한 편집기 명령 대부분을 키 바인딩에서 사용할 수 있습니다.

참고: 이전에는 이 옵션을 바인딩으로 구현해 본 적이 없지만 명령줄에서는 사용합니다. inputrc 파일이나 bashrc를 통해 이를 설정할 수 있습니다.

  • 입력 rc에서:set editing-mode vi
  • .bashrc에서: set -o vi

바인딩을 수행하는 프로세스는 기본 readline 키 시퀀스와 유사한 것으로 보입니다. 그러나 제안 2의 예를 보면 올바른 방향으로 나아갈 수 있습니다.

관련 정보