Hier gehen Sie:
function! ReplaceWithRandom(search)
" List containing the characters to use in the random string:
let characters = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',]
" Generate the random string
let replaceString = ""
for i in range(1, len(a:search))
let index = GetRandomInteger() % len(characters)
let replaceString = replaceString . characters[index]
endfor
" Do the substitution
execute ":%s/" . a:search . "/" . replaceString . "/g"
endfunction
function! GetRandomInteger()
if has('win32')
return system("echo %RANDOM%")
else
return system("echo $RANDOM")
endif
endfunction
Die Funktion kann wie folgt aufgerufen werden: :call ReplaceWithRandom("stringtoreplace")
. Und es ersetzt alle Vorkommen der Zeichenfolge, die als Argument übergeben wird, durch eine zufällige Zeichenfolge, die aus den in characters
aufgelisteten Zeichen besteht.
Beachten Sie, dass ich eine Hilfsfunktion hinzugefügt habe, die Zufallszahlen aus dem System erhält, da Vim keinen Zufallsgenerator bereitstellt.
Als Bonus Sie es ein Befehl machen kann, den Anruf zu befestigen:
command! -nargs=1 RWR call ReplaceWithRandom(<f-args>)
Anschließend können Sie tun: :RWR "stringtoreplace"
bearbeiten: Und wenn Sie möchten, die zufällige Zeichenfolge Bei jedem Vorkommen der gesuchten Zeichenkette kann die Funktion durch diese ersetzt werden:
function! ReplaceWithRandom(search)
" List containing the characters to use in the random string:
let characters = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',]
" Save the position and go to the top of the file
let cursor_save = getpos('.')
normal gg
" Replace each occurence with a different string
while search(a:search, "Wc") != 0
" Generate the random string
let replaceString = ""
for i in range(1, len(a:search))
let index = GetRandomInteger() % len(characters)
let replaceString = replaceString . characters[index]
endfor
" Replace
execute ":s/" . a:search . "/" . replaceString
endwhile
"Go back to the initial position
call setpos('.', cursor_save)
endfunction