commandline - 現在のコマンドラインバッファを取得、設定する

概要

commandline [OPTIONS] [CMD]

説明

commandline は、現在のコマンドラインバッファの内容を設定または取得するために使用できます。

引数を指定しない場合、 commandline はコマンドラインの現在の値を返します。

CMD が指定された場合、コマンドラインバッファは消去され、 CMD の内容に置き換えられます。

以下のオプションが利用可能です:

-C--cursor

バッファの内容ではなく、現在のカーソル位置を設定または取得します。引数が与えられない場合は現在のカーソル位置が表示され、それ以外の場合は引数が新しいカーソル位置として解釈されます。 -j-p-t オプションのいずれかが指定されている場合、位置はコマンドラインバッファ全体ではなく、それぞれの部分文字列に対する相対的なものになります。

-B--selection-start

バッファ内の選択開始の現在位置を取得します。

-E--selection-end

バッファ内の選択終了の現在位置を取得します。

-f--function

追加の引数を入力関数として解釈させ、それらをキューに入れます。これにより、実際のキー入力が行われる前にそれらが読み取られます。このオプションは他のオプションと組み合わせることはできません。入力関数の一覧については、 bind を参照してください。

-h--help

このコマンドの使用方法に関するヘルプを表示します。

以下のオプションは、 commandline がコマンドラインバッファを更新する方法を変更します:

-a--append

現在のコマンドラインを削除せず、その末尾に指定した文字列を追加します。

-i--insert--insert-smart

現在のコマンドラインを削除せず、現在のカーソル位置に指定した文字列を挿入します。 --insert-smart オプションは、DWIM(Do-What-I-Mean)モードを有効にします。これは、各行の最初のコマンドから $ プレフィックスを取り除きます。

-r--replace

現在のコマンドラインを削除し、指定した文字列に置き換えます(デフォルト)。

以下のオプションは、コマンドラインのどの部分を表示または更新するかを変更します:

-b--current-buffer

表示されている自動提案(autosuggestion)を含まない、コマンドライン全体を選択します(デフォルト)。

-j--current-job

現在のジョブを選択します。ここでの**ジョブ**とは1つのパイプラインを指します。論理演算子または終端文字( ;& 、および改行)で停止します。

-p--current-process

現在のプロセスを選択します。ここでの プロセス とは1つのコマンドを指します。論理演算子、終端文字、およびパイプで停止します。

-s--current-selection

現在の選択範囲を選択します

-t--current-token

現在のトークンを選択します

--search-field

コマンドラインの代わりにページャの検索フィールドを使用します。検索フィールドが表示されていない場合は偽(false)を返します。

--input=INPUT

コマンドラインの代わりにこの文字列に対して操作を行います。 --tokens-expanded のようなオプションを使用する場合に便利です。

以下のオプションは、 commandline が現在のコマンドラインバッファを表示する方法を変更します:

-c--cut-at-cursor

現在のカーソル位置までの選択範囲のみを表示します。 --tokens-expanded と組み合わせた場合、カーソルがあるトークンを除いた、最後に完了したトークンまでを表示します。これは通常、補完(completions)などで必要になる動作です。両方を取得するには、 commandline --cut-at-cursor --tokens-expanded; commandline --cut-at-cursor --current-token を使用するか、短縮形の commandline -cx; commandline -ct を使用してください。

-x--tokens-expanded

選択範囲に対して引数展開を実行し、1行に1つの引数を表示します。コマンド置換(command substitutions)は展開されず、そのまま渡されます。

-otokenize--tokens-raw

非推奨です。使用しないでください。

complete -C STRING を使用して特定の文字列を補完する呼び出しの最中に commandline が呼び出された場合、 commandline は指定された文字列をコマンドラインの現在の内容として扱います。

以下のオプションは、コマンドラインの状態に関するメタデータを出力します:

-L--line

引数が与えられない場合、カーソルがある行を表示します。最上位の(topmost)行を1として数えます。それ以外の場合は、カーソルを指定された行に設定します。

--column

引数が与えられない場合、行の先頭からカーソル位置までのオフセットをUnicodeコードポイント単位(1から開始)で表示します。それ以外の場合は、カーソルを指定されたコードポイントオフセットに設定します。

-S--search-mode

コマンドラインが履歴検索を実行している場合、真(true)と評価されます。

-P--paging-mode

コマンドラインがタブ補完(completions)などのページャの内容を表示している場合、真(true)と評価されます。

--paging-full-mode

コマンドラインがタブ補完(completions)などのページャの内容を表示しており、かつすべての行が表示されている(「あと <n> 行」というメッセージがない)場合、真(true)と評価されます。

--is-valid

コマンドラインが構文的に有効で完了している場合に真(true)を返します。その場合、 execute バインド関数が呼び出されたときに実行されます。コマンドラインが未完了の場合は2を返し、エラーがある場合は1を返します。

--showing-suggestion

シェルが現在、自動的な履歴補完/提案(suggestion)を表示しており、 forward- 系のバインドを通じてそれを受け入れ可能な場合、真(true、すなわち0)と評価されます。例えば、すでに行末にいる状態でカーソルを右に移動させたときに、何も起こらないのか、あるいは提案された補完を受け入れるのかを判断するために使用できます( forward-char-passive はこれを自動的に行うことに注意してください)。

commandline -j $history[3] は、カーソル位置にあるジョブ(job)を、コマンドライン履歴の3番目の項目で置き換えます。

コマンドラインに以下が含まれている場合

>_ echo $flounder >&2 | less; and echo $catfish

(カーソルが "flounder" の "o" の上にある場合)

echo $flounder >& が第1プロセス(process)、 less が第2プロセス、 and echo $catfish が第3プロセスとなります。

echo $flounder >&2 | less が第1ジョブ(job)、 and echo $catfish が第2ジョブとなります。

$flounder が現在のトークン(token)です。

補完(completions)などで最も一般的な使い方は以下の通りです

set -l tokens (commandline -xpc)

これは、現在のプロセス(process)(補完の対象となっているもの)を個別のエントリにトークン化(tokenized)して取得しますが、現在補完中のトークン自体は含みません。

現在入力中のトークンにも関心がある場合は、以下を追加します

set -l current (commandline -ct)

これにより、fishの中間一致(infix matching)を無効化しやすくなることに注意してください。可能であれば、補完では単にすべての候補を表示し、現在のトークンとのマッチングはfish自体のロジックに任せるのが最善です。

その他の例:

>_ commandline -t
$flounder
>_ commandline -ct
$fl
>_ commandline -b # or just commandline
echo $flounder >&2 | less; and echo $catfish
>_ commandline -p
echo $flounder >&2
>_ commandline -j
echo $flounder >&2 | less