書式
commandline [OPTIONS] [CMD]

概要

commandline コマンドは
現在のコマンドラインバッファの内容を
設定・取得します。

無引数で起動したときは、
現在のコマンドラインの内容を出力します。

CMD を指定したとき、
現在のコマンドラインは消去され、
CMD に置き換わります。

訳注:自分独自の補完を記述 したり、
コマンドラインエディタ 専用の
コマンドを作成するときに役立ちます。

そのときは、 コマンド置換 を使って
commandline コマンドの出力を
変数に設定 することになります。

オプション

以下のオプションがあります。

-C / --cursor

コマンドラインの内容ではなくて、
カーソル位置を設定・取得する。

無引数のとき、
現在のカーソル位置が出力される。

引数が与えられると、
その位置にカーソルを移動する。

-f / --function

リーダに行読み込みの関数を仕込む(FIXME)。

このオプションは
他のオプションとは組み合わせられない。

このオプション以降の引数は
行読み込み関数の引数として解釈される。
行読み込み関数はリーダに仕込まれる。

その結果、
新たな実際のキー操作が認識されるよりも
前にリーダから返ってくる。

訳注:特にエディタコマンドを自作して
bind でキーに割り当てるときには
commandline -f repaint を実行する必要がある。

更新方法を変更する

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

-a / --append
現在のコマンドラインを削除せずに、
末尾に追記する。
-i / --insert
現在のコマンドラインを削除せずに、
カーソル位置に指定された文字列を挿入する。
-r / --replace
現在のコマンドラインを削除し、
指定された文字列に置き換える(デフォルト)

表示・更新する部分を変更する

以下のオプションは commandline
表示・更新する部分を変更します。(訳注:例は後述)

-b / --current-buffer
バッファ全体を選択する(デフォルト)
-j / --current-job
現在のジョブを選択する。
-p / --current-process
現在のプロセスを選択する。
-t / --current-token
現在のトークンを選択する。

表示方法を変更する

以下のオプションは commandline による
コマンドラインバッファの表示方法を変更します。

-c / --cut-at-cursor
現在のカーソル位置までのみを表示する。
-o / --tokenize
選択部分をトークン化し、
1行ごとにトークンを表示する。

コマンドラインが STRING であるときの
補完候補を出力する complete -C STRING
commandline が含まれているとき、

commandlineSTRING
現在のコマンドラインの内容であるとみなします。

メタデータを出力する

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

-L / --line
先頭行を1行目として、
現在の行番号を出力する。
-S / --search-mode
コマンドラインが 履歴検索 中であるときに正常終了する。
-P / --paging-mode
コマンドラインが タブ補完 などの
ページャを表示しているときに正常終了する。

実行例

以下の例はカーソル位置のジョブを
コマンドライン履歴の3番目に置き換えます。

$ commandline -j $history[3]

たとえば、コマンドラインが
以下の状態であるとします。

> echo $flounder >&2 | less; and echo $catfish
          ^←(flounderのo)の位置にカーソルがあるとして

そのときの commandline コマンドの
結果は以下のようになります。

# 現在のトークン
> commandline -t
$flounder

# 現在のトークン、かつカーソル位置まで
> commandline -ct
$fl

# コマンドライン全体。 commandlineと無引数でも可。
> commandline -b  # or just commandline
echo $flounder >&2 | less; and echo $catfish

# 現在のプロセスの部分。
> commandline -p
echo $flounder >&2

# 現在のジョブの部分。
> commandline -j
echo $flounder >&2 | less

実際に試すには

以下の内容を打ち込んで、
Alt+Zを押せば
上記の例を確認できます。

キー割り当てにおいては
bind(和訳) コマンドを使います。

エディタコマンドですので、
最後に commandline -f repaint
呼び出す必要があります。

bind \ez commandline_test

function commandline_test
        echo
        echo t = (commandline -t)
        echo tc = (commandline -t -c)
        echo b = (commandline)
        echo p = (commandline -p)
        echo j = (commandline -j)
        commandline -f repaint
end

最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。