키 바인딩 기능에서 터미널의 편집 가능한 문자열에 값을 붙여 넣을 수 있습니까?

키 바인딩 기능에서 터미널의 편집 가능한 문자열에 값을 붙여 넣을 수 있습니까?

Bash 바인딩에 대해 알고 있습니다. bind -x '"\C-k":"mc"'— 이 예에서는 편집 가능한 명령이 완료되지 않은 동안 mc를 실행할 수 있습니다. 이런 식으로 많은 매크로를 수행할 수 있다고 생각합니다. 이는 X11 없이 작업할 때 유용합니다.

다음과 같은 방법으로 테스트 값을 붙여넣으려고 합니다.

bind -x '"\C-o":"echo -n 123"'
bind -x '"\C-o":"echo -n 123 >> /dev/pts/12"
bind -x '"\C-o":"xclip -out"'
bind -x '"\C-o":"expect exp.txt"'

하지만 결과는

여기에 이미지 설명을 입력하세요.

또 다른 아이디어:

  • bash의 클립보드(Ctrl-w, Ctrl-y)를 사용하세요. Man bash는 이를 "킬 링(kill ring)"이라고 부릅니다. 하지만 프로그래밍 방식으로 사용하는 방법을 찾을 수 없습니다.
  • 텍스트의 각 글자를 누르는 것을 시뮬레이션하는 프로그램으로 에코됩니다.

답변1

찾았어요. man bash명령 설명에서 이에 대해 설명합니다 bind.

편집 가능한 문자열에는 변수가 있습니다: READLINE_LINE, READLINE_MARK, READLINE_POINT.

그러면 명령은 다음과 같습니다.

bind -x '"\C-o":"READLINE_LINE=$READLINE_LINE$(date '+%Y%m%d-%H%M%S')"'

여기에 이미지 설명을 입력하세요.

관련 정보