This Vim plugin provides an operator for Rot-N encryption/decryption.
Do your friends send you Rot-N encrypted messages because they think it's funny, leaving you agonized over a mess of jumbled letters, frantically searching for that ad-free website with a military-grade-Rot-N-decryption service?
That sadness ends today!
Dwell in serenity as you open their obfuscated message in Vim, press g?ip........
and laugh silently as soon as the brute-force decrypted message appears.
Afterwards, spend 2 minutes writing an answer message, and 15+ minutes to design a macro that Rot-N encrypts every word of your reply with a different N.
Vim has a built-in ROT13 operator g?
, see :help rot13
.
In contrast, this plugin provides a more general Rot-N operator with special count handling:
10g?2aw
does a ROT-10 encryption on the next 2 words.- Repeatable:
5.
does a ROT-5 encryption on the same 2 word. - With
g?{motion}
, a customizable default value is used for N.
No mappings are created automatically. Add your own. I use:
nmap g? <Plug>(operator-rot-n)
nmap g?? <Plug>(operator-rot-n-linewise)
nmap g?g? <Plug>(operator-rot-n-linewise)
xmap g? <Plug>(operator-rot-n-visual)
Assuming my suggested mappings, you can use this operator with [count]g?{motion}
.
The [count]
before the operator determines the N for the Rot-N transformation.
The {motion}
can also take a count as usual, but that one does not influence the already chosen N.
If no [count]
is supplied, the value from g:OperatorRotN_default_count
is used (default 1).
In visual mode, the [count]
is interpreted analogously.
You can repeat the transformation on the same text with .
.
Using [count].
executes a Rot-[count]
transformation on the same text as before.
If .
is used without a [count]
, the used N depends on the value of g:OperatorRotN_reuse_count_on_repeat
:
If enabled, the [count]
from the last invocation is reused.
If disabled, g:OperatorRotN_default_count
is used.
If g:OperatorRotN_linewise_motions_select_whole_lines
is enabled (default 1), then linewise operators such as j
select whole lines.
Otherwise, the '[
and ']
marks determine the selection.
There is usually no good reason to change this setting.
Requires vim-repeat for clever count
handling, but also works without, just less cool.
Developed and tested on Neovim 0.4.3. When I tested it on Vim 8.2, it worked, too.
100% highly-efficient Vimscript, especially optimized for double ROT13 encryption.
I didn't find any. This probably means that no one else's friends send them ROT-N encrypted messages for fun. But you can install this plugin today and tqsfbe the word!
The Vim licence applies. See :help license
.