如何禁用man/nroff对引号和连字符的自动转换行为
如何禁用man/nroff对引号和连字符的自动转换行为
我太懂你这种抓狂的感觉了——本来想在man页里搜个参数,结果普通的单引号、连字符被偷偷转换成了特殊UTF-8字符,导致搜索完全失效,键盘上又没有那些冷门特殊字符的按键,简直闹心!下面给你几个实用的解决办法:
临时禁用转换(单次生效)
直接在运行man命令时加上对应的环境变量,就能临时关闭智能引号和连字符的自动转换:
GROFF_NO_SMARTQUOTES=1 GROFF_DONT_HYPHENATE=1 man rg
这样打开的man页里,引号会保持原始的'(U+0027),连字符也会是普通的-(U+002D),搜索的时候直接输入键盘上的字符就能匹配到了。
永久禁用转换(全局生效)
如果不想每次都手动加环境变量,可以把这两个配置加到你的shell配置文件里(比如~/.bashrc、~/.zshrc或者~/.profile):
# 禁用man/nroff的智能引号转换 export GROFF_NO_SMARTQUOTES=1 # 禁用man/nroff的连字符自动转换 export GROFF_DONT_HYPHENATE=1
保存文件后,执行source ~/.bashrc(对应你的shell配置文件)让配置立即生效,之后再打开任何man页,都会保持原始的ASCII字符,不用再担心搜索失效的问题。
额外小技巧:直接查看原始man页内容
如果你只是想快速确认man页源文件里的原始字符,可以直接解压查看man页的源文件(大部分man页是gzip压缩的):
zcat /usr/share/man/man1/rg.1.gz | grep 'after-context'
这样就能看到未被转换的原始内容了。
备注:内容来源于stack exchange,提问作者Anemoia
相关产品推荐
相关产品推荐

