elvish 0.18 简易评测

这块我可以写一下。Elvish真心提升了shell脚本编程的体验。对于我来说:

  • 跨平台 (主要是Linux / macOS / Windows + Rust实现的coreutils)
  • 在Github Action中使用
  • 在 Ansible 脚本中使用

这三个是主要的场景。然后平常写一些adhoc的代码,也非常爽。特别是有了 each / filter

如果能有比较好用的 pattern matching,那就更赞了

@sadhen Elvish 和 Go 的互操作性很好,是可以用作 Go 程序的 embedded scripting language 的。像 math:str: 里的大部分函数都是直接用 reflection 调用对应的 Go 的函数,没有任何 wrapper 的。

语法问题我不会刻意追求和别的语言的类似,毕竟不同用户背景不同,都要兼顾的话就变成四不像了。而且一个语言发展到一定程度就有自己的生命了,很多时候与其说是在设计更像是在求解。

Re #102:pattern matching 是我一直想做的,不过需要解决的设计问题很多。感觉不是不可或缺的功能,所以目前优先级不是很高吧。

多谢提醒。我回头试试看。PATH 确实比较乱

请教下 elvish 怎么在 Windows 系统上把这样的路径加入Path:

C:\Program Files (x86)\GnuPG\bin

我用下面的方法会报错,无法识别路径中的括号。

use platform

if (eq $platform:os windows) {
  set paths = [
    C:\Windows\System32
    C:\Windows\System32\WindowsPowerShell\v1.0
    C:\Program Files (x86)\GnuPG\bin
  ] 
}

可以在Shell里面试一下双引号,单引号以及转义符\。然后我推荐用Scoop安装GnuPG,这样能规避这个问题。另外,C:\Program Files这类目录在Windows上面应该是可以直接用环境变量的。

Windows 这类路径确实烦人。

确实是可以用 $E:programfiles 表示路径 C:\Program Files,但是 C:\Program Files (x86) 没法用 $E:programfiles(x86) 表示。

Windows CMD 下执行下面的命令:

echo %programfiles(x86)%

结果是: C:\Program Files (x86)

在Windows 下还是不可避免要用到这类路径的。

我想请教下,在Windows中,Navigation mode中的文件色彩是如何设置?

比如,这些目录的绿色背景高亮如何去掉? 我在rc.elv中设置了环境变量set-env LS_COLORS (vivid generate dracula),按道理应该不会有这些高亮吧?

Nav mode 确实是根据 LS_COLORS 高亮的。这个绿背景应该是因为 Windows 下目录都是默认 world writable 的,你试试把 LS_COLORS 里面 ow 这一项去掉应该就没了(或者设成和 di 这一项一样)

将ow设置为di就好了

  1. 现在已经 0.20 了,不知道什么时候能够 1.0。
  2. 如果未来某个要做的 UI 功能依赖于某个尚未实现的语言特性,该怎么办?