inputrc의 bashrc에서 함수 호출

inputrc의 bashrc에서 함수 호출

저는 Arch Linux(4.13.11)를 사용하고 있으며 다음을 사용 .bashrc하여 파일을 찾는 사용자 정의 기능이 있습니다.후지브그런 다음 기본 편집기를 사용하여 파일을 엽니다.

# 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?

이것은 효과가 있지만 더 우아한 해결책이 있는지 궁금합니다.

관련 정보