Linux 有 zsh 历史代码提示,那 window 有没有什么代表提示类工具? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
MEIyiyi
V2EX    程序员

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

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

    前公司用的 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 这两个插件,主题使用的是 powelevel10k ,感觉上性能并不差。
    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 等少数命令支持,不知道现在如何了。
    momo1999
        11
    momo1999  
       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     Solana     5607 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:11 PVG 11:11 LAX 19:11 JFK 22:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86