bash readline 명령을 정의하는 방법이 있습니까? [폐쇄]

bash readline 명령을 정의하는 방법이 있습니까? [폐쇄]

나는 이것을 할 방법을 찾을 수 없습니다세게 때리다. 그렇다면 동적으로 생성된 문자열을 커서 위치에 삽입하는 bash readline 단축키를 정의하는 방법이 있습니까?

예를 들어 날짜를 삽입하고 싶습니다.

bind '"\C-xx": my-dynamical-date'

aaa  bbb
--------
    ^ cursor is here

# After pressing "\C-xx":

aaa Sun Apr 22 22:19:00 CST 2018 bbb
------------------------------------
                                ^ cursor is here

그렇다면 my-dynamical-date readline 명령을 어떻게 정의합니까?

답변1

조금 어리석지만 다음과 같이 진행될 수 있습니다.

bind '"\C-xx":"$(date) \e\C-e\ef\ef\ef\ef\ef"'

먼저 문자를 입력하고 $(date)호출한 shell-expand-line 후 5단어 앞으로 이동합니다.

키 바인딩을 저장하려면 다음을 추가하세요 inputrc.

"\C-xx":"$(date) \e\C-e\ef\ef\ef\ef\ef"

답변2

READLINE_POINTreadline 변수 와 를 편집하는 함수를 작성할 수 있습니다 READLINE_LINE. 예를 들어, 귀하의 설정에는 다음이 포함됩니다 .bashrc.

_myinsert() { # add date at point
    local TOADD=$(date)
    READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${TOADD}${READLINE_LINE:$READLINE_POINT}"
    READLINE_POINT=$(($READLINE_POINT + ${#TOADD}))
}
# cannot put this in ~/.inputrc
bind -x '"\C-xx":_myinsert'

이는 -x바인딩 옵션을 사용하여 함수를 호출합니다. 나는 동등한 것을 ~/.inputrc파일 에 넣는 방법을 모릅니다 . ( -x예를 들어, 그냥 시작할 수는 없습니다).

관련 정보