왜`cw`와`ce`가 같은 일을합니까?


15

이것은 항상 wand 및 Wmotion 명령 에 대해 나를 괴롭 혔습니다. change 명령을 단독으로 사용할 d때나 elete 명령을 사용할 때 와 다르게 hange 명령을 사용할 때 다르게 작동하는 것 같습니다 .


예를 들어이 텍스트의 "q"에 커서를두면 다음과 같습니다.

The quick brown fox jumps over the lazy dog.

입력 dw결과

The brown fox jumps over the lazy dog.

de결과를 입력

The  brown fox jumps over the lazy dog.

( "The"와 "brown"사이의 두 공백에주의하십시오.)


yANK 명령도 취급 we다르게, 같은 비교하여 표시 할 수 있습니다 yeP:

The quickquick brown fox jumps over the lazy dog.

그리고 ywP:

The quick quick brown fox jumps over the lazy dog.

그러나 입력하거나 ceslow<Esc>또는 cwslow<Esc>똑같은 결과 :

The slow brown fox jumps over the lazy dog.

이것은 어딘가에 기록되어 있습니까? 그 뒤에 논리는 무엇이며 어떻게 명령의 결과를 예측할 수 w있습니까?

답변:


18

특별한 경우입니다. "특별한 경우"에서 WORD 문서를 확인하십시오 .

특수한 경우 : 커서가 공백이 아닌 경우 "cw"및 "cW"는 "ce"및 "cE"처럼 취급됩니다. "cw"는 변경 단어로 해석되고 단어에는 다음 공백이 포함되지 않기 때문입니다. {Vi : 공백에있을 때 "cw"다음에 다른 공백이 있으면 첫 번째 공백 만 변경됩니다. "dw"는 모든 공백을 삭제하기 때문에 이것은 아마도 버그 일 것입니다.}

또 다른 특수한 경우 : "w"모션을 연산자와 함께 사용하고 마지막으로 이동 한 단어가 줄의 끝에있을 경우 해당 단어의 끝이 다음 텍스트의 첫 단어가 아닌 작동 된 텍스트의 끝이됩니다. 선.

"e"의 원래 Vi 구현은 버그가 있습니다. 예를 들어, "e"명령은 이전 행이 비어 있으면 행의 첫 문자에서 중지됩니다. 그러나 "2e"를 사용할 때는 이런 일이 발생하지 않습니다. Vim에서 "ee"와 "2e"는 동일하며보다 논리적입니다. 그러나 이로 인해 Vi와 Vim이 약간 호환되지 않습니다.


1
Neovim 0.2.1은이 동작을 토글하는 'cpoptions'플래그 "_"(밑줄)를 추가합니다. neovim.io/doc/user/options.html#'cpoptions '
Justin M. Keyes

6

의 운동 동작의 차이 cw비교는 dw간단하게 설명 할 수있다 : 당신이 단어를 삭제하면 당신은 또한 제거에 공백을하고자 제안하는 동안, 당신이 그것을 다음 공백을 떠날거야 단어를 변경하려면 일반적으로합니다.

공백을 어떤 이유로 든 없애고 싶다면 (정기적으로 충분하지만 예제를 생각할 수는 없습니다) aw모션 을 사용하십시오 caw.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.