使用 Vim 作为我的男人的寻呼机
export MANPAGER="/usr/share/vim/vim73/macros/manpager.sh"
Run Code Online (Sandbox Code Playgroud)
在我的个人资料中。现在手册页在颜色和内容上看起来非常好。但是,在尝试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' -
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
是否有任何情况或理由使用“更多”unix 命令而不是“更少”。就我所见,“更少”在所有意义上都是“更好”,那么这是否意味着“更多”是一个在“更少”时没有理由使用的命令?
常用的寻呼机less
可以用选项启动-S
,防止断行。
然后可以按左右箭头键水平滚动。
由于行可能很长,我想知道是否有击键或跳到行尾的方法。
我知道可以增加less
用于滚动的步长。问题是,这less
不会停止在行尾水平滚动。因此,只需为步长(滚动增量)设置一个高数值通常会使视图超出行尾。
更新后,我注意到我的 bashman
着色配置文件中断了分页。我不知道发生了什么变化,但我将范围缩小到这样一个事实,即调用env less hello.txt
导致内容hello.txt
被回显到终端(如cat
)而没有分页行为。我该如何调试和解决这个问题?
为了消除一些环境变量的影响,我用最小环境进行了测试:
env -i TERM=xterm-256color /usr/bin/less hello.txt
Run Code Online (Sandbox Code Playgroud)
甚至:
env -i /usr/bin/less hello.txt
Run Code Online (Sandbox Code Playgroud)
这也只是将文件打印到标准输出。在具有相同软件版本的不同机器上,分页工作(如果TERM
保留)。
由于甚至env -i
行为不同,我不认为原因是我的环境中的某些东西。
的版本less
和env
是相同的:less 581.2 (PCRE2 regular expressions)
和GNU coreutils 8.32
,OS是Arch Linux的64位,到目前为止,壳牌:GNU bash, version 5.1.8(1)-release (x86_64-pc-linux-gnu)
。
我的 Oh-my-zsh 执行以下操作:
当我运行该git log --pretty --oneline
命令时,它会按预期显示一长串提交列表。
当我点击 时q,它突然消失并显示以下输出:
$ git log --pretty --oneline
FAIL: 141
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?我该如何解决?
我触发了一个ls -1
运行并显示一长串值的命令。当命令结束时,我看不到屏幕垂直长度之外的输出。我怎样才能看到那些以前的条目?
有没有办法逐步查看输出,例如:
如果我这样做ls | less
,ls
检测到它没有连接到终端,这很公平。不同之处在于less
被连接到终端。在此设置中,ls
可以生成彩色和列化输出目标终端,并less
可以正确处理它。您可以使用 使颜色正常工作ls --color=force | less -r
,但这需要更多的输入,而且它不处理列。
如果有一个开关less
可以告诉连接到它的任何东西将其视为真正的终端,那就太酷了。因此,您可以ls | less -T
在less
.
有没有做过这样的事情?
或者less
像它这样的寻呼机真的可以自己做到这一点,还是需要 shell 的合作?例如,shell 是否需要设置一个伪终端ls
来连接?
当我尝试使用这些环境变量时,我得到一个空字符串:
$ $PAGER some_file;
bash: some_file: command not found
$
Run Code Online (Sandbox Code Playgroud)
我测试了一些东西:
$ echo $PAGER;
$ man man; ## Here it's using less(1)
$ export PAGER;
$ man man; ## Still using less(1)
$ PAGER='';
$ echo $PAGER;
$ man man; ## Here it uses cat(1)
$ export PAGER;
$ man man; ## Here it uses cat(1), too
$ unset PAGER;
$ man man; ## Here it uses less(1) again
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何使用这些变量?
env |grep PAGER
什么也没显示。
我的系统是Debian 11(测试)
我的目的是编写一个依赖寻呼机的脚本。
我会使用less …