在vim脚本中使用bash计算器 - 奇怪的行为

时间:2012-11-09 10:52:55

标签: bash vim cygwin bc

有人知道为什么这适用于bc中的bash计算器(vim):

echo system ("echo 3+5 \| dos2unix \| bc -l") ---> output: 8   
echo system ("echo 3/5 \| dos2unix \| bc -l") ---> output: .600000000000000  
echo system ("echo 3*5 \| dos2unix \| bc -l") ---> output: 15   

但这不是:

echo system ("echo 2^5 \| dos2unix \| bc -l") ---> output: 25  
echo system ("echo 3^5 \| dos2unix \| bc -l") ---> output: 35  

这在Windows中的cygwin下使用。

1 个答案:

答案 0 :(得分:2)

&shell选项的价值是多少?它必须是/path/to/cygwin/bash,而不是以cmd.exe结尾的内容。问题是^是Windows cmd.exe中的转义字符,因此echo 2^5有点等同于echo 2\5转换为echo 25

如果cmd.exe添加一行

set shell=/path/to/cygwin/bash

到你的vimrc。

请注意echo 2^^^^5解析为echo 2^5有点奇怪(简单cmd.exe中它是echo 2^^5),但我看到很长时间讨论vim-dev有关转义很久以前cmd.exe的问题,所以它可能就是其中之一。不应该发生在最近的vim上(或者它是一个bug)。