이는 편집자 동작에 완전히 익숙하지 않은 사람들이 부자연스러운 편집 동작을 관찰할 때 발생하는 일반적인 문제입니다 vim
.
insert
커서 위치를 즉시 변경하려면 Enter를 누른 다음 종료하세요.- (잘못된) 제거 및 붙여넣기
[ ]word
결과some[ ][ ]wordand the rest
(명확성을 위해 공백이 표시됨[ ]
)
vim
별도로 명시하지 않는 한 텍스트를 항상 커서 위치 왼쪽에 붙여넣고 삽입하고 추가하는 규칙을 정의하는 유사한 편집기가 있다고 가정해 보십시오 . 물론 개행 문자 위로 커서를 가져갈 수 있어야 합니다(예: 제거할 수 있도록 허용).
이로 인해 해당 편집기가 제대로 설계되지 않았습니까(예: 자체 명령 및 작업과 일치하지 않음)?
즉, vim
합의가 자의적이거나 신중하게 만들어진 것입니까?
답변1
Sato Katsura와 Julie Pelletier가 이러한 혼란을 해결했으며 Vim은 여러분이 원하는 대로 사용할 수 있는 풍부한 명령과 옵션을 제공합니다. 삽입 모드가 그런 방식으로 작동하는 몇 가지 이유에 대해 논의하겠습니다.
터미널에서는 문자가아니요항상 커서 아래에 있습니다. 예를 들면 다음과 같습니다.
- 커서가 EOL 위에 있을 수 있습니다.
- 커서가 개행 문자 위에 있을 수 있지만 개행 문자는 터미널에 표시되지 않는 문자입니다.
Vim에서는 normal mode
커서가 문자가 없는 곳에도 위치할 수 있습니다. 이 동작을 보려면 빈 줄에 주목 a하고 i동일한 작업을 수행하십시오.
입력 방법이 다른 또 다른 이유는 insert-mode
패턴 검색이 커서를 현재 커서 위치에서 일치 시작 부분으로 이동시키기 때문입니다. 일치하는 길이 위로 커서를 이동할 수 있으므로 삽입 명령이 일치하기 전에 삽입 모드로 들어가기를 원합니다.
또한 입력하면 일시적으로 커서가 한 문자 앞으로 /이동하므로 normal-mode
동일한 패턴의 새로운 일치 항목에 대해 검색이 반복될 수 있습니다.
답변2
vi
나는 당신의 혼란을 이해하지 못하지만 다음 과 같은 매우 엄격한 지침이 있습니다 vim
.
i: insert text before the cursor
I: insert text at the beginning of the line
a: append text after the cursor
A: append text at the end of the line
p: paste the buffer after the cursor
P: paste the buffer before the cursor
목록은 계속됩니다.