function! SendVisualToHttp() range let url = 'https://typograf.ru/webservice/?chr=UTF-8' " Получаем выделенный текст let [line_start, column_start] = getpos("'<")[1:2] let [line_end, column_end] = getpos("'>")[1:2] let lines = getline(line_start, line_end) " Корректируем для выделения в пределах строки if line_start == line_end let text = lines[0][column_start-1 : column_end-1] else if column_start > 1 let lines[0] = lines[0][column_start-1 :] endif if column_end < strlen(lines[-1]) let lines[-1] = lines[-1][ : column_end-1] endif let text = join(lines, "\n") endif " URL-кодируем текст let encoded_text = substitute(system('python3 -c "import urllib.parse; print(urllib.parse.quote(input()))"', text), '\n', '', 'g') " Формируем полный URL let full_url = url . (stridx(url, '?') == -1 ? '?' : '&') . 'text=' . encoded_text " Отправляем запрос и получаем ответ let response = system('curl -s -X POST ' . shellescape(full_url)) " Заменяем выделенный текст на ответ if line_start == line_end let new_line = lines[0][: column_start-2] . response . lines[0][column_end :] call setline(line_start, new_line) else " Удаляем старые строки execute line_start . ',' . line_end . 'd' " Вставляем ответ (разбиваем по строкам если нужно) let response_lines = split(response, '\n') call append(line_start-1, response_lines) endif echo "Текст заменён ответом от сервера" endfunction command! -range -nargs=0 HttpSend ,call SendVisualToHttp()