Fish의 삽입/덮어쓰기 모드

Fish의 삽입/덮어쓰기 모드

저는 MacBook에서 Linux Mint를 사용하고 있으며 키보드에서 INSERT 키 조합에 해당하는 것은 입니다 Fn + RETURN.

현재 GNU-Emacs에서는 이 조합의 예상되는 동작만 볼 수 있습니다. 여기서는 재정의 모드가 <insertchar>및 에 바인딩되어 있습니다 <insert>.

예를 들어 웹 브라우저에서는 아무런 효과가 없습니다. Linux 터미널과 내가 시도한 모든 터미널 에뮬레이터(예: konsole, xterm) 내에서 [2~삽입 모드로 전환하는 대신 이스케이프 시퀀스가 ​​화면에 인쇄됩니다.

나는 그것이 유용한 것이라고 생각하기 때문에 그것을 작동시키고 싶습니다. 이 문제를 어디서 해결할 수 있는지 아는 사람이 있나요?

참고: Fn + Backspace, 위임자는 "DELETE"위 응용 프로그램에서 잘 작동합니다.

그건 그렇고, 아니요. 2: 생선 껍질을 사용했습니다. Bash 쉘에서는 이스케이프 시퀀스가 ​​인쇄되지 않지만 키 조합도 작동하지 않습니다.

답변1

터미널 에뮬레이터는 텍스트 자체를 편집할 수 없으므로 이 수준에서는 삽입 모드와 덮어쓰기 모드의 개념이 존재하지 않습니다.

그들은 단순히 실행 중인 응용 프로그램에 키 누르기를 보내고(커널의 tty 드라이버를 통해) 수신하고(다시 커널 tty 드라이버를 통해) 응용 프로그램의 데이터를 해석하고 그에 따라 화면을 업데이트합니다.

Insert 키의 경우 올바른 동작은 실제로 \e[2~이스케이프 시퀀스를 보내는 것입니다.

이를 해석하고 삽입 모드와 덮어쓰기 모드 사이를 전환하는 것은 애플리케이션(fish/bash/etc. 쉘, emacs/etc. 텍스트 편집기 등)에 달려 있습니다(후자를 구현하는 경우).

답변2

터미널 에뮬레이터에는 화면에 문자(및 줄)를 삽입하고 삭제하기 위한 제어 시퀀스가 ​​있습니다. 하지만 애플리케이션을 실행할 때(둘 중 하나)껍데기또는텍스트 에디터), 입력할 수 있는 제어 순서는 일반적으로 다음과 같습니다.아니요터미널에 에코. 애플리케이션은 이러한 특수 키를 읽고 터미널에 보낼 제어 시퀀스를 결정합니다. 효과(삽입, 삭제 및 재입력)는 단지그림응용 프로그램 기능. 실제 데이터는 애플리케이션의 메모리(또는 데이터 파일)에 있습니다.

Insert대부분의 터미널에는 다음을 통해 액세스할 수 있는 특수 키(예: )가 있습니다.관습비슷한 이름의 제어 시퀀스와 일치하는 문자를 보냅니다.도착하다단말기). 그 이유는 원래는,로컬 모드사람들이 사용하는 것입니다.

모든 ANSI 호환 터미널이 작동합니다.현지의모드(이 기능을 중단시키는 일부 관련 없는 모드 무시) 이것은 ... 불리운다보내기/받기 모드SRM( ) 표준에 나와 있습니다. 구형 터미널에서는 다른 모드를 고려해야 할 수도 있습니다끼워 넣다. 내부에용어 정보(5)언급된 매뉴얼 페이지:

   move_insert_mode          mir    mi   safe to move while
                                         in insert mode

관례는 제쳐두고 모든 터미널에 제어 순서와 일치하는 특수 키가 있는 것은 아닙니다. 예를 들어,

  • 그리고rxvt, 삽입 키는 삽입 escape[2~문자가 전송되는 동안 전송될 수 있습니다.제어 순서escape[@및 (여러 문자의 경우) 삽입 모드는 다음과 같습니다 .escape[4m
  • 수정됨특수 키(예 controlInsert: )는 일치하는 문자를 보내지 못할 수 있습니다.어느제어 순서. xterm을 사용하면 기존 제어 순서와의 혼동을 피하기 위해 구성됩니다. 예를 들어 간단한 프로그램에서는 이를 무시하는 매개변수를 추가합니다.

추가 자료:

관련 정보