프로그램에 따라 같은 문자라도 직접 타이핑하는 경우와 복사해서 붙여 넣을 경우는 구분이 필요하다.
vim에서 코드를 복붙 해봤으면 공감이 갈 것이다. 자동 indentation 기능으로 직접 코딩할 때는 문제없지만, 다른 코드 여러 줄을 복붙 하면 indentation이 엉망이 되는 경우가 있다.
물론 이를 해결해주는 기능도 있지만 더 근본적으로 vim 입장에서 이 코드가 복사한 건지, 직접 입력한 건지 구분할 수 있다면 좋을 것이다.
구분을 위해 사용하는 게 bracketed paste mode이다.
이게 설정되면 붙여 넣기로 추가된 문자에 대해서 앞뒤로 특수 기호가 추가된다. 그 정체는 앞에는 \e[200~
, 뒤에는 \e[201~
가 붙는데 실제 눈에 보이는 건 00~
와 01~
일 것이다.
복사 여부를 bracketed paste mode로 구분한다는 것은 직접 제어할 수도 있다는 뜻이다. 아래와 같이 출력하면 시작/종료할 수 있다.
$ printf "\e[?2004h"
(ctrl+v)
$ 00~PASTED_STRING01~
$ printf "\e[?2004l"
(ctrl+v)
$ PASTED_STRING
가끔 비정상적인 프로세스 종료로 인해 bracketed paste mode가 켜있는 경우가 있다. 이런 경우 붙여 넣기 할 때 위 특수 문자가 붙겠지만 당황하지 않고 printf "\e[?2004l"
로 모드를 종료하면 복구된다.
'기타' 카테고리의 다른 글
CSS flex 기본 (0) | 2020.03.12 |
---|---|
분산 트랜잭션 - 2단계 커밋(two-phase commit) (0) | 2020.02.20 |
newline의 골치 CR, LF (0) | 2020.02.11 |
[bash] history 사용법 (0) | 2020.02.11 |
ssh 터널링 (0) | 2020.02.02 |
댓글