Spacemacs 또는 VI에서 오버레이 모드 전환 방지

Spacemacs 또는 VI에서 오버레이 모드 전환 방지

저는 VI의 오버레이 모드를 싫어합니다. 실제로 덮어쓰고 싶지는 않습니다. 이전에 어떤 상태에 있었는지에 상관없이 입력하기 전에 삽입 키를 눌러 삽입 모드에 있는지 확인하고 덮어쓰기 모드로 전환할지 걱정하지 않고 싶을 뿐입니다.

오버레이 모드로 전환하지 않도록 vi를 구성하는 방법이 있습니까? 그렇다면 삽입 키는 항상 삽입 모드를 전환합니까?

저는 Spacemacs를 사용하고 있으므로 Spacemacs에서 이 작업을 수행하는 방법을 아는 사람이 있다면 그것이 가장 좋을 것입니다. 하지만 VI 구문을 얻을 수 없다면 Spacemacs 구성 파일에 vi 구성을 추가하는 방법을 알아낼 수 있을 것입니다. (저는 지금 Spacemacs를 처음 접했습니다).

답변1

나는 당신이 교체 모드를 언급하고 있다고 생각합니다. 내 앞에는 이것을 테스트할 VI가 없습니다. 귀하에게 적합한지 확인해 보십시오.

function s:ForbidReplace()
    if v:insertmode isnot# 'i'
        call feedkeys("\<Insert>", "n")
    endif
endfunction
augroup ForbidReplaceMode
    autocmd!
    autocmd InsertEnter  * call s:ForbidReplace()
    autocmd InsertChange * call s:ForbidReplace()
augroup END

이 스크립트는 교체 모드를 다시 삽입 모드로 전환합니다. 참고 링크여기.

답변2

insert키보드의 키를 왜 사용하나요 ? 을 누르시면 됩니다 i. (절대 교체 모드로 전환되지 않습니다. 최악의 시나리오는 문자 "i"를 입력하고 백스페이스를 누를 수 있다는 것입니다.)

또한 삽입 모드에 있을 때 vi화면 하단에 "INSERT"라고 표시된 작은 상태 표시줄이 나타납니다.


이맥스도 vi그렇고 그렇습니다매우서로 다르기 때문에 두 가지 모두에서 동일하게 작동하는 솔루션을 묻는 질문을 보는 것은 약간 이상합니다.


삽입 모드를 주로 사용하는 경우 vi다음을 수행할 수 있습니다.일반 모드에 대해 자세히 알아보기.

관련 정보