You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Mac终端利用命令补全高效打开PDF文件?

解决Mac上bash-completion下快速打开PDF的问题

我完全懂你的痛点!在Linux上用evince配合命令补全,能飞快定位PDF文件,尤其是pdflatex编译后一堆同名不同后缀的文件时,体验特别爽。但Mac上的open命令补全确实不给力,得循环切半天才能找到PDF。不过咱们可以通过几个基于bash-completion的方案来搞定:

方案1:自定义专属PDF打开命令+补全

这个方法最直接,给PDF单独整个命令,补全只认PDF:

  1. 先创建bash-completion规则文件:
    sudo touch /opt/local/etc/bash_completion.d/open-pdf-completion
    
  2. 编辑这个文件,写入以下内容:
    _open_pdf() {
        local cur=${COMP_WORDS[COMP_CWORD]}
        # 只匹配后缀为.pdf的文件
        COMPREPLY=( $(compgen -f -X '!*.pdf' -- "$cur") )
    }
    # 给openpdf命令绑定补全逻辑
    complete -F _open_pdf openpdf
    
  3. 把这个规则加载到你的bash配置里,编辑~/.bash_profile或者~/.bashrc,添加一行:
    source /opt/local/etc/bash_completion.d/open-pdf-completion
    
  4. 重启终端或者执行source ~/.bash_profile生效,之后输入openpdf sam按Tab,就只会补全以sam开头的PDF文件了!

方案2:给现有阅读器命令加PDF补全

如果你习惯用特定的PDF阅读器(比如Preview或者Skim),可以给它的启动命令加补全:

  1. 先在bash配置里加个别名(比如用Preview):
    alias pdfopen='open -a Preview'
    
  2. 同样创建补全规则文件(或者直接加到刚才的open-pdf-completion里):
    _pdfopen() {
        local cur=${COMP_WORDS[COMP_CWORD]}
        COMPREPLY=( $(compgen -f -X '!*.pdf' -- "$cur") )
    }
    complete -F _pdfopen pdfopen
    
  3. 加载配置后,用pdfopen命令就能享受PDF专属补全了。

方案3:修改open命令的默认补全(谨慎操作)

如果你不想用新命令,想直接改open的补全逻辑:

  1. 找到MacPorts安装的open补全文件,一般路径是/opt/local/etc/bash_completion.d/open
  2. 编辑这个文件,找到生成补全列表的部分,添加-X '!*.pdf'的过滤条件,这样open命令就只会补全PDF文件了。不过这个方法会影响open对其他文件类型的补全,所以只推荐你平时几乎只用open打开PDF的情况。

这些方法都是基于bash-completion的原生机制,完全符合你想要的快捷补全需求~

内容的提问来源于stack exchange,提问作者user254985

火山引擎 最新活动