vim에서 클릭하여 ESC
명령 모드로 돌아가면 커서가 한 문자 왼쪽으로 이동합니다. 내가 바라던 것이 아니었고 때로는 l
문자를 삭제하거나 해당 위치로 바로 돌아가는 경우도 있었습니다.
이런 행동에 이유가 있나요? 내가 놓친 사용 패턴에 이것이 편리한가요?
답변1
삽입 모드에서 커서는 문자 사이, 첫 번째 문자 앞 또는 마지막 문자 뒤에 있습니다. 일반 모드에서는 커서가 문자 위에 있습니다(개행은 이 목적으로 사용되는 문자가 아닙니다). 이것은 약간 특이합니다. 대부분의 편집자는 항상 문자 사이에 커서를 놓고 대부분의 명령은 문자에 대해 작동합니다.뒤쪽에(엄밀히 말하면 아니다.아래에) 커서. 이는 GUI가 출현하기 전에는 항상 텍스트 터미널이 사용되었기 때문일 수 있습니다.보여주다커서가 문자(밑줄 또는 블록, 깜박일 수 있음) 위에 있습니다. 이 추상화는 하나 이상의 위치(기둥 및 울타리)가 필요하기 때문에 삽입 모드에서 실패합니다.
모드를 전환하려면 커서가 문자의 절반만큼 이동해야 합니다. 이 i
명령은 왼쪽으로 이동하여 커서를 끝 문자 앞에 놓습니다. a
오른쪽으로 이동하라는 명령을 내립니다 . 가능하다면 삽입 모드를 종료하면( 키를 눌러 Esc) 커서가 왼쪽(또는 줄의 시작 부분에 있는 경우 오른쪽)으로 이동합니다.
나는 이런 Esc행동이 의미가 있다고 생각한다. 일반적으로 줄 끝에 입력하고 Esc왼쪽에만 입력할 수 있습니다. 따라서 일반적인 행동이 가장 일반적인 행동입니다.
커서 아래의 문자를 마지막 흥미로운 문자로 취급하고 삽입 명령을 그 문자로 취급하십시오 a
. 커서를 이동하지 않고 반복 할 수 있지만 a Esc비어 있지 않은 줄의 시작 부분에서 시작하면 오른쪽으로 한 위치 이동하게 됩니다.
답변2
답변3
이 동작은 편집 가능합니다.여기에 답변한 대로, 하지만 멈춰서 무슨 일이 일어나고 있는지 생각해 보세요. 삽입 모드에서는 실제로 문자 위에 있는 것이 아니라 문자 사이에 있습니다. 무언가를 삽입하면 삽입한 다음 항목이 그 뒤에 있도록 커서가 삽입한 끝으로 이동합니다. 이제 방금 문자를 입력하고 그 문자로 뭔가를 하고 싶다고 생각해보세요. 클릭하면 Esc삽입한 마지막 문자에 직접 선택 커서가 놓입니다. 그렇지 않았다면 오히려 더 당황스러웠을 것입니다.
당신이 생각할 수 있는 것은 삽입 모드에 있을 때 일반 모드처럼 움직인 다음 전환하는 것입니다. 이 경우 커서는 문자를 반환하지만 그렇게 생각하면 삽입 모드에 있고 마지막으로 수행한 작업은 삽입이 아닌 것입니다. 어쩌면 일반 모드에서 더 많은 시간을 보내야 할까요?
답변4
내 해결책은 다음과 같습니다.
다음은 제공된 솔루션의 더 깨끗한 버전입니다.이에 대한 위키 페이지.
au InsertLeave * call cursor([getpos('.')[1], getpos('.')[2]+1])