使用 vim 作为寻呼机时,`man ascii` 未对齐

phu*_*ehe 3 vim man pager

使用 Vim 作为我的男人的寻呼机

export MANPAGER="/usr/share/vim/vim73/macros/manpager.sh"
Run Code Online (Sandbox Code Playgroud)

在我的个人资料中。现在手册页在颜色和内容上看起来非常好。但是,在尝试man ascii查看 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' -
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

phu*_*ehe 5

当我尝试使用以下脚本时,一切正常:

#!/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' -
Run Code Online (Sandbox Code Playgroud)

我不确定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' -
Run Code Online (Sandbox Code Playgroud)