V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FYFX
V2EX  ›  PowerShell

是我孤陋寡闻了吗? powershell 里面其实支持顺斜杠, tab 补全也能改成顺斜杠

  •  
  •   FYFX · 261 天前 · 1563 次点击
    这是一个创建于 261 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近从 linux 换会 windows,感觉 powershell 里面反斜杠有点不爽,后面查了一下 pwsh 是支持顺斜杠的,不过 tab 补全是反斜杠,然后在 github 上面也找到了将 tab 补全改成斜杠的设置

    Set-PSReadLineKeyHandler -Chord Tab -ViMode Command -ScriptBlock {
      $content = ""
      $index = 0
    
      [Microsoft.PowerShell.PSConsoleReadLine]::ViTabCompleteNext()
      [Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref] $content, [ref] $index)
      [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
      [Microsoft.PowerShell.PSConsoleReadLine]::Insert($content.Replace('\','/'))
      [Microsoft.PowerShell.PSConsoleReadLine]::SetCursorPosition($index)
    }
    

    链接是这个: https://github.com/PowerShell/PSReadLine/issues/3205

    cd 还有执行程序和.ps1 脚本都没啥问题,不过我也才用,可能会影响一些用到 cmd 工具的命令?

    6 条回复    2024-03-06 18:55:18 +08:00
    anUglyDog
        1
    anUglyDog  
       261 天前
    因为一个历史特性恶心了用户 n 多年,对吧。类似的还有个\r\n
    geelaw
        2
    geelaw  
       261 天前 via iPhone
    会影响到传统 exe ,但补全导致的通常不会。

    考虑 a.exe /b 这里 a.exe 会优先解读 /b 为一个开关、选项。如果写 a.exe \b 则 \b 通常是指当前磁盘根目录下叫做 b 的文件。补全一般会得到带盘符的绝对路径,比如 a.exe C:/b 和 a.exe C:\b ,这两者都只能被解读为路径,所以没问题。

    另外我不太懂楼主设置的代码是否只在补全路径的时候才调用——有的时候按 Tab 补全的是参数的范围,此时贸然把 \ 替换为 / 是错误的。此外,还有 UNC path ,我不记得 UNC path 把 \ 改成 / 是否有效。
    geelaw
        3
    geelaw  
       261 天前 via iPhone
    喔另外 Win32 的文件 API 是支持 \ 和 / 作为通常的路径分隔符的,实际上自从 MS-DOS 2.0 和 Windows 1.0 开始就一直支持两种方向。

    https://retrocomputing.stackexchange.com/a/28348
    NoOneNoBody
        4
    NoOneNoBody  
       261 天前
    温馨提示,只用一个方向没问题,老早就支持了,但是混用就不可预料了
    例如拼接的路径,是有可能会出现混用的
    FYFX
        5
    FYFX  
    OP
       261 天前
    @geelaw
    我理解如果用/区分的命令行参数可能会出问题,不过好像我自己用的很少,基本都是 powershell 这种用 - 的参数,这个补全没问题。UNC path 的话没用过补全, 都是手敲的
    vvhy
        6
    vvhy  
       261 天前
    scp 等非交互式 shell 的时候会有问题,得加个判断
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2896 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 07:58 · PVG 15:58 · LAX 23:58 · JFK 02:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.