Trình tự bị phá hủy nhiều nhất đã bị quên


10

Giả sử bạn có một tệp văn bản tùy ý (mà bạn có thể chọn).

Đưa ra chuỗi các lần nhấn phím có tính phá hủy cao nhất (*) nếu nó được đưa vào văn bản, nhưng thay vào đó được nhập ở chế độ bình thường (tức là i/ akhông được nhấn). Bạn không thể vào chế độ trực quan và không thoát Vim.

Phá hủy được định nghĩa như sau: Tỷ lệ các ký tự thay đổi / bị xóa theo số lần nhấn phím cần thiết.
Bạn nhận được điểm thưởng nếu những thay đổi của bạn không thể được hoàn tác bởi một số undos cố định .


Ví dụ: Tập tin đầu vào không có ngắt dòng. Trình tự nhập : dfs.


Thẻ [code-golf] có nghĩa là ít nhân vật nhất sẽ thắng. Thử thách của bạn phức tạp hơn thế, vì vậy tôi đã thay đổi cách gắn thẻ.
dmckee --- ex-moderator mèo con

Câu trả lời:


3
: 0,0 w 
:r

hủy hoại mọi thứ không hoàn tác


1
Tôi không hiểu làm thế nào nó phá hỏng mọi thứ! Khi tôi chạy tập lệnh này, nó sao chép nội dung tệp của tôi và hoàn tác tốt! bạn có thể giải thích? Cảm ơn :)
saeedn

@saeedn :0,0 wnên viết các dòng từ 0 đến 0 và :rsau đó sẽ đọc lại (bây giờ trống), tôi thực sự không có vim để kiểm tra mặc dù
ratchet freak

1
Vâng, trước hết, : 0,0 wviết một bộ đệm một phần, vì vậy (tôi) Vim từ chối lưu nó, tôi phải nói w!thay vì w. Cho đến nay rất tốt, bây giờ :rkhông mở lại tập tin. Thay vào đó, bạn phải nói :ecái nào sẽ đọc trong tệp từ hệ thống tệp. Tuy nhiên, mặc dù với sửa đổi này, nó thay đổi bộ đệm, bộ đệm không có sản phẩm nào. Nó chứa dòng đầu tiên (vì bạn đã lưu "0,0"). Ít nhất undaging không hoạt động.
bitmask

3
:set ul=-1
ggdG
:w

Điều này xóa nội dung của tập tin và lưu nó. Không thể hoàn tác là có thể vì undolevelđược đặt thành số âm, điều này sẽ vô hiệu hóa thao tác hoàn tác.

Chỉnh sửa: Tốt hơn là viết :g/^/dthay ggdGvì bởi vì trong trường hợp sau, bạn có thể sử dụng p(đặt) để khôi phục các thay đổi.


ggdGcó thể được thay thế bằng:%d
kenorb

@kenorb Có, đó là ngắn hơn, nhưng nó cũng có vấn đề ggdG, có thể đảo ngược bằng cách đặt ( p), vì vậy :g/^/dcó vẻ vẫn là một lựa chọn tốt hơn :)
saeedn

@saeedn :%d_ngắn hơn :g/^/dvà cũng giải quyết được putvấn đề.
Giàu

Ngoài ra, bên ngoài bối cảnh có thể viết câu trả lời này, tôi không chắc liệu có ai từng vô tình gõ những phím đó vào không, nghĩ rằng chúng ở chế độ chèn. ;)
Giàu

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. Vô hiệu hóa hoàn tác
  2. Xóa ký tự
  3. Đọc 1G dữ liệu từ / dev / urandom
  4. Tiết kiệm

Bẻ cong các quy tắc, bởi vì tôi đang thêm các ký tự (một ký tự không có ở đó và bây giờ, có nghĩa là một ký tự đã được thay đổi). Tôi có thể thêm nhiều ký tự như tôi muốn vì vậy điểm này về mặt lý thuyết là vô hạn.


0

5 byte:

:bd!

tiếp theo là nhấn nút enter.

Vứt bỏ trạng thái hiện tại của tệp bạn đang chỉnh sửa khỏi bộ nhớ, vì vậy tất cả các thay đổi chưa được lưu trong tệp đó sẽ bị mất. Nếu bạn có các tệp khác mở, chúng không bị ảnh hưởng. Điều này không thoát khỏi vim ngay cả khi bạn chỉ mở một tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.