readline bash vi(vi 쉘 모드)에서 기능 키를 다시 매핑하는 방법은 무엇입니까?

readline bash vi(vi 쉘 모드)에서 기능 키를 다시 매핑하는 방법은 무엇입니까?

vi readline의 매핑 기능 키와 관련하여 다음 두 가지 스택 교환을 읽었습니다.


터치바가 있는 MacBookPro를 사용하고 있습니다. 기능키는 항상 켜져 있지만 물리적인 키와는 달리 가상 터치바 기능키는 불안정하고 내가 입력하는 명령에 쓰레기를 주입하는 경우가 많다(특히 밑줄을 입력하려고 할 때 문제가 된다… 그들 중 F9, F10어쩌면 일부 F11). 저는 이 키를 사용하지 않습니다... 그래서 비활성화할 수 있었으면 좋겠습니다. 하지만 단순히 줄 끝으로 이동하도록 할 수 있다고 가정해 보겠습니다.

다음은 (삽입 모드에서) 줄 끝으로 매핑하려는 여러 시도 중 하나입니다.

set editing-mode vi
$if mode=vi
    set keymap vi-insert
    "<F9>": end-of-line
$endif

프롬프트에 "asdf"를 입력한 결과는 다음과 같습니다.

TT->~$ [] (arg: 20)

그 위에 "[]"를 입력하면 <F9>어떤 식으로든 도움이 될 수 있도록 커서를 누른 후에도 커서가 그대로 유지됩니다.

내가 시도한 변형은 다음과 같습니다.

  • "<F9>": end-of-line
  • <F9>": end-of-line
  • 20: end-of-line
  • "20": end-of-line
  • "arg: 20": end-of-line
  • (arg: 20): end-of-line
  • "(arg: 20)": end-of-line

고쳐 쓰다:다음은 .inputrc현재 "무시"되고 있습니다.

set keymap vi-insert
"\e[20~":redraw-current-line

답변1

미친 짓이지만 사실입니다... 저는 오늘 새로운 서버에 있었고 이 질문에 대해 완전히 잊어버렸고(답은 댓글에 숨겨져 있습니다) 실제로 오늘 이 작업을 수행하는 방법을 검색하고 있었습니다. vi 명령줄에서 기능 키 입력을 비활성화하는 데 문제가 있는 나 자신이나 다른 사람을 위해 답변을 게시합니다.

  1. ~/.inputrc파일 생성 또는 편집
  2. 비아(MacOS, 우분투, CentOS적어도) 다음을 사용합니다.
set keymap vi-insert
"\e[19~":redraw-current-line
"\e[20~":redraw-current-line
"\e[21~":redraw-current-line
"\e[22~":redraw-current-line
"\e[23~":redraw-current-line

@mosvy가 지적했듯이 현재 줄을 다시 그리면 성가신 " (arg: 20)" 또는 " (arg: 21)"가 명령줄 입력이 손상되는 것을 방지할 수 있습니다.

관련 정보