# Vim ([Cracked by Bruce Forte](https://codegolf.stackexchange.com/a/133450/31716)) This is a patched version of [my previous approach](https://codegolf.stackexchange.com/a/133414/31716) :for i in split('Qq@:=+!','\zs') exe 'map '.i.' <nop>' exe 'map! '.i.' <nop>' endfo Plus 3 bytes for the `-Z` flag. You can [Try it online!][TIO-j5bf9nta], but keep in mind that some things are slightly different online, since this is a V interpreter, not a vim interpreter. Most notably, the `-Z` flag in vim is translated to the `--safe` flag in V. Of course, your crack may not rely on any V-specific features. [V]: https://github.com/DJMcMayhem/V [TIO-j5bf9nta]: https://tio.run/##K/v/3yotv0ghUyEzT6G4ICezREM9sNDBylZbUV1HPaaqWF2TK7UiVUE9N7FAQV0vU09dwSYvv8BOHS6qiCacl5KW//@/oRGXsdF/Xd3ixLRUAA "V – Try It Online" Input is to the buffer like this: 3 4 And output is to the buffer. ### What's evil about it? First off, the `-Z` flag prevents you from running any external commands (such as bash, python, awk, etc.). Any cracks must run in pure vim. Also, to clarify, an answer like `:q<cr>read a;read b; echo $((a+b))` is not valid, because that is no longer a vim answer. The input and output must happen *inside of one vim session* Then it makes it so that the following characters cannot be used: Qq@:=+! - Disabling `Q` and `:` prevents you from running ex commands. - Disabling `q` prevents a workaround for `q:` entering ex mode, and removes your ability to create/run macros. - Disabling `@` prevents you from deleting text, and running that as a macro (the shortest way to add two numbers). - Disabling `!` prevents you from using filters. - And lastly, disabling `=` and `+` makes it so you can't use the evaluation register. For reference, my solution is 23 keystrokes long. Have fun cracking!