Передача нескольких строк в команду в neovim: недопустимый символ ^ M - PullRequest
0 голосов
/ 04 ноября 2018

Я создал функцию в моем init.vim, чтобы взять визуально выделенный текст и передать его в bc для выполнения вычислений.

Пока все работает нормально, за исключением случаев, когда я пытаюсь выбрать несколько строк, с ошибкой:

(standard_in) 1: недопустимый символ: ^ M

(standard_in) 1: синтаксическая ошибка

Моя цель - выбрать несколько строк, например

a=1
a+2
.+3

в vim, нажмите Ctrl+b и моя функция вернет

3
6

Я уже пробовал dos2unix в файле, в котором я работаю, поэтому с файлом нет проблем.

Вот моя функция в моем init.vim:

function BC() range
    let ans = system('echo scale=6\;'.shellescape(join(getline(a:firstline, a:lastline), "\r")).'| bc')
    put =ans
endfunction

com -range=% -nargs=0 BC :<line1>,<line2>call BC()

vnoremap <C-b> :BC<CR>
nnoremap <C-b> <S-V>:BC<CR>

У меня вопрос как мне заставить мою функцию работать при выделении нескольких строк? Я бы согласился с анализом выделенного текста и заменой ^M на \;, если это возможно.

...