inputrc의 bashrc에서 함수 호출

inputrc의 bashrc에서 함수 호출

저는 Arch Linux(4.13.11)를 사용하고 있으며 my 에는 다음을 .bashrc사용하여 파일을 찾는 사용자 정의 함수가 있습니다.fzf그런 다음 기본 편집기로 해당 파일을 엽니다.

# Search a file with fzf inside a Tmux pane and then open the file in an editor
fzf_then_open_in_editor() {
  local file=$(fzf-tmux)
  # Open the file if it exists
  if [ -n "$file" ]; then
    # Use the default editor if it's defined, otherwise Vim
    ${EDITOR:-vim} "$file"
  fi
}

.inputrc쉘에 Vim과 유사한 키 바인딩을 사용하도록 를 구성했습니다 .

set editing-mode vi

Ctrl바람직하게는 명령 모드에서 +를 눌러 o내 함수를 호출 할 수 있습니다 fzf_then_open_in_editor.

나는 노력했다

set keymap vi-command
"\C-o": fzf_then_open_in_editor

하지만 그건 효과가 없었어요.

에서 .inputrc에 정의된 기능에 대한 키 바인딩을 어떻게 만들 수 있습니까 .bashrc?

답변1

이 양식은 key: functionreadline 내장 함수만 허용합니다. 아시다시피 텍스트를 입력하려면 따옴표로 묶어야 하는 매크로가 필요합니다 key: "my macro\r". 일반적으로 명령 프롬프트에서 이미 삽입 모드에 있으므로 삽입 명령으로 시작해야 하는 이유를 모르겠습니다.

함수를 호출하려면 옵션과 함께 쉘 명령 바인딩을 사용하십시오 -x. 이 바인딩을 에 넣는 방법은 모르겠지만 ~/.inputrc다음 명령을 에 넣을 수 있습니다 .bashrc.

bind -x '"\C-o": fzf_then_open_in_editor'

답변2

이것을 다음에 추가하여 원하는 것을 얻었습니다 .inputrc.

set keymap vi-command
# Go to insert mode with i, write the function's name, then hit enter
"\C-o": "ifzf_then_open_in_editor\015"

\015의 키코드는 어디에 있나요 Enter?

이것은 효과가 있지만 더 우아한 솔루션이 있는지 궁금합니다.

관련 정보