Aquí hay un script que usa Python y el módulo base64
para proporcionar decodificación base 64 y enc comandos de oda. Sería bastante sencillo admitir cualquier otro programa base64, siempre que se lea desde stdin: simplemente reemplace python -m base64 -e
con el comando de codificación y python -m base64 -d
con el comando de decodificación.
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()
Algunas de las características que esto proporciona:
Soporta rangos, se convierte sólo la línea en curso por defecto (:%Base64Encode
utilizar para codificar todo el archivo, por ejemplo, y que funcionará como se esperaba desde dentro modo visual, aunque solo convierte líneas enteras)
No deja sangría a la salida: todas las sangrías (pestañas/espacios) están codificadas en base64 y se conservan al decodificar.
Soporta combinarse con otros comandos con |
relevantes :help
tags: user-functions
, func-range
, i_0_CTRL-D
, i_CTRL-R_CTRL-O
, expr-register
, system()
, user-commands
, command-nargs
, command-range
, :normal
¿Quieres reemplazar el texto seleccionado? –
Reemplazar estaría bien, la salida simple a la consola estaría bien también. – Jonatan