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

如何让 bash 的补全 popup 显示

  •  1
     
  •   SSang · 2021-08-31 09:40:00 +08:00 · 2359 次点击
    这是一个创建于 1213 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有很多时候会遇到中文路径,就必须得切换中文输入法,再 tab (虽然像是 zsh/fish 就可以多次 tab 来选择,不过目前我还没有迁移 zsh 的计划,并且我也没有想要使用鼠标的意愿)

    Snipaste_20210831_092525.png

    我之前看到有别人的终端用的补全有 popup 的功能,类似 vim 的 popup,像是这样(年代久远,我也不能确定他用的是什么命令行)

    Snipaste_20210831_093203.png

    第 1 条附言  ·  2021-08-31 11:03:43 +08:00
    我觉得我已经表达的很清楚了,我目前并不希望迁移到 zsh/fish,所以不要再说 zsh 和 fish 或类似的东西了,zsh 和 bash 的配置并不能完全兼容,更不要说 fish 这种几乎就是两个东西了。
    zhhanging
        1
    zhhanging  
       2021-08-31 09:55:10 +08:00
    看看这个,不过只有 mac 版 https://fig.io
    RRRoger
        2
    RRRoger  
       2021-08-31 09:57:57 +08:00
    @zhhanging 看起来有用 不过配置起来好复杂啊
    kukat
        3
    kukat  
       2021-08-31 10:05:03 +08:00
    bash 不清楚,zsh 可以 https://github.com/Aloxaf/fzf-tab
    SSang
        4
    SSang  
    OP
       2021-08-31 10:07:52 +08:00
    @kukat zsh 我知道可以,只是目前来说迁移成本较高,我想要慢慢过渡,就是想要各临时解决方案
    SSang
        5
    SSang  
    OP
       2021-08-31 10:09:30 +08:00
    @zhhanging 可惜我是 linux 用户,而且是云服务器,这个看起来需要图形界面
    Kimen
        6
    Kimen  
       2021-08-31 10:35:10 +08:00
    Emmm……zsh 有啥迁移成本?
    Cabana
        7
    Cabana  
       2021-08-31 10:37:24 +08:00   ❤️ 1
    @zhhanging #1 试了下,很不好用,而且好像和 tmux 有冲突
    TangMonk
        8
    TangMonk  
       2021-08-31 10:41:03 +08:00
    FIshshell
    xlsepiphone
        9
    xlsepiphone  
       2021-08-31 11:20:25 +08:00
    工作这么多年了,出了写写 shell 脚本,我基本上从来不用 bash

    fish 才是未来
    plko345
        10
    plko345  
       2021-08-31 11:55:25 +08:00 via Android
    我也想知道,这种到 stackoverflow 问可能有人知道
    hicdn
        11
    hicdn  
       2021-08-31 11:56:38 +08:00   ❤️ 1
    用 fzf
    输入两个 * 号,然后按 tab,就可以搜索或者用方向键选择
    Kobayashi
        12
    Kobayashi  
       2021-08-31 22:21:59 +08:00 via Android
    这不是 shell completion menu,而是 vim 编辑时的补全,补全来源 "[File]", "[Dir]" 字段很好的说明了这一点。参考视频 https://www.semicolonandsons.com/episode/vim-autocomplete-overview 1 分 10 秒左右内容。

    shell 补全显示方式做不到。唯一一个例外是 upterm,这个 terminal emulator 自己实现了弹出式补全的效果。

    另外我比较犯贱:
    1. zsh fish 设计时额外考虑了交互式 shell 的功能,bash 连个完善的钩子系统都不存在,有些功能 bash 就是做不到:钩子、字节码编译、懒加载(大多数补全都是懒加载)、右 prompt,更强的行编辑器( ZLE )……
    2. Bash 流行主要取决于 GNU Bash,即 GNU 亲儿子。写脚本绝对是 Bash,适用性更广。交互式 shell 不需要和脚本运行的 shell 同一,装俩就行。
    3. 从名字上看,fish 好像更专注于交互使用。但从生态上看,zsh 好比编辑器界的 vscode,框架、插件管理器、插件数量完爆其他 shell 。zsh 现在连任务队列回调都玩儿出来了,算是异步了。https://github.com/unixorn/awesome-zsh-plugins
    4. bash 迁移有个毛的成本,一般人根本不用考虑这些。如果你的 bash 配置连千行都没有,那可能就是一般人。
    Kobayashi
        13
    Kobayashi  
       2021-08-31 23:30:35 +08:00 via Android
    又想了一下,bash 自己肯定是实现不了,有可能受底层 readline 限制。
    集成 fzf 替代补全倒是个思路。原来本论坛有人推广过 fzf-tab,不过是个 zsh 插件。确实有类似插件支持 bash,https://github.com/lincheney/fzf-tab-completion

    楼上那那个 fzf 启用 cd ** 补全就不要试了,那个只针对补全当前目录下文件。可能还能补全 ssh **,但并不是针对所有命令,只能补全几个命令。
    SSang
        14
    SSang  
    OP
       2021-09-01 12:04:53 +08:00
    @Kobayashi 第二张图是我自己在 vim 截下来的( YCM 插件),只是想体现一下我想要实现的效果,可能我没说清楚,(别人的终端补全我只是有看到过,但是没有图)

    我昨天已经尝试了 fzf,已经 99% 确定当时我看到的就是 fzf 。“补全当前目录下文件” 对我来说就足够了(我一开始的需求也只是想要解决中文路径切换输入法的问题,而且 fzf 能实现的也不止这些)
    SSang
        15
    SSang  
    OP
       2021-09-01 12:05:14 +08:00
    @Kobayashi

    针对你后面的几个问题:

    shell 的选型本身就是个复杂的过程,也许今年 zsh 流行,明年又来个 xsh,后年又来个 ysh,你还需要考虑配置方式,配置难易度,系统间是否统一等等,就算是 zsh/fish 之中选择一个,也不是能够轻易决定的。再者,就算没有迁移成本,也有学习成本。就像是 vim,明明各种性能问题,本身一键就能迁移 nvim,甚至很多 ide 都支持了 vim,还很多特别的功能,但还是很多人在使用 vim 总是有原因的(亲儿子也是一个重要的原因)。

    以及我的 bash 配置真的有千行,而且本身有多个服务器,每个服务器还配置了不同的 bash,我觉得当你听到我说 bash 迁移有成本的时候就应该考虑到我不是一般人了。如果不能像 vim 到 nvim 那么容易迁移,我是不会轻易尝试的。
    SSang
        16
    SSang  
    OP
       2021-09-01 12:08:02 +08:00
    PS:我在问 bash 有什么办法,还明确指出了我已经知道了 fish/zsh 能实现,还有人要在底下复读,还要顺便阴阳怪气说有个毛线的迁移成本,反正我是不能理解有什么意义。
    SSang
        17
    SSang  
    OP
       2021-09-01 12:49:00 +08:00 via Android
    言语过激,请见谅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3857 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.