vterm 是不是不应该把 clear 命令绑定到 clear-scrollback

我习惯按Ctrl-L把当前行顶到屏幕最上面,并不是要把scrollback buffer 清空,即使手动输入clear命令也是这个意图,iTerm2 里输入 clear 也不会清 scrollback buffer。

emacs-vterm 提供的那个 fish shell 脚本能做目录跟踪,但也附带改了 clear 命令行为,fish shell 默认把Ctrl-L 绑定到 clear 了,这样我一按 Ctrl-L,历史输出就不能回滚了…… 目前我的办法是 confg.fish 里面functions -e clear删除了这个自定义的clear函数。

真想清 scrollback buffer,vterm已经提供了 C-c C-l。

@jixiuf

提了个 pull request:restore behaviour of /usr/bin/clear command by Dieken · Pull Request #477 · akermu/emacs-libvterm · GitHub

看你的PR 直接把readme 中关于clear 整个scrllback buffer 的内容干掉了, 这样不好, 总有一些人想要的是clear整个buffer.

你如果想要只clear screen ,可以建议你重新提个PR ,在 emacs-vterm-zsh.sh/emacs-vterm.fish/emacs-vterm-bash.sh 内定义一个开关,用于控制是否重新定义clear 这个function

你说的C-l 只clear screen 不clear buffer 这个是不准确的,C-l 的行为究竟怎样受terminfo的控制。

infocmp -1 |grep clear 查看当前clear 命令的行为

https://invisible-island.net/xterm/ctlseqs/ctlseqs.html

BSD 和 Linux 的 xterm-256color terminfo 数据库不一样。。。

不值得加开关了,在用户 shell 配置里加开关 && 修改那三个 shell 脚本,还不如在用户 shell 配置里直接删掉那个函数或者别名了。

我关掉那个 PR。

也许默认不要开那三个 clear 函数 or 别名, 绝大部分人都不想 clear 清 scrollback buffer 吧,清了容易,找回来难了。。。scrollback buffer 有行数限制,并不用担心内存占用太大,而且文档里已经说明了 C-c C-l 可以清 scrollback buffer。

话说我从来没注意到 clear 会清 scrollback buffer😓️