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

标签 bash vim cygwin bc

有谁知道为什么这可以与 vim 中的 bash 计算器 (bc) 配合使用:

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 下使用。

最佳答案

&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 上不应该发生(或者它是一个错误)。

关于bash - 在 vim 脚本中使用 bash 计算器 - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306707/

相关文章:

linux - 为什么我的 cd 不能在 bash 中工作?

ruby - 如何编写启动 tmux session 的 shell 脚本,然后运行 ​​ruby​​ 脚本

linux - 通过 Vim 保存平面文件向创建新行的文件添加一个不可见的字节

shell - 从 Cygwin 打开文件

linux - 使用 awk 在 Linux 中分割日期

bash - 查询 | sed -i 相当于 Windows

shell - 使用当前打开的文件作为参数从 Vim 运行 shell 脚本

macos - 这是适用于 OS X Snow Leopard 的 Vim 版本吗?

bash - 用于删除所有 ClearCase View 私有(private)文件的命令行

bash - cp : cannot stat `/vol/examples/tutorial/science.txt' : No such file or directory