괄호 붙여넣기
Bracketed-paste괄호로 묶인 붙여넣기(붙여넣기[1] 괄호라고도 함)는 단말기에서 실행 중인 프로그램이 일반적으로 입력되는 텍스트와 다르게 붙여넣은 텍스트를 처리할 수 있도록 하는 일부 터미널 에뮬레이터의 모드입니다.
역사
괄호로 묶은 붙여넣기 기능은 Emacs와의 상호작용을 개선하기 위한 사용자 기여 변경으로 2002년에 xterm에 의해 도입되었습니다.그 후 2005년에 다른 사용자가 이것을 JOE [2]에디터의 다른 선택/붙여넣기 기능의 일부로 문서화했습니다.몇 년 동안 다른 개발자들은 이 [3]기능을 사용하는 터미널 에뮬레이터 및 편집기를 위해 이 기능을 채택했습니다.
동기
괄호로 묶은 붙여넣기는 터미널 텍스트에디터(Vim이나 Emacs 등)에서 코드를 편집할 때 일반적으로 발생하는 다음 문제를 해결하기 위해 사용됩니다.이러한 텍스트 에디터에는 자동 삽입 기능이 포함되어 있는 경우가 많습니다.이 기능을 사용하면 사용자가 줄 끝에 Enter 키를 누를 때 들여쓰기가 자동으로 추가됩니다.예를 들어, 텍스트에디터에서 다음 코드블록을 편집하고 커서 위치를 다음과 같이 마크한다고 가정합니다. 성격.
방어하다 f(): 인쇄물('푸') 사용자가 Enter 키를 누르면 텍스트 편집기가 종종 다음 코드 블록에 표시된 위치로 커서를 이동합니다.
방어하다 f(): 인쇄물('푸') 이는 이미 포맷된 코드를 붙여넣을 때 의도하지 않은 결과를 초래할 수 있습니다.예를 들어, 사용자가 다음 코드 블록을 파일에 복사하려고 한다고 가정합니다.
방어하다 g(): 인쇄물('안녕하세요') 인쇄물('세계') 일반적인 워크플로우에서 사용자는 코드 블록을 선택하여 시스템 클립보드에 복사합니다.그런 다음 파일에서 대상 위치를 선택하고 붙여넣기 명령을 실행합니다.그런 다음 터미널 에뮬레이터는 클립보드에서 텍스트에디터로 문자를 전송하고 텍스트에디터는 예를 들면,d클립보드에서 온 문자 및 키보드에서 D 키를 누르는 사용자로부터 온 문자입니다.코드 블록의 새로운 행은 사용자가 Enter 키를 누르는 것과 동일하게 취급됩니다.따라서 첫 번째 줄 끝에 있는 새 줄이 텍스트 편집기로 전송될 때 자동 삽입이 활성화된 경우 텍스트 편집기가 들여쓰기(여러 공백 또는 탭 문자)를 삽입합니다.다음으로, 단말 에뮬레이터는, 클립보드의 코드 블록의 2행 선두의 스페이스 문자를 송신해, 이중 인텐션을 실시한다.또, 이 문맥에서, 일반적인 자동 인덴트 동작은, 3 행이 3 행이 되는, 3 행째의 시작시에 2 행째의 들여쓰기 레벨과 일치합니다.최종 결과는 다음과 같습니다.
방어하다 g(): 인쇄물('안녕하세요') 인쇄물('세계') 괄호 부착 설명
터미널 에뮬레이터(xterm[4] 및 iTerm2[5])는 프로그램이 이스케이프 코드 또는 제어 시퀀스를 통해 터미널 에뮬레이터의 동작을 구성할 수 있도록 합니다.
일반적인 방법은 사용자 프로그램이 제어 시퀀스를 인쇄하여 표준화하고 단말 에뮬레이터가 표준 출력하여 제어 시퀀스를 인식하고 적절히 반응하는 것입니다.특히 터미널 에뮬레이터는 괄호로 둘러싸인 붙여넣기를 온/오프하는 제어 시퀀스를 제공할 수 있습니다.텍스트 에디터는 기동 시 또는 사용자 명령에 대한 응답으로 괄호로 묶은 붙여넣기를 활성화하기 위해 제어 시퀀스를 전송할 수 있습니다.
그 후 사용자가 입력한 문자는 정상적으로 단말 에뮬레이터에 의해 텍스트에디터로 전송됩니다.단, 사용자가 단말기 에뮬레이터에서 붙여넣기 명령을 실행하면 단말기 에뮬레이터는 붙여넣은 텍스트의 시작과 끝에 특수 제어 시퀀스를 삽입하여 붙여넣은 내용을 괄호로 묶습니다.이것에 의해, 텍스트 에디터는 그 입력을 다른 방법으로 취급할 수 있습니다(예를 들면, 일시적으로 자동 표시를 무효로 하는 등).
각 구현에서는 xterm의 제어 시퀀스에 기재된 제어 시퀀스를 사용합니다.
ESC [ 200 ~붙여진 텍스트의 시작을 나타내다ESC [ 201 ~마지막을 나타내기 위해서
레퍼런스
- ^ Nachman, George (April 15, 2018). "Paste Bracketing". iTerm2 wiki. Retrieved 2022-02-13.
- ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2005). "Xterm Control Sequences". XFree86 Project. Retrieved 2022-02-13.
- ^ Dickey, Thomas E. (2022). "XTerm – bracketed-paste". invisible-island.net. Retrieved March 13, 2022.
- ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas (2022). "XTerm Control Sequences". invisible-island.net. Bracketed Paste Mode. Retrieved March 13, 2022.
- ^ "Proprietary Escape Codes - Documentation - iTerm2 - macOS Terminal Replacement". iterm2.com. Retrieved 2022-02-13.
