我经常在 Windows 和 Mac 之间切换。在 Windows 上,我可以使用 cls 清除屏幕,在 Mac 上,我可以使用 command+k 执行相同的操作。我一直在尝试找到一种将 cls 绑定到 command+k 的方法。这样当我在控制台中输入 cls 时,它会清除屏幕。我用的是zsh。
答案1
我假设您正在谈论终端会话。该程序clear
将清除屏幕。您可以cls
通过执行将其绑定到
alias cls=clear
将此行放入 $HOME/.profile 中以在新终端中执行
答案2
有一个 zle(zsh 行编辑器)小部件,用于清除屏幕并重新显示提示和编辑缓冲区:clear-screen
。默认情况下,它在和模式下都绑定到Ctrl+ ,例如在或中,但您可以使用以下方法将其绑定到其他键:Lemacs
vi
tcsh
bash
bindkey '^K' clear-screen
(在emacs
模式下,Ctrl+K是删除从光标到行尾的键,这是我自己经常使用的键绑定)
如果您想clear-screen
手动实现小部件,以便它调用clear
命令然后重新显示提示,您可以创建一个自定义小部件,例如:
myclear-screen() {
clear
zle redisplay
}
zle -N myclear-screen
你可以用同样的方式绑定Ctrl+ 。Kbindkey '^K' myclear-screen
要cls
为clear
命令(清除屏幕的命令)创建别名,您需要执行以下操作:
alias cls=clear
或者您可以定义一个cls
调用clear
命令的函数:
cls() clear
或者:
cls() clear "$@"
对于在调用它时传递给的参数cls
按原样传递给clear
.
然后,您也可以使用 使其成为一个 zle 小部件zle -N cls
,并将其绑定到一个键,但请注意,如果您调用它,屏幕将被清除,但您的提示和编辑缓冲区不会像小clear-screen
部件那样自动重新显示。
clear
in 的一些内置替代品zsh
是:
echoti clear
(来自zsh/terminfo
模块,一般默认加载)。echotc cl
(在zsh/termcap
模块中,与 tcsh 中的命令相同,tc 代表 termcap,而 ti 代表 terminfo,是一个稍微更现代的终端功能数据库)。printf %s $terminfo[clear]
其中$terminfo
, 也是zsh/terminfo
一个关联数组,它将 terminfo 终端功能名称(例如clear
)映射到由 标识的终端的相应转义序列$TERM
。printf %s $termcap[cl]
: termcap 等效项。对序列进行硬编码:在大多数“现代”终端上,清除屏幕并将光标移至顶部的转义序列是
\e[H
(将光标移至顶部H
),然后是\e[J
(清除光标下方)。\e[2J
会清除整个屏幕而不移动光标,\e[3J
有些会清除滚动缓冲区。所以:printf '\e[H\e[J\e[3J'
会清除一切。