나는 이것을 할 방법을 찾을 수 없습니다세게 때리다. 그렇다면 동적으로 생성된 문자열을 커서 위치에 삽입하는 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_POINT
readline 변수 와 를 편집하는 함수를 작성할 수 있습니다 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
예를 들어, 그냥 시작할 수는 없습니다).