If alphabetical characters are arranged sequentially in target encoding 1, use the following substitution command 2 .
:%s/./\=nr2char(char2nr(submatch(0))+2)/g
However, this replacement implements a non-circular letter shift. A circular shift can be implemented by two substitutions processing lowercase and uppercase letters.
:%s/\l/\=nr2char(char2nr('a') + (char2nr(submatch(0)) - char2nr('a') + 2) % 26)/g
:%s/\u/\=nr2char(char2nr('A') + (char2nr(submatch(0)) - char2nr('A') + 2) % 26)/g
- tr().
, a
, a1
, a ( ).
:let a = 'abcdefghijklmnopqrstuvwxyz'
:let a1 = a[2:] . a[:1]
, a
,
:let a = join(map(range(char2nr('a'), char2nr('z')), 'nr2char(v:val)'), '')
,
,
:%s/.*/\=tr(submatch(0), a . toupper(a), a1 . toupper(a1))
1 ASCII UTF-8, . .
2 , encoding
.