¿Cómo puedo enviar el contenido de texto actualmente seleccionado (en modo visual) a un comando bash?
Lo sé, los comandos bash se pueden llamar con :! , pero por lo demás no encuentro documentación.
Primero, puede obtener texto seleccionado visualmente por una función. Traje esto de https://stackoverflow.com/a/6271254/3108885 :
function! s:GetVisualSelection() let [lnum1, col1] = getpos("'<")[1:2] let [lnum2, col2] = getpos("'>")[1:2] let lines = getline(lnum1, lnum2) let lines[-1] = lines[-1][:col2 - (&selection == 'inclusive' ? 1 : 2)] let lines[0] = lines[0][col1 - 1:] return join(lines, "\n") endfunctionLuego agregue un mapa para el modo Visual:
vnoremap <buffer> <F5> :<CU>exec '!python -c' shellescape(<SID>GetVisualSelection(), 1)<CR> Si presiona F5 , se ejecutará el código Python seleccionado visualmente. Puede definir este mapa solo para el código de Python, autocmd FileType python antes vnoremap . Por lo tanto, se pueden manejar múltiples tipos de archivos.
autocmd FileType python vnoremap <buffer> <F5> :<CU>exec '!python -c' shellescape(<SID>GetVisualSelection(), 1)<CR> autocmd FileType ruby vnoremap <buffer> <F5> :<CU>exec '!ruby -e' shellescape(<SID>GetVisualSelection(), 1)<CR>