Vimで最も破壊的な「挿入モードへの入力を忘れた」シーケンス


10

あなたが任意のテキストファイル(あなたが選択してもよい)を持っているふりをしてください。

テキストへの挿入が意図されていたが、通常モードで入力された(つまり、i/ aが押されなかった)場合、最も破壊的な(*)キーストロークのシーケンスを指定します。ビジュアルモードにしたり、Vimを終了したりすることはできません。

破壊的とは、次のように定義されます。必要なキーストロークの数による、変更/削除された文字の比率。
変更を一定数のundos で元に戻すことができない場合は、ボーナスポイントを獲得できます。


例:改行なしの入力ファイル。入力シーケンス:dfs


[code-golf]タグは、勝利する文字が最も少ないことを意味します。チャレンジはそれよりも複雑なので、タグ付けを変更しました。
dmckee ---元モデレーターの子猫

回答:


3
: 0,0 w 
:r

すべてを台無しにして元に戻す


1
それがどのようにすべてを台無しにするのか分かりません!このスクリプトを実行すると、ファイルの内容が複製され、元に戻すことが正常に機能します。説明できますか?ありがとう:)
saeedn

@saeedn :0,0 wは0行目から0行目までを書き込んでから、:rそれを読み取って(現在は空)戻しますが、実際にテストするvimはありません
ラチェットフリーク

1
さて、最初にすべての、: 0,0 wそう(私の)Vimは私が言っている、それを保存することを拒否し、部分的にバッファを書き込みw!の代わりにw。これまでのところ:r、ファイルを再度開くことはありません。代わりに、:eファイルシステムからファイルを読み込むものを指定する必要があります。ただし、この変更によりバッファーは変更されますが、バッファーは空ではありません。最初の行が含まれています( "0,0"を保存したため)。少なくともundoingは機能しません。
ビットマスク、

3
:set ul=-1
ggdG
:w

これにより、ファイルの内容が消去され、保存されます。がundolevel負の数に設定されているため、元に戻す操作はできません。元に戻す操作は無効になります。

編集:の:g/^/d代わりに書き込む方が良いggdGです。後者の場合、p(put)を使用して変更をロールバックできるからです。


ggdG次のように置き換えることができます%d
。– kenorb

@kenorbはい、それはより短いですがggdG、(p)を置くことで反転できるという問題もあるので:g/^/d、より良いオプションのようです:)
saeedn

@saeedn :%d_は問題よりも短く、:g/^/d解決しputます。
リッチ

また、この答えを書くことの可能なコンテキストの外で、誰かが誤ってそれらのキーストロークを挿入モードで入力モードにしていたと思っているかどうかはわかりません。;)
リッチ

2
:set ul=-1
:%s///g
:r!head -c1G</dev/urandom
:w
  1. 元に戻すを無効にします
  2. 文字を削除します
  3. / dev / urandomから1Gのデータを読み取ります
  4. 保存する

私は文字を追加しているので、ルールを曲げます(存在しない文字と現在の文字は文字が変更されたことを意味します)。好きなだけ文字を追加できるので、このスコアは理論上無限です。


0

5バイト:

:bd!

その後、Enterキーを押します。

編集中のファイルの現在の状態をメモリから破棄するため、そのファイルで保存されていない変更はすべて失われます。他のファイルを開いている場合、影響はありません。開いているファイルが1つしかない場合でも、vimは終了しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.