玩转PMan

pman,即php man pages,是一个工具,允许用户在命令行中查看php文档。它与perl中的perldoc、python中的pydoc以及ruby中的ri类似。

假设你的系统已经安装了pear命令,安装PMan的步骤非常简单:

shell> pear install doc.php.net/pman

安装完成后,使用PMan非常方便,类似于Linux中的man命令:

shell> pman strlen

显示效果与man命令类似,如下图所示:

玩转PManPMan Command

尽管PMan在搜索功能上不如CHM格式的PHP文档那样方便,但可以通过bash-completion来实现类似的功能。

以CentOS为例(其他Linux系统可能有所不同),首先需要安装EPEL,然后执行以下命令:

shell> yum install bash-completion

这将安装许多现成的bash-completion脚本,你可以参考这些脚本来编写PMan的bash-completion脚本:

微软文字转语音 微软文字转语音

微软文本转语音,支持选择多种语音风格,可调节语速。

微软文字转语音 0 查看详情 微软文字转语音

shell> cat /usr/share/bash-completion/pman# pman(1) completionhave pman &&_pman(){    local cur manpath    COMPREPLY=()    cur="${COMP_WORDS[COMP_CWORD]}"    manpath="$(tail -n 1 $(which pman))"    manpath="$(echo ${manpath%/*} | awk '{print $NF}')"    if [ -n "$cur" ]; then        COMPREPLY=($manpath/man*/$cur*)    else        COMPREPLY=($manpath/man*/*)    fi    COMPREPLY=(${COMPREPLY[@]##*/})    COMPREPLY=(${COMPREPLY[@]%.*.*})    COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur"))    return 0} &&complete -F _pman pman

接下来,在指定目录创建一个软连接以激活脚本:

shell> ln -s /usr/share/bash-completion/pman /etc/bash_completion.d/pman

重新登录后,PMan将支持通过TAB键进行自动补全,如下图所示:

玩转PManPMan Bash Completion

PMan还可以与VIM完美结合。在命令模式下输入以下命令,即可查看函数文档:

:!pman strlen

为了更方便地使用PMan,你可以在VIM配置文件中添加keywordprg设置:

shell> cat ~/.vimrcautocmd FileType php setlocal keywordprg=pman

在打开PHP文件后,将光标移动到某个函数上,按大写K键即可查看该函数的文档内容。要返回到VIM界面,只需按q键即可。

以上就是玩转PMan的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/479244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 10:35:46
下一篇 2025年11月8日 10:37:08

相关推荐

  • Golang如何处理指针类型比较

    指针比较基于内存地址:p1 == p2为true因指向同一变量,p1 == p3为false因地址不同,nil指针间相等;不同类型指针不可直接比较,需类型一致或转换;函数中可比较指针是否引用同一对象,值相等不意味指针相等。 在Go语言中,指针类型的比较是直接且直观的。两个指针变量可以使用 == 和 …

    2025年12月16日
    000
  • 如何在Golang中使用reflect实现字段遍历打印

    答案:通过reflect包可动态遍历结构体字段并读取标签,适用于日志、序列化等场景。示例中User结构体的Name和Age字段被打印,City因tag为”-“被跳过,支持递归处理嵌套结构体,需注意指针解引用与字段导出性判断,reflect功能强大但性能较低,建议在非高频场景使…

    2025年12月16日
    000
  • Golang如何实现指针接收者方法

    指针接收者方法通过*Person定义,可修改结构体字段并提升性能。Go自动将person.SetName转为(&person).SetName,无需手动取地址。大结构体或需修改原值时推荐使用指针接收者,以避免复制开销并保持方法一致性。 在Go语言中,指针接收者方法允许你通过指向结构体的指针调…

    2025年12月16日
    000
  • 如何在Golang中实现gRPC拦截器

    答案:Golang中通过grpc.UnaryServerInterceptor和grpc.StreamInterceptor实现服务端与客户端的拦截器,用于统一处理日志、认证等逻辑;支持一元和流式两种类型,可结合go-grpc-middleware库组合多个拦截器,提升代码可维护性。 在Golang…

    2025年12月16日
    000
  • Golang如何使用errors.Is判断错误

    errors.Is用于判断错误是否等于目标错误或被其包装,可穿透多层包装。使用%w包装错误时,errors.Is能递归匹配错误链,适合判断预定义错误值,而errors.As用于类型断言和提取自定义错误类型。 在Go语言中,判断错误是否为某个特定类型的错误是常见需求。从Go 1.13开始,errors…

    2025年12月16日
    000
  • 如何在Golang中实现观察者模式

    答案:Golang通过接口和组合实现观察者模式,定义Observer和Subject接口,用EventCenter管理观察者列表并通知更新,EmailLogger和FileLogger实现具体逻辑,实现松耦合事件通知。 在Golang中实现观察者模式,核心是定义主题(Subject)和观察者(Obs…

    2025年12月16日
    000
  • 如何在Golang中实现模块路径重写

    模块路径重写是指通过replace指令将导入的模块指向本地或远程替代路径,用于调试或测试修改;在go.mod中使用replace原路径=>目标路径格式实现,如replace github.com/abc/logger=>./vendor/logger,仅当前项目生效,不影响下游依赖,生产…

    2025年12月16日
    000
  • 如何在Golang中使用go mod verify确保模块完整性

    go mod verify用于验证本地模块缓存的完整性,通过比对缓存文件与go.sum中记录的校验和,确保依赖未被篡改,适用于CI/CD、部署前检查及怀疑缓存污染时,无需网络请求,可集成到自动化流程中增强安全性。 在Go语言中,go mod verify 是一个用于验证模块缓存完整性和安全性的命令。…

    2025年12月16日
    000
  • Golang反射实现动态配置加载实践

    答案是利用反射机制实现Go语言通用配置加载工具,通过结构体标签映射配置项,递归遍历字段并使用反射设置值,支持嵌套结构与多种数据类型,提升代码灵活性和可维护性。 在Go语言开发中,配置管理是每个项目都绕不开的部分。随着项目复杂度上升,配置项越来越多,手动解析和赋值容易出错且难以维护。利用Golang的…

    2025年12月16日
    000
  • 如何在Golang中优化JSON序列化性能

    使用结构体标签、复用Encoder、避免interface{}、选用高性能库及减少内存分配可提升Go中JSON序列化性能。 在Golang中处理JSON序列化时,性能优化往往能显著提升服务吞吐量,尤其是在高并发或大数据量场景下。Go标准库encoding/json虽然稳定易用,但在某些情况下存在性能…

    2025年12月16日
    000
  • Golang表单多字段验证与数据绑定项目

    首先准备Gin和validator库,定义含binding标签的结构体,如RegisterForm;接着在Gin路由中使用ShouldBind自动绑定并验证表单数据;最后可扩展自定义验证规则,如unique_username,实现安全高效的多字段校验与数据绑定。 在Go语言开发中,处理HTTP请求的…

    2025年12月16日
    000
  • 如何在Golang中处理表单提交与验证

    答案:Golang通过net/http解析表单并结合结构体与validator库实现验证。首先调用r.ParseForm()获取数据,使用FormValue提取字段;接着通过自定义逻辑或第三方库如go-playground/validator进行非空、格式、长度等校验;推荐将表单映射到带标签的结构体…

    2025年12月16日
    000
  • Golang如何使用指针访问结构体字段

    Go语言中可通过指针直接使用.操作符访问结构体字段,编译器自动解引用,无需显式书写(*ptr).Field;传指针给函数可修改原数据,传值则不影响原始结构体。 在Go语言中,使用指针访问结构体字段非常常见,尤其在函数传参或操作大型结构体时。Go会自动处理指针到结构体字段的访问,无需手动解引用。 直接…

    2025年12月16日
    000
  • 如何在Golang中处理容器存储挂载

    答案:Golang中处理容器存储挂载通常通过syscall调用或Docker API实现。1. 使用syscall.Mount可执行bind mount等操作,需root权限并确保路径存在;2. 更推荐使用docker/go-docker库通过Docker API创建容器时配置挂载,避免直接系统调用…

    2025年12月16日
    000
  • 如何在Golang中安装和使用Delve调试器

    Delve是Go语言专用调试工具,支持命令行、测试和远程调试模式;通过go install安装后可用dlv debug启动调试,设置断点、查看变量、单步执行;dlv test用于调试测试用例,dlv exec配合connect实现远程调试,需注意环境一致性与网络配置。 在Go语言开发中,调试是排查问…

    2025年12月16日
    000
  • Golang如何安装和配置常用CLI工具

    安装Go后配置GOPATH和PATH,使用go install命令安装CLI工具如golangci-lint、dlv等,并通过别名、脚本或Makefile提升操作效率,建议指定工具版本以确保稳定性。 Go语言生态提供了丰富的命令行工具,能显著提升开发效率。安装和配置这些常用CLI工具并不复杂,只要掌…

    2025年12月16日
    000
  • Golang如何构建简易的投票系统

    答案:使用Golang标准库构建简易投票系统,通过map存储投票数据,sync.Mutex保证并发安全,net/http实现创建、查询和投票接口。定义Vote结构体包含ID、标题和选项票数,创建投票返回唯一ID,支持通过/vote/{id}获取状态和/vote/{id}/{option}提交投票,确…

    2025年12月16日
    000
  • Golang如何在MacOS中安装配置

    使用Homebrew安装Go最简便,运行命令安装后通过go version验证;也可从官网下载pkg包安装。通常无需手动配置环境变量,若需自定义GOPATH或路径,可编辑~/.zshrc等文件添加GOPATH和PATH。保存后执行source使配置生效。创建hello.go测试文件并运行go run…

    2025年12月16日
    000
  • Golang值类型深拷贝与浅拷贝实现方法

    值类型赋值默认深拷贝,但含引用字段时需手动实现深拷贝。如User结构体中Tags为slice,直接赋值共享底层数组,修改u2.Tags会影响u1.Tags。可通过逐字段复制、gob序列化或第三方库实现深拷贝。手动方式性能最优,gob通用但慢且不支持不可导出字段和某些类型,复杂场景可用代码生成工具。 …

    2025年12月16日
    000
  • Golang如何使用组合模式管理层次结构

    组合模式通过统一接口实现树形结构管理,Go语言利用接口与结构体嵌套,使叶子和容器节点行为一致,如文件系统示例中,Component接口定义Display方法,File和Folder分别实现,Folder递归调用子节点Display,客户端无需区分节点类型,透明调用操作,符合开闭原则,便于扩展新组件类…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信