Vim에서 가장 파괴적인 "입력-입력 모드를 잊어 버렸습니다"시퀀스


10

임의의 텍스트 파일이있는 척하십시오 (선택할 수 있음).

텍스트에 삽입하려고했지만 대신 일반 모드로 입력 된 경우 (예 : i/ a를 누르지 않은 경우) 가장 파괴적인 키 입력 순서를 제공하십시오 (* ). 비주얼 모드로 들어 가지 않고 Vim을 종료 할 수 없습니다.

필요한 키 스트로크 수에 따른 변경 / 삭제 된 문자의 비율입니다.
고정 된 수의 undos로 변경 사항을 취소 할 수없는 경우 보너스 포인트를 받습니다.


예 : 줄 바꿈이없는 입력 파일. 입력 순서 : dfs.


[code-golf] 태그는 가장 적은 문자가이기는 것을 의미합니다. 도전은 그보다 더 복잡하므로 태그를 변경했습니다.
dmckee --- 전 운영자 고양이 새끼

답변:


3
: 0,0 w 
:r

모든 것을 취소하지 않음


1
나는 그것이 어떻게 모든 것을 망칠 지 이해하지 못한다! 이 스크립트를 실행하면 파일 내용이 복제되고 실행 취소가 제대로 작동합니다! 설명해 주시겠습니까? 감사합니다 :)
saeedn November

@saeedn :0,0 w은 0부터 0까지의 행을 작성하고 :r다시 읽습니다 (현재 비어 있음).하지만 실제로 테스트 할 vim은 없습니다.
ratchet freak

1
글쎄, 우선 : 0,0 w, 부분 버퍼를 작성하므로 (내) Vim은 저장을 거부합니다 . w!대신에 말해야 합니다 w. 지금까지는 :r파일을 다시 열지 않습니다. 대신 :e파일 시스템에서 파일을 읽을 파일 을 말해야 합니다. 그러나이 수정으로 버퍼를 변경하더라도 버퍼는 비어 있지 않습니다. "0,0"을 저장했기 때문에 첫 번째 줄을 포함합니다. 적어도 undoing이 작동하지 않습니다.
비트 마스크

3
:set ul=-1
ggdG
:w

파일 내용을 지우고 저장합니다. 없기 때문에 실행 취소 불가능 undolevel비활성화는 동작을 취소 네가티브 번호로 설정된다.

편집 : 후자의 경우 (put)을 사용 하여 변경 사항을 롤백 할 수 있기 때문에 :g/^/d대신 쓰는 것이 좋습니다 .ggdGp


ggdG%d
kenorb

@kenorb 예, 짧습니다.하지만 ggdG( p) 를 넣어서 :g/^/d
뒤집을

@saeedn :%d_은보다 짧으며 문제를 :g/^/d해결합니다 put.
Rich

또한이 답변을 작성하는 가능한 상황을 제외하고 누군가가 키 입력을 실수로 입력하여 삽입 모드에 있다고 생각하는지 확실하지 않습니다. ;)
Rich

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. 실행 취소를 사용 중지합니다
  2. 문자를 삭제합니다
  3. / dev / urandom에서 1G의 데이터를 읽습니다.
  4. 저장

문자를 추가하고 있기 때문에 규칙을 구부리십시오 (현재 존재하지 않는 문자는 문자가 변경되었음을 의미합니다). 원하는만큼 문자를 추가 할 수 있으므로이 점수는 이론적으로 무한합니다.


0

5 바이트 :

:bd!

Enter 키를 누르십시오.

메모리에서 편집중인 파일의 현재 상태를 버려 해당 파일의 저장되지 않은 모든 변경 사항이 손실됩니다. 다른 파일이 열려 있으면 영향을받지 않습니다. 파일이 하나만 열려 있어도 vim이 종료되지 않습니다.

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