在Neovim中用多行命令来命令:非法字符^ M

时间:2018-11-04 05:32:48

标签: linux vim pipe neovim bc

我在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替换为\;,如果可能的话。

0 个答案:

没有答案