Shift 삽입이 삽입 모드에서만 완전히 작동하는 이유는 무엇입니까?

Shift 삽입이 삽입 모드에서만 완전히 작동하는 이유는 무엇입니까?

vim을 사용하여 일부 콘텐츠(CentOS 서버의 Git Bash)를 파일에 붙여넣어 보았습니다.
방금 파일을 열고 shift+를 사용해 보았는데 insert전반부가 (거의) 잘리는 것을 발견했습니다. 하지만 vim을 삽입 모드로 설정하고 shift+를 누르면 insert모든 것이 완벽하게 붙여넣어집니다.
이것이 왜 그런지 궁금하십니까?

감사해요

답변1

Shift+ Insert와 " 모두붙여넣기"를 터미널에 추가하면 비슷한 방식으로 동작합니다. 즉, 키 누르기를 에뮬레이트합니다.

이것은 터미널에서 만들기가 종종 불가능한 중요한 구별입니다. 입력하고 있습니까, 아니면 붙여넣고 있습니까?메모: 일부 터미널에서는 "를 지원합니다.괄호로 묶인 붙여넣기" 모드, @Josh의 댓글 이후에 나는 심지어vim 플러그인괄호 안에 붙여 넣기xterm당신이 관심을 가질 수 있습니다.

붙여넣은 데이터는 삽입 모드에 들어가는 첫 번째 문자까지 손실됩니다. 또한 커서가 이동했고 파일의 다른 부분이 변경된 것을 발견할 수도 있습니다(예: 대소문자 변경 / 삭제됨 / 등)...

요약하자면, 파일에 삽입하려는 텍스트를 붙여넣는 경우 먼저 삽입 모드로 들어갑니다.


다음 텍스트를 복사하여 Vim을 실행하는 터미널에 붙여넣어 보세요(삽입 모드가 아님):

hello how are you

결과는 키보드에서 동일한 문자를 입력하는 것과 동일합니다.

Vim에 붙여넣은 결과

이 경우 삽입 모드로 전환됩니다.

이제 삽입 모드를 종료 Esc하고 다음을 붙여넣어 보십시오.

/are
n

그러면 "are"에 대한 검색이 수행됩니다.

Vim에 붙여넣은 결과

이제 이것을 붙여넣으세요:

:0
dG

아 안돼... 다 없어졌어!

모두 사라졌다


또한 들여쓰기를 활성화한 경우 코드 블록을 vim(삽입 모드에서)에 붙여넣으면 들여쓰기가 너무 많이 됩니다. 그러면 자동으로 들여쓰기가 되고 붙여넣은 코드에 들여쓰기가 포함됩니다.

def my_print(message):
    print(message)
    print('done...')

코드 붙여넣기

이 문제를 해결하려면 :set paste:set nopaste명령을 사용하십시오.

코드 붙여넣기(붙여넣기 모드)

관련 정보