V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MEIyiyi
V2EX  ›  程序员

Linux 有 zsh 历史代码提示,那 window 有没有什么代表提示类工具?

  •  
  •   MEIyiyi · 2022-06-13 11:26:47 +08:00 · 4163 次点击
    这是一个创建于 931 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前公司用的 Mac 电脑,装了 zsh 后发现非常好用,但 window 没有 zsh ,只能装 wsl 再配置 zsh ,但每次都要装 wsl 也太麻烦了,请问 window 有没有这种代码提示工具?

    24 条回复    2022-06-13 20:29:56 +08:00
    zzz22333
        1
    zzz22333  
       2022-06-13 11:29:58 +08:00 via Android
    oh my powershell 还不错
    xwcs
        2
    xwcs  
       2022-06-13 11:43:25 +08:00
    psreadline 自带了
    Set-PSReadLineOption -PredictionSource HistoryAndPlugin
    https://docs.microsoft.com/en-us/powershell/module/psreadline/set-psreadlineoption?view=powershell-7.2
    wdssmq
        3
    wdssmq  
       2022-06-13 11:48:53 +08:00   ❤️ 1
    Starship:可用于各种 Shell 的提示符
    https://starship.rs/zh-CN/

    这个?
    Buges
        4
    Buges  
       2022-06-13 12:02:08 +08:00 via Android
    以前用 Windows 的时候用 msys2 里的 fish ( zsh 配合插件性能太差了),PowerShell 的补全跟提示倒不是没有,但效果太差。
    MEIyiyi
        5
    MEIyiyi  
    OP
       2022-06-13 12:03:15 +08:00
    呼,谢谢各位,我看看哪个合适
    ysc3839
        6
    ysc3839  
       2022-06-13 12:39:18 +08:00 via Android
    Windows 有 zsh ,可以用 Cygwin 或 MSYS2 。

    @Buges 个人使用 Oh My Zsh 以及 zsh-autosuggestions 和 zsh-syntax-highlighting 这两个插件,主题使用的是 powerlevel10k ,感觉上性能并不差。
    Huelse
        7
    Huelse  
       2022-06-13 12:50:41 +08:00
    a33291
        8
    a33291  
       2022-06-13 13:25:31 +08:00
    nushell
    sky96111
        9
    sky96111  
       2022-06-13 13:50:00 +08:00
    @Buges PowerShell 补全最大的问题就是只有带枚举参数的 PS 函数才能补全,其他的只能补全路径。要是和 fish 、zsh 那样支持添加补全规则会好得多
    Buges
        10
    Buges  
       2022-06-13 14:19:49 +08:00 via Android
    @ysc3839 插件会有很多进程创建,win 下模拟层运行环境中性能极为差劲。我之前用的时候启动要几秒,tab 补全列表展开也要几秒。
    @sky96111 不是只能,pwsh 也能为命令写补全插件,但大部分都是没有的,我之前用的时候只有 scoop/git 等少数命令支持,不知道现在如何了。
    shuax
        11
    shuax  
       2022-06-13 14:20:55 +08:00   ❤️ 1
    sulinwork
        12
    sulinwork  
       2022-06-13 16:29:14 +08:00
    wsl2 + zsh 很香
    Kasumi20
        13
    Kasumi20  
       2022-06-13 16:36:47 +08:00
    #11 没错,就是这个,clink ,贼好用,直接把 cmd 给干碎了

    Microsoft Windows [版本 10.0.19041.1415]
    (c) Microsoft Corporation 。保留所有权利。

    Clink v1.3.7.4269ce
    Copyright (c) 2012-2018 Martin Ridgers
    Portions Copyright (c) 2020-2022 Christopher Antos
    https://github.com/chrisant996/clink

    C:\Users\xx>
    bigtear
        14
    bigtear  
       2022-06-13 18:50:42 +08:00
    clink
    sky96111
        15
    sky96111  
       2022-06-13 18:54:33 +08:00 via Android
    @Buges scoop 和 git 都只有文件路径补全,开启 PS Readline 也一样。我稍微研究过一下 pwsh 函数参数的补全,想要参数补全必须
    1. 命令是一个 PS 函数
    2. 参数是枚举体
    scoop 虽然是用 PS 语法写的,但是一个 ps1 脚本不是函数,故没法补全。git 是单独的 exe ,就更不能了。
    所以为第三方命令写补全插件,得把它包装成函数放到$profiles 里,太麻烦了
    https://github.com/sky96111/pwsh_dotfile/blob/main/Microsoft.PowerShell_profile.ps1
    ysc3839
        16
    ysc3839  
       2022-06-13 19:22:15 +08:00
    @Buges 启动新进程确实是慢,但是好的插件并不会启动大量进程。我目前使用的这几个插件也就启动时会慢一点,但是 powerlevel10k 有 Instant prompt 功能,在等待其他插件启动时就能先显示出提示符。powerlevel10k 显示 git 信息是在后台一直运行一个 gitstatusd 进程,并不会很慢。
    EastLord
        18
    EastLord  
       2022-06-13 19:50:54 +08:00
    Buges
        19
    Buges  
       2022-06-13 19:54:26 +08:00 via Android
    @sky96111 需要安装第三方的补全模块,并在你的 PowerShell profile 里加载。这点和 zsh/fish 是一样的。
    https://github.com/Moeologist/scoop-completion
    @ysc3839 这不是写的好能避免的,shell 编程中很多操作都需要组合各种外部工具( unix 哲学),这就意味着不断的创建新进程。
    不过现在已经很久没有用 Windows 了,换成 GNU/linux 后命令行方面真的是省心太多。
    heart4lor
        20
    heart4lor  
       2022-06-13 19:57:28 +08:00
    MSYS2 装 fish shell ,当然也可以 zsh
    ysc3839
        21
    ysc3839  
       2022-06-13 20:03:01 +08:00 via Android
    @Buges 把开销大的程序作为后台服务运行,这就是一种避免的方案。更高级的 shell 也会把一些频繁使用到的功能内置进来,比如 bash 就内置了正则表达式。而且上述几个插件,我个人使用感受并不如你所说的连补全都要几秒。
    个人建议还是自己体验看看能否接受,不要仅仅是一顿理论分析就否定。
    相比选择 PowerShell 等其他方案,选择 Unix shell 往往有更好的生态,跨平台的统一体验。不需要记忆 PowerShell 繁琐的命令,也不像 cmd 那样缺失各种功能。
    aaniao002
        22
    aaniao002  
       2022-06-13 20:16:37 +08:00 via Android
    wsl 呀,你想啥呢。windows 命令行那也叫命令行?
    Buges
        23
    Buges  
       2022-06-13 20:18:00 +08:00 via Android
    @ysc3839 关键在于*nix 下正常情况创建进程开销不大,只有 cygwin 模拟层下才有明显性能问题,所以很难指望这些脚本针对性优化,不如换 fish 拉倒。
    可能我之前 scoop 装的命令比较多,scoop 对每个程序都创建好几个启动 shim (.exe .bat .ps1 sh 脚本),tab 补全应用列表要好几秒才出来。
    ysc3839
        24
    ysc3839  
       2022-06-13 20:29:56 +08:00 via Android
    @Buges 但是实际上是有的插件确实会针对性优化,所以我说好的插件是能避免。如果你刚需的插件都写得不好,那确实是没什么办法了,但至少我自己用到的插件没这么多问题。
    而且不仅 Windows ,macOS 下使用 fork 也会比使用 posix_spawn 慢。
    坏的插件在 Unix 下也会拖慢速度 https://blog.skk.moe/post/make-oh-my-zsh-fly/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:01 · PVG 06:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.