Oto skrypt, który wykorzystuje Pythona i moduł base64
dostarczenie base64 dekodować i Enc polecenia Ode. Byłoby całkiem łatwo obsłużyć jakikolwiek inny program base64, o ile odczytuje on ze standardowego wejścia - wystarczy zastąpić python -m base64 -e
komendą kodowania i python -m base64 -d
za pomocą polecenia dekodującego.
function! Base64Encode() range
" go to first line, last line, delete into @b, insert text
" note the substitute() call to join the b64 into one line
" this lets `:Base64Encode | Base64Decode` work without modifying the text
" at all, regardless of line length -- although that particular command is
" useless, lossless editing is a plus
exe "normal! " . a:firstline . "GV" . a:lastline . "G"
\ . "\"bdO0\<C-d>\<C-r>\<C-o>"
\ . "=substitute(system('python -m base64 -e', @b), "
\ . "'\\n', '', 'g')\<CR>\<ESC>"
endfunction
function! Base64Decode() range
let l:join = "\"bc"
if a:firstline != a:lastline
" gJ exits vis mode so we need a cc to change two lines
let l:join = "gJ" . l:join . "c"
endif
exe "normal! " . a:firstline . "GV" . a:lastline . "G" . l:join
\ . "0\<C-d>\<C-r>\<C-o>"
\ . "=system('python -m base64 -d', @b)\<CR>\<BS>\<ESC>"
endfunction
command! -nargs=0 -range -bar Base64Encode <line1>,<line2>call Base64Encode()
command! -nargs=0 -range -bar Base64Decode <line1>,<line2>call Base64Decode()
Niektóre funkcje Zapewnia:
Obsługuje zakresy, konwertuje tylko bieżącą linię (domyślnie wykorzystać :%Base64Encode
kodować cały plik, na przykład, i będzie działać zgodnie z oczekiwaniami od wewnątrz tryb wizualny, chociaż konwertuje tylko całe linie)
Nie pozostawia wcięcia wyjścia - wszystkie wcięcia (tabulacje/spacje) są kodowane do base64, a następnie zachowywane podczas dekodowania.
Wspiera ich w połączeniu z innymi poleceniami z |
Odpowiednich :help
tagi: user-functions
, func-range
, i_0_CTRL-D
, i_CTRL-R_CTRL-O
, expr-register
, system()
, user-commands
, command-nargs
, command-range
, :normal
Chcesz zastąpić wybrany tekst? –
Wymiana byłaby OK, zwykłe wyjście do konsoli byłoby również OK. – Jonatan