답변:
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete
이것은 Emacs 명령 줄 편집 모드에서 Meta+Esc(과 Ctrl+i) 의 기본 키 바인딩 이 Readline 기능 임을 보여줍니다 complete. Meta키는 일반적으로 Esc명시하지 않고 키보드의 Meta키를 누르십시오. 이 함수에 대한 Readline 문서는
포인트 이전의 텍스트에 대해 완료를 시도하십시오. 실제 완료는 응용 프로그램에 따라 다릅니다. 예를 들어, Bash는 텍스트를 변수 (텍스트로 시작하는 경우
$), username (텍스트가로 시작하는 경우~), 호스트 이름 (텍스트가로 시작하는 경우@) 또는 명령 (별칭 및 함수 포함) 으로 처리를 완료하려고 시도 합니다 . 이들 중 어느 것도 일치하지 않으면 파일 이름 완성이 시도됩니다. 반면 Gdb는 프로그램 기능 및 변수의 완성을 허용하며 특정 상황에서 파일 이름 완성 만 시도합니다.
Anthon의 답변에 대한 귀하의 의견 : 아니요, Esc두 번 누르는 것은 Tab일반적으로 읽는 것과 동일하지 않습니다 (Readline이 기본적으로 Readline처럼 두 동작을 모두 동일한 동작에 매핑하는 프로그램에 있지 않는 한). 그러나 Ctrl+i 입니다 같은 Tab처럼 Ctrl+[동일하다 Esc. 이는 double 이 Readline 함수에 바인딩되어있는 한 원하는 경우 Ctrl+[ Ctrl+[in으로 완료 할 수 있음을 의미합니다 . 예를 들어, Esc 키가없는 VT220 터미널에서 작업하는 경우 유용합니다.bashEsccomplete
complete기본적으로 기능에 바인딩되어 있지만 일반적으로 그렇지는 않습니다 (즉, 키 누름이 "동일하지 않음"). readline 가능 프로그램에서만 탭을 Esc-Esc로 대체 할 수 없습니다. 그러나 Tab을 Ctrl-i로 대체하거나 Esc를 Ctrl- [로 대체 할 수 있습니다.
Tab의 결과에 표시되지 않습니다 bind -p. 왜 그런 겁니까? Tab"하드 코딩"되어 있고 바인딩 될 수 없기 때문일 수 있습니다.
\C-i. 이것은 하드웨어 수준과 동일합니다.
Esc두 번 누르면 bash에서 두 번 (또는\M-\e) 누르는 이유는Tab무엇입니까?