
(次へ) コマンドプロンプトにテキストを出力するコマンドはありますか?
実行時にいくつかのコマンドを実行し、次に実行するコマンドを「提案」する関数を作成したいと思います。
~/Desktop $ foo
~/Desktop $ some_new_command_which_user_did_not_enter
答え1
答え2
すべてのPOSIX互換シェルはvi
コマンド編集モードを実装します。これは.Editモードset -o vi
のように区別できます。set +o vi
vi
入れるそして注文するモデル。各プロンプトのデフォルト値は次のとおりです。入力するモードですが、ESC
キーを押すとコンテキストが次に切り替わります。注文するモデル。
いくつかの関連機能このモードの含む:
<control>-L
- 現在のコマンドラインを再描画します。再描画線の同じ位置にカーソルを置きます。
#
- 現在のコマンドラインの先頭にこの文字を挿入し、結果の編集行を
'#'
コメントアウトします。この行はコマンド履歴に入力する必要がありますfc
。
- 現在のコマンドラインの先頭にこの文字を挿入し、結果の編集行を
=
- 現在のコマンドライン位置でビッグワードの可能なシェルワード拡張を表示します(ワード拡張を参照)。
@letter
- 名前付きエイリアスの値を挿入します。_手紙。記号文字は、移植可能な文字セットの単一のアルファベット文字を表します。実装は拡張として追加の文字をサポートできます。もし
alias
_手紙挿入の一部として実行する必要がある追加の編集コマンドが含まれています。そうでない場合alias
_手紙有効にすると、このコマンドは何の効果もありません。
- 名前付きエイリアスの値を挿入します。_手紙。記号文字は、移植可能な文字セットの単一のアルファベット文字を表します。実装は拡張として追加の文字をサポートできます。もし
注:効果@_[letter]
は反復的で、テキスト入力効果で特殊文字をエスケープできます。CONTROL+V[CHAR]
[count]-
- 現在のコマンドラインを次に設定します。セダシェルコマンド履歴の前のコマンドライン。数を指定しない場合、デフォルトは 1 です。カーソルは新しいコマンドの最初の文字に配置する必要があります。このシェルが有効な最大コマンド数を超えると、or
k
コマンドはキャンセルされます。-
($HISTSIZE
環境変数の影響を受ける)、端末アラームが発生し、コマンドが無効です。
- 現在のコマンドラインを次に設定します。セダシェルコマンド履歴の前のコマンドライン。数を指定しない場合、デフォルトは 1 です。カーソルは新しいコマンドの最初の文字に配置する必要があります。このシェルが有効な最大コマンド数を超えると、or
[count]y
スポーツ- ヤンキー(つまり、コピー)現在のカーソル位置からモーションコマンド結果位置までの文字バッファ保存。数字計算モーションコマンドに適用する必要があります。アクションコマンドがコマンドラインの先頭に向かって移動している場合は、現在のカーソル位置の下の文字をドラッグした文字セットに含めないでください。モーションコマンドがある場合は、
y
現在のコマンドライン全体をストレージバッファにインポートする必要があります。現在のカーソル位置は変更されていないままにしてください。カウントが現在のカーソル位置とモーションコマンドがカーソルを移動するコマンドラインの終わりの間の文字数より大きい場合、上記の範囲の残りの文字はエラーと見なすべきではありません。
- ヤンキー(つまり、コピー)現在のカーソル位置からモーションコマンド結果位置までの文字バッファ保存。数字計算モーションコマンドに適用する必要があります。アクションコマンドがコマンドラインの先頭に向かって移動している場合は、現在のカーソル位置の下の文字をドラッグした文字セットに含めないでください。モーションコマンドがある場合は、
Y
- 現在のカーソル位置から行末まで文字を保存バッファにドラッグします。現在の文字位置は変更されていないままにしてください。
[count]p
- 現在のカーソル位置の後に保持バッファの現在のコンテンツコピーを配置します。現在のカーソル位置は、保存バッファから入力された最後の文字に移動する必要があります。数はストレージバッファのコピー数を示す必要があります。
[count]P
- 現在のカーソル位置の直前に保持バッファの現在のコンテンツコピーを配置します。現在のカーソル位置は、保存バッファから入力された最後の文字に移動する必要があります。数はストレージバッファのコピー数を示す必要があります。
シェルごとのラインエディタを使用すると、同様の効果をたくさん生成できます。(例:bash
'のreadline
コマンドまたはBSDを介して - ライセンスされている)bind
~/.input.rc
editline
~/.editrc
。