
私は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
。デフォルトでは、inまたはのようなモードとモードの両方が+にバインドされていますが、次のように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端末機能名(たとえば)を、識別された端末の対応するエスケープシーケンスにマッピングする連想配列でも$terminfo
あります。zsh/terminfo
clear
$TERM
printf %s $termcap[cl]
:termcapと同じです。シーケンスハードコーディング:ほとんどの「最新」端末で画面を消去してカーソルを一番上に移動するエスケープシーケンスは
\e[H
(カーソルを一番上に移動H
)、次\e[J
の(下のカーソルを消去)します。\e[2J
カーソルを移動せずに全画面を消去し、\e[3J
一部はスクロールバッファを消去します。だから:printf '\e[H\e[J\e[3J'
すべてをクリアします。