使用 Vim 作为 man 的寻呼机我有
export MANPAGER="/usr/share/vim/vim73/macros/manpager.sh"
在我的个人资料中。现在,手册页的颜色和内容看起来非常好。然而,当尝试man ascii
查看 ASCII 表时,我注意到该表未对齐,如下面的屏幕截图所示:
默认寻呼机不会出现此问题。当我设置export MANPAGER="view -"
表时也是正确的,所以脚本一定有问题manpager.sh
:
#!/bin/sh
sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | \
vim \
-c 'let no_plugin_maps = 1' \
-c 'set nolist nomod ft=man' \
-c 'let g:showmarks_enable=0' \
-c 'runtime! macros/less.vim' -
我怎样才能解决这个问题?
答案1
当我尝试使用以下脚本时,一切正常:
#!/bin/sh
sed -e 's/\x1B\[[[:digit:]]\+m//g' | \
vim \
-c 'let no_plugin_maps = 1' \
-c 'set nolist nomod ft=man' \
-c 'let g:showmarks_enable=0' \
-c 'runtime! macros/less.vim' -
我不确定col
在序列中扮演什么角色,但它肯定弄乱了空间。在有人给出更好的解决方案之前,这将是我的解决方案。
编辑:col
问题也是如此,因为它“在可能的情况下用制表符替换空白字符”。要解决此问题,col
请在选项中使用空格而不是制表符-x
。最终配置如下(归功于 Gilles)。
#!/bin/sh
sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -bx | \
vim \
-c 'let no_plugin_maps = 1' \
-c 'set nolist nomod ft=man' \
-c 'let g:showmarks_enable=0' \
-c 'runtime! macros/less.vim' -