쉘 스크립트에서 이런 식으로 간단한 vim 스크립트를 얻으면
$ cat ascript
:q
$ cat test
vim -S ascript -N -u NONE
read
이것이 내가 실행했을 때 얻는 결과입니다.
$ bash test
^[[I
출력이 ^[[I
예상치 못한 것이며 내 쉘 스크립트의 추가 논리가 중단되었습니다.
누구든지 그 특성과 이 효과를 제거할 수 있는 방법에 대해 추측/알고 있습니까?
업데이트 1
zsh test
출력은 동일하며 sh
다른 이유로 작동하지 않습니다.
$ zsh test
^[[I
$ sh test
test: 2: read: arg count
완전성을 위해 :
"Debian GNU/Linux 11 (bullseye)"
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Oct 01 2021 01:51:08)
업데이트 2
다른 시스템에서 재현을 시도한 후:
더 짧은 방법은
vim -c ': quit' ; read
이것은 일부 쓰레기 출력을 제공할 수도 있고 제공하지 않을 ^[[I
수도 있습니다. 이것은 단지 하나의 예일 뿐이고 다른 하나는 ^[[2;2R^[]11;rgb:3838/3b3b/4040^G
tmux 세션에서 작업하는 경우 문제가 존재하지 않는다는 것입니다. 이로 인해 vim의 (버기?) 터미널 설정 처리에 대해 생각하게 되었습니다. 실제로 TERM
기본값 xterm-256color
을 변경 하면 screen-256color
문제가 해결됩니다. 이 문제를 올바른 방법으로 해결하려면 적절한 조합을 찾아야 할 것입니다.터미널 옵션.
답변1
일부 터미널(xterm 포함)은 응용 프로그램을 보내도록 구성할 수 있습니다.제어 순서터미널이 포커스를 얻거나 잃을 때: ^[[I
터미널이 포커스를 얻을 때와 ^[[O
터미널이 포커스를 잃을 때. 제어 시퀀스를 사용하여 이 기능을 끄거나 ^[[?1004l
( CSI ? Ps l
ctlseqs 목록에서), 처음부터 이 기능을 켜지 않거나(기본적으로 꺼져 있음), 일부 응용 프로그램(Vim?)에서 이 기능을 구성하지 않도록 구성하십시오.
^[[2;2R
팔레트를 보고하는 터미널입니다( CSI # R
ctlseqs 문서에 설명되어 있음). 이는 터미널에서 실행 중인 응용 프로그램이 요청하는 경우에만 발생합니다(귀하의 경우에는 Vim일 수도 있습니다). ^[]11;rgb:3838/3b3b/4040^G
에 대한 응답이다OSC 쿼리이는 다시 애플리케이션에 의해 시작됩니다.
Debian의 Vim은 -u NONE
. (재현할 수는 없지만 지금은 xterm에 있지 않습니다.) 저는 Vim 전문가는 아니지만 실행해 볼 수 있을 것 같습니다.:set ttymouse=
또는 :set t_RV=
Vim에서 끄십시오(이 작업은 초기화 중에 수행되어야 하므로 스크립트 .vimrc
나 -S
스크립트에서 수행하십시오. 대화식으로 수행하면 너무 늦습니다).
표기법에 유의하세요. 이 답변에서는 ^[
이스케이프 문자( \033
in printf
, $'\e'
bash 또는 zsh )를 사용합니다. xterm 문서에서 CSI는 두 문자의 시퀀스를 나타냅니다 ^[[
.