Macでエイリアスをキーボードショートカットにバインドする方法は?

Macでエイリアスをキーボードショートカットにバインドする方法は?

私は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他のキーにバインドできます。Lemacsvitcshbash

bindkey '^K' clear-screen

emacsモードでは、Ctrl+はKカーソルから行末までの削除キーですが、私がよく使うキーバインディングです)

コマンドを呼び出した後にプロンプ​​トを再表示するclear-screenようにウィジェットを手動で実装するには、次のカスタムウィジェットを作成できます。clear

myclear-screen() {
  clear
  zle redisplay
}
zle -N myclear-screen

+も同じ方法でバインドできますCtrlKbindkey '^K' myclear-screen

コマンド(画面を消去するコマンド)clsのエイリアスを作成するには、次の手順を実行する必要があります。clear

alias cls=clear

または、コマンドclsを呼び出す関数を定義できます。clear

cls() clear

または:

cls() clear "$@"

呼び出し時に渡された引数は、clsそのまま渡されますclear

その後、それをzleウィジェットにしてzle -N clsキーにバインドすることもできますが、呼び出すと画面が消去されますが、プロンプトと編集バッファはウィジェットと同じではなくclear-screen自動的に再表示されます。

clearinのいくつかの組み込み代替機能はzsh次のとおりです。

  • echoti clearzsh/terminfo通常はデフォルトでロードされるモジュールで提供されます)。

  • echotc clzsh/termcapモジュール内のtcshと同じコマンド、tcはtermcapを表し、tiは端末機能のより近代的なデータベースであるterminfoを表します。)

  • printf %s $terminfo[clear]これは、terminfo端末機能名(たとえば)を、識別された端末の対応するエスケープシーケンスにマッピングする連想配列でも$terminfoあります。zsh/terminfoclear$TERM

  • printf %s $termcap[cl]:termcapと同じです。

  • シーケンスハードコーディング:ほとんどの「最新」端末で画面を消去してカーソルを一番上に移動するエスケープシーケンスは\e[H(カーソルを一番上に移動H)、次\e[Jの(下のカーソルを消去)します。\e[2Jカーソルを移動せずに全画面を消去し、\e[3J一部はスクロールバッファを消去します。だから:

    printf '\e[H\e[J\e[3J'
    

    すべてをクリアします。

関連情報