2012-12-01 5 views
0

내가 Slackware 13.37에서 elvis를 기본값으로 호출하는 것으로 생각하는 vi를 사용할 때, 나는 텍스트를 예상대로 삽입 할 수 있지만, ESC xl$을 사용하여 오타를 편집하면 커서가 마지막 문자 대신에 마지막 문자의 왼쪽에 새로운 텍스트를 삽입하도록 강요하므로 필자는 필자가 공간으로 줄곧 지우지 않는 한 오타를 강요한다. 실제 화살표 키를 사용하면 대개 마지막 글자를 넘을 수 있지만 항상 그런 것은 아닙니다. 내가 뭐하는 거지 설명하는데 도움Vi 편집 및 커서의 끝에서 커서 위치?

: 나는 ESC x

This is text with a typog 

하지만 ESC l 또는 ESC $으로 문제를 해결

This is text with a tttypog 

날에만, 따라서 삽입 나를 강제 g로 커서를 이동할 수 있습니다 g 왼쪽의 새 텍스트 만

내가 잘못하고 있니?

+3

Vi를 잘 배우려면 삽입 모드를 기본값으로 생각하지 않는 것이 좋습니다. 일반적으로 명령 모드를 유지하고 텍스트를 추가하기 위해 삽입하기 만하면 훨씬 더 의미가 있습니다. –

답변

4

편집 : "일반 모드"와 "명령 모드"대체 - @Jim 청지기 :이 부정확

을 지적 주셔서 감사합니다

짧은 답변 : 당신이 정상 모드에 있고 문자를 누른 후에 텍스트를 삽입 할 경우 a . A을 눌러 줄의 끝으로 직접 건너 뛰고 마지막 문자 다음에 문자를 삽입하십시오. vi에서는 현재 행의 마지막 문자 뒤의 열에 커서를 놓을 수 없습니다 (일반 모드 인 경우). 그러나 vim에는 virtualedit라는 옵션이 있습니다. 이렇게하면 virtualedit을 사용할 수 있습니다 (help virtualedit 참조).

+4

나는 정상 모드라고 생각하는데, 명령 모드가 아닙니다. –

1

vi에는 편집 모드 (기본값)와 삽입 모드의 두 가지 모드가 있습니다. 명령 "i"(따옴표 제외)는 삽입 모드로 이동하고 ESC는 편집 모드로 돌아갑니다. 모든 명령 앞에 ESC를 누를 필요는 없습니다. ESC를 누르는 것은 마지막 모드를 잊어 버렸을 때 편집 모드에 있음을 확인하는 무해한 방법입니다.

"A"명령 (따옴표 제외) 는 줄의 끝에 텍스트를 추가하는 데 사용됩니다.