물고기의 삽입/덮어쓰기 모드

물고기의 삽입/덮어쓰기 모드

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

현재로서는 GNU-Emacs에서 이 조합의 의도된 동작만 볼 수 있습니다. 거기서 덮어쓰기 모드는 <insertchar>및 에 바인딩되어 있습니다 <insert>.

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

가지고 있으면 유용한 것이라고 생각하기 때문에 작동시키고 싶습니다. 이 문제를 어디서 고칠 수 있는지 아시는 분 계신가요?

그건 그렇고 Fn + Backspace, 표현은 "DELETE"언급된 응용 프로그램에서 잘 작동합니다.

그건 그렇고, 아니. 2: 생선 껍질을 사용하고 있습니다. bash 셸 내에서는 이스케이프 시퀀스가 ​​인쇄되지 않지만 키 조합도 효과가 없습니다.

답변1

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

그들은 실행 중인 애플리케이션에 키 누르기를 보내고(커널의 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~삽입 문자는제어 순서is escape[@및 (여러 문자의 경우) 삽입 모드는 다음과 같습니다.escape[4m
  • 수정됨특수 키(예: controlInsert)는 일치하는 문자를 보내지 못할 수 있습니다.어느제어 순서. xterm을 사용하면 기존 제어 시퀀스와의 혼동을 피하기 위해 구성됩니다. 예를 들어 단순한 프로그램이 매개변수를 무시하는 위치에 매개변수를 추가합니다.

추가 자료:

관련 정보