zsh를 사용하고 있습니다.
zsh 창에서 복사한 내용을 마우스 오른쪽 버튼으로 클릭한 후 마우스 오른쪽 버튼을 클릭하여 붙여넣도록 하겠습니다. 나는 항상 일부 문자가 누락되고 마지막 문자의 대소문자가 바뀌는 경우가 있습니다.
예를 들어
echo this is a long message
다음으로 붙여넣기
(empty line)
this is a long messaG
그리고
vim hello.txt
~이 되다
m hello.tX
원인은 무엇이며 해결 방법은 무엇입니까?
답변1
여기에는 두 가지 이유가 있습니다.
- 무언가(아마도 Z 쉘)가 터미널을 열도록 지시합니다.괄호 안에 붙여넣기.
- Z 쉘 사용법
vicmd
또는viins
키맵.
무슨 일이 일어나는가?
- Z 셸이 시작되고 터미널 에뮬레이터에서 대괄호로 묶인 붙여넣기를 열도록 제어 시퀀스를 실행합니다. 아니면 텍스트 편집기가 어느 시점에서 이 작업을 수행했는데 어떤 이유로 다시 닫는 제어 시퀀스를 실행할 수 없었을 수도 있습니다.
- 당신은 뭔가를 붙여 넣습니다.
- 터미널 에뮬레이터는 대괄호 붙여넣기 제어 시퀀스의 시작, 붙여넣을 텍스트 및 대괄호 붙여넣기 제어 시퀀스의 끝을 보냅니다.
- 초기 대괄호 붙여넣기 제어 시퀀스의 첫 번째 문자는 ESC로, ZLE의
vi
삽입 모드를 취소하고 ZLE의vi
명령 모드로 돌아갑니다. - 후속 문자는
vi
명령이며 문자o
또는 에 도달하여i
삽입 모드로 들어갈 때까지 많은 작업을 수행하지 않습니다. - 나머지 텍스트는 삽입 모드에서 삽입됩니다.
- 후행 괄호 붙여넣기 제어 시퀀스의 첫 번째 문자는 ESC로, ZLE의
vi
삽입 모드를 취소하고 ZLE의vi
명령 모드로 돌아갑니다. - 제어 시퀀스의 후속 문자는 거의 영향을 미치지 않습니다.
- 닫는 괄호 붙여넣기 제어 순서의 마지막 문자는 대소문자를
~
바꾸는 명령입니다vi
. 이렇게 하면 붙여넣은 텍스트의 마지막 문자가 대문자와 소문자로 바뀌게 됩니다.
다음 두 가지 방법 중 하나로 이 문제를 해결할 수 있습니다.
vicmd
/ 키맵 에서 이를 처리하도록 구성되지 않았기 때문에 Z 쉘이 대괄호로 묶인 붙여넣기를 여는 것을 방지합니다viins
.vicmd
/keymap 에서 대괄호로 묶은 붙여넣기가 작동하도록 합니다viins
. 이를 수행하는 방법은 처음에 Z 쉘이 괄호 안의 페이스트를 인식하도록 만든 방법에 따라 다릅니다. 플러그인safe-paste
은 emacs 키맵을 사용하며 vi 키맵과 잘 작동하도록 조정되어야 합니다. 하지만 이것이 현재 Z 셸에서 브래킷 페이스트를 얻는 유일한 방법은 아닙니다.