Skip to content

説明書 §7 補完

Koichi Murase edited this page Jun 4, 2024 · 49 revisions

[ 日本語 | English ] ≫ 説明書 [§1 基本 | §2 描画 | §3 束縛 | §4 編集 | §5 Emacs | §6 Vim | §7 補完 | §8 他]

7. 補完

補完の設定は complete_load フックまたは ble-import core-complete のコールバッ ク経由で実行する必要があります。以下は complete_load フックを用いて bleopt complete_auto_delay を設定する例です。

# blerc

function my/complete-load-hook {
  bleopt complete_auto_delay=300
}

blehook/eval-after-load complete my/complete-load-hook
# ble-0.3以前
# ble/array#push _ble_complete_load_hook my/complete-load-hook

以下は ble-import コールバックを用いて設定する例です。

# blerc

function my/set-up-completion {
  bleopt complete_auto_delay=300
}

ble-import core-complete -C 'my/set-up-completion'

7.1 補完の開始 (complete)

操作 編集関数 説明
C-i, TAB complete 補完
M-? (Emacs) complete show_menu 候補表示
M-* (Emacs) complete insert_all 全候補挿入
M-{ (Emacs) complete insert_braces 全候補挿入 (ブレース展開)
C-TAB menu-complete メニュー補完
S-C-i, S-TAB menu-complete backward メニュー補完 (最後の候補)
M-/ (Emacs) complete context=filename ファイル名を補完
M-~ (Emacs) complete context=username ユーザ名を補完
M-$ (Emacs) complete context=variable 変数名を補完
M-@ (Emacs) complete context=hostname ホスト名を補完
M-! (Emacs) complete context=command コマンド名を補完
C-x / (Emacs) complete show_menu:context=filename ファイル名候補を一覧表示
C-x ~ (Emacs) complete show_menu:context=username ユーザ名候補を一覧表示
C-x $ (Emacs) complete show_menu:context=variable 変数名候補を一覧表示
C-x @ (Emacs) complete show_menu:context=hostname ホスト名候補を一覧表示
C-x ! (Emacs) complete show_menu:context=command コマンド名候補を一覧表示
C-x / (Vim) menu-complete context=filename ファイル名をメニュー補完
C-x ~ (Vim) menu-complete context=username ユーザ名をメニュー補完
C-x $ (Vim) menu-complete context=variable 変数名をメニュー補完
C-x @ (Vim) menu-complete context=hostname ホスト名をメニュー補完
C-x ! (Vim) menu-complete context=command コマンド名をメニュー補完
M-g (Emacs) complete context=glob パス名展開
C-x * complete context=glob:insert_all パス名展開を全候補挿入
C-x g complete context=glob:show_menu パス名展開を一覧表示
C-M-i, M-TAB complete context=dynamic-history 動的単語 (履歴の単語)

7.1.1 編集関数 complete

widget: complete $opts

OPTIONS

  $opts   コロン区切りの以下の設定の組み合わせです。

    insert_common
    insert_all
    insert_braces
    insert_unique
    toggle_menu
    enter_menu
    show_menu
    context=CONTEXT
    backward
    no-empty
    no-bell

既定の設定では C-i または TAB で補完を試みます。 既に候補一覧が表示されている時には後述のメニュー補完に移行します。 補完では先ず初めに補完候補の生成を実行します。 最初に Bash の組み込みコマンド complete によって設定したプログラム補完が試みられ、 次に ble.sh に組み込まれた補完候補生成器が試みられます。 補完候補が一つも生成されない場合には次に曖昧補完候補の生成が試みられます。 次に補完が実行されます。

  • insert_common が指定された時または他の挿入方法が何も指定されていない時、 現在入力済みの部分を接頭辞とする候補の共通一致部分が挿入されます。 補完候補が一意の場合には、その候補を挿入し補完を完了します。 補完候補が2つ以上ある場合には、候補一覧を表示します。
  • insert_all が指定されている時、全ての補完候補をコマンドラインに挿入し、補完を完了します。
  • insert_braces が指定されている時、全ての補完候補をブレース展開を用いて縮約した形式でコマンドラインに挿入し、補完を完了します。
  • toggle_menu が指定されている時、補完メニューが表示されていなければ表示します。補完メニューが表示されている時は非表示にします。
  • enter_menu が指定されている時、補完メニューを表示し一つ目の候補が選択された状態でメニュー補完モードに移行します。 もし backward が指定されていれば、一つ目の候補の代わりに最後の候補を選択した状態になります。 もし insert_unique が指定されていてかつ補完候補が一意の時には、 メニューに入る代わりにその候補をコマンドラインに挿入し補完を完了します。
  • show_menu が指定されている時、補完メニューを単に表示し他は何もしません。 もし insert_unique が指定されていてかつ補完候補が一意の時には、代わりに候補を挿入し補完を完了します。

補完の完了時に、挿入された補完候補のそれぞれに対して、候補に接尾辞や閉じ引用符が必要に応じて追加されます。

M-? (Emacs 編集モード) を用いた時 (編集関数の引数 $optsshow_menu を指定した時) は、 候補を生成した後に、補完を実行せずに候補一覧を表示します。 C-TAB を用いた時 (編集関数の引数 $optsenter_menu を指定した時) は、 候補を生成した後に、補完を実行せずに後述のメニュー補完に入ります。

Emacs 編集モードで M-/, M-~, M-$, M-@, M-! を用いた時 (編集関数の引数 $optscontext=filename, context=username, context=variable, context=hostname, context=command を指定した時)、 それぞれファイル名、ユーザ名、変数名、ホスト名、コマンド名を補完候補として生成して補完を試みます。 Emacs 編集モードで C-x /, C-x ~, C-x $, C-x @, C-x ! を用いた時 (編集関数の引数 $opts に前述の context=* に加えて show_menu を指定した時), それぞれの補完候補を生成した後、補完を実行せずに候補一覧を表示します。 Vim 編集モードで C-x /, C-x ~, C-x $, C-x @, C-x ! を用いた時 (編集関数の引数 $opts に前述の context=* に加えて enter_menu を指定した時), それぞれの補完候補を生成した後、後述のメニュー補完に入ります。

7.1.2 編集関数 menu-complete

widget: menu-complete $opts

ble/widget/complete enter_menu:insert_unique:$opts の別名です。 詳細は complete の説明を参照して下さい。

7.1.3 設定変数 complete_ambiguous (空/非空) (v0.3)

# 既定値
bleopt complete_ambiguous=1

非空文字列の時、曖昧一致する補完候補を生成します。 空文字列を設定した時、曖昧一致する補完候補の生成を無効化します。

7.1.4 設定変数 complete_contract_function_names (空/非空) (v0.3)

# 既定値
bleopt complete_contract_function_names=1

非空文字列の時、関数名を他のファイル名と同様に / 区切りで補完候補の生成を行います。 空文字列の時、/ を含む全ての関数名を一度に候補として生成します。

7.1.5 設定変数 complete_polling_cycle (算術式) (v0.2)

# 既定値
bleopt complete_polling_cycle=50     # ble-0.3
bleopt complete_stdin_frequency=50   # ble-0.2 (互換性 obsoleted)

補完候補の生成中にユーザの入力があると補完がキャンセルされ、 その場でユーザの入力に応答します。 この設定変数でユーザの入力をチェックする間隔 (単位は候補の生成数) を指定します。

7.1.6 設定変数 complete_limit (算術式/空) (v0.4)

# 既定値
bleopt complete_limit=

補完候補生成時に処理する候補数の上限を与えます。上限を超えた時、補完処理を中断します。 空文字列が設定されている時は上限のチェックを行いません。 この設定項目は特にユーザによる補完処理 (TAB 補完) に対して適用されます。 自動補完に対する設定については以下の complete_limit_auto を御参照ください。

7.1.7 設定変数 complete_limit_auto (算術式/空) (v0.4)

# 既定値
bleopt complete_limit_auto=2000

この設定項目は自動補完に対する complete_limit と同様の設定です。 空文字列が設定されている時は complete_limit の設定が参照されます。

7.1.8 設定変数 complete_limit_auto_menu (算術式/空) (v0.4)

# 既定値
bleopt complete_limit_auto_menu=100

この設定項目は自動メニューに対する complete_limit と同様の設定です。 空文字列が設定されている時は complete_limit の設定が参照されます。

7.1.9 設定変数 complete_timeout_auto (算術式/空) (v0.4)

# 既定値
bleopt complete_timeout_auto=5000

自動補完内部で行うパス名展開のタイムアウトの設定です。 補完対象の単語が評価に時間のかかるグロブパターンを含んでいる時に、 この設定に基づいてパス名展開を停止し自動補完をキャンセルします。 設定値はミリ秒単位のタイムアウト時間です。 空文字列を設定した時、タイムアウトは無効化されます。

7.1.10 設定変数 complete_timeout_compvar (算術式/空) (v0.4)

# 既定値
bleopt complete_timeout_compvar=200

プログラム補完で使用する COMP_WORDSCOMP_LINE を構築する時に行うパス名展開のタイムアウトの設定です。 入力済みの単語が評価に時間のかかるグロブパターンを含んでいる時に、 この設定に基づいてパス名展開を停止します。 タイムアウトが発生した時は代わりにパス名展開を無効にして展開した結果を COMP_WORDS and COMP_LINE の値として使用します。 設定値はミリ秒単位のタイムアウト時間です。 空文字列を設定した時、タイムアウトは無効化されます。

7.1.11 設定変数 complete_allow_reduction (空/非空) (v0.4)

# 既定値
bleopt complete_allow_reduction=     # ble-0.4

外部の枠組みで生成された補完候補が既に入力済みの文字列を含まない時、 この設定が空文字列ならば一意確定の時にのみ遡って書き換える事を許します。 非空文字列ならば常に遡って書き換える事を許します。

7.1.12 設定変数 complete_requote_threshold (算術式) (v0.4)

# 既定値
bleopt complete_requote_threshold=0

単語確定時にクォートを単純化する閾値を算術式で指定します。 負の値を指定した時、クォートの単純化は無効化されます。 それ以外の場合は、少なくとも指定された数だけ文字数が減少する時にクォートの単純化が実施されます。 既定値は 0 です。つまり、文字数が増えない限りはクォートの単純化が実施されます。

7.1.13 Bash 設定 no_empty_cmd_completion

# bashrc

# 既定値
shopt -u no_empty_cmd_completion

Bash の設定 no_empty_cmd_completion で振る舞いが変わります。 設定されている場合は、空文字列によるコマンド名候補生成を実行しません。

7.1.14 Bash 設定 force_fignore

# bashrc

# 既定値
shopt -s force_fignore

Bash の設定 force_fignore で振る舞いが変わります。 設定されている場合は、ファイル名以外の候補生成についてもシェル変数 FIGNORE によるフィルタを実施します。 シェル変数 FIGNORE にコロン区切りで指定された接尾辞を持つ候補は削除されます。

7.1.15 Readline 変数 completion-ignore-case (v0.3)

# bashrc

# 既定値
bind 'set completion-ignore-case off'

Readline の設定 completion-ignore-case で振る舞いが変わります。 候補生成時に大文字・小文字を区別しません。

7.1.16 設定変数 complete_skip_matched (空/非空) (v0.3)

# bashrc

# 既定値
bleopt complete_skip_matched=on    # ble-0.4以降
bind 'set skip-completed-text on'
bind 'set skip-completed-text off' # ble-0.3

非空文字列が指定されている場合、 補完確定時にカーソルの右側にある補完内容に一致する文字列を削除します。 Readline 変数 skip-completed-text と同期されます。

7.1.17 Readline 変数 visible-stats (v0.3)

# bashrc

# 既定値
bind 'set visible-stats off'

メニュー補完のファイル名候補を表示する時にファイルの種類を示す接尾辞を表示します。 シンボリックリンクの場合は @ を、ディレクトリの場合は / を、実行可能なファイルの場合には * を付加します。

7.1.18 Readline 変数 mark-directories (v0.3)

# bashrc

# 既定値
bind 'set mark-directories on'

ディレクトリ名の補完直後に / を挿入します。

7.1.19 Readline 変数 mark-symlinked-directories (v0.3)

# bashrc

# 既定値
bind 'set mark-symlinked-directories on'

ディレクトリを指しているシンボリックリンクの補完直後に / を挿入します。

7.1.20 Readline 変数 match-hidden-files (v0.3)

# bashrc

# 既定値
bind 'set match-hidden-files on'

ファイル名候補の生成時に . で始まるファイル名に一致します。

7.1.21 Readline 変数 menu-complete-display-prefix (v0.3)

# bashrc

# 既定値
bind 'set menu-complete-display-prefix off'

メニュー補完において接頭辞部分を表示します。 例えば、通常は dir/file* の形の補完候補を表示する時、ディレクトリ名 dir/ は省略されますが、 このオプションを有効にすると省略をせずに全て表示します。

7.1.22 設定変数 complete_source_sabbrev_ignore (コロン区切りグロブ) (v0.4)

# 既定値
bleopt complete_source_sabbrev_ignore=

コロン区切りのグロブパターンで、静的略語展開候補の生成時に無視する略語を指定します。

7.1.23 設定変数 complete_source_sabbrev_opts (opts) (v0.4)

# 既定値
bleopt complete_source_sabbrev_opts=

コロン区切りのオプションを指定します。 オプション no-empty-completion が指定されている時、補完対象の単語が空文字列の時、静的略語展開候補は生成されません。

7.2 メニュー補完 (menu-complete)

候補一覧が表示されている状態で C-i または TAB を入力するとメニュー補完に入ります。 メニュー補完に入る操作 (C-TAB または Vim 編集モードの C-x /, C-x ~, C-x $, C-x @, C-x !) を用いてメニュー補完に入ることもできます。 メニュー補完の中にいる時、以下の操作が有効です。

操作 編集関数 説明
C-m, RET menu_complete/accept 確定
C-g, C-x C-g, C-M-g menu_complete/cancel キャンセル
__default__ menu_complete/exit-default メニュー補完を抜け、既定の動作
C-f, right menu/forward-column 次の候補
C-i, TAB menu/forward cyclic 次の候補 (循環)
C-b, left menu/backward-column 前の候補
C-S-i, S-TAB menu/backward cyclic 前の候補 (循環)
C-n, down menu/forward-line 下の行の候補
C-p, up menu/backward-line 上の行の候補
prior menu/backward-page 前の頁
next menu/forward-page 次の頁
home menu/beginning-of-page 現在の頁の最初の候補に移動
end menu/end-of-page-page 現在の頁の最後の候補に移動
C-x SP menu_complete/toggle-hidden 補完メニューの表示・非表示切り替え
C-x right, C-x C-n menu_complete/switch-style + 次のメニュースタイル
C-x left, C-x C-p menu_complete/switch-style - 前のメニュースタイル
C-x a menu_complete/switch-style align-nowrap メニュースタイルを align-nowrap に変更
C-x c menu_complete/switch-style dense-nowrap メニュースタイルを dense-nowrap に変更
C-x d menu_complete/switch-style desc メニュースタイルを desc に変更
C-x l menu_complete/switch-style linewise メニュースタイルを linewise に変更
C-0..9, M-0..9 menu/append-arg 数字入力開始
C-0..9, M-0..9, 0..9 menu/append-arg 数字入力続き

7.2.1 設定変数 complete_menu_complete (空/非空)

# 既定値
bleopt complete_menu_complete=1

非空文字列が設定されている場合、 候補一覧が表示されている時に C-i または TAB を入力した時 (編集関数 complete を呼び出した時)、メニュー補完に入ります。 空文字列が設定されている場合、メニュー補完に入らずに通常の補完を再度試みます。

7.2.2 設定変数 complete_menu_complete_opts (コロン区切りリスト) (v0.4)

# 既定値
bleopt complete_menu_complete_opts=insert-selection

メニュー補完の詳細な振る舞いを制御するコロン区切りのリストです。 insert-selection が指定されている時、現在選択されているメニュー項目を一時的に コマンドラインに挿入します。hidden が指定されている時、insert-selection が 自動で有効になり、それに加えてメニュー補完時に既定ではメニューを表示せずにコマ ンドラインに挿入される選択肢だけ巡回します。

7.2.3 設定変数 complete_menu_style (v0.3)

# 既定値
bleopt complete_menu_style=align-nowrap

候補一覧の見た目を制御します。 値 dense が指定されている場合、全候補を空白区切りで並べます。 候補が行を跨ることもあります。 値 dense-nowrap が指定されている場合、 候補が行を跨がらないように適宜改行を挿入して全候補を空白区切りで並べます。 値 align が指定されている場合、候補が縦に並ぶ様に間隔を調整して並べます。 値 align-nowrap が指定されている場合、 候補が行内に収まらない時に適宜改行を挿入して、間隔を調整して候補を並べます。 値 linewise が指定されている場合、一行に一候補ずつ表示します。 値 desc が指定されている場合、一行に一候補ずつ説明付きで表示します。 値 desc-raw が指定されている場合は、更に説明に含まれる制御シーケンスが処理されます。

7.2.4 設定変数 complete_menu_maxlines (算術式) (v0.4)

# 既定値
bleopt complete_menu_maxlines=-1

正の整数に評価される時、候補一覧の高さをその行数に制限します。

7.2.5 設定変数 menu_align_max (算術式) (v0.3)

# 既定値
bleopt menu_align_max=20      # ble-0.4
bleopt complete_menu_align=20 # ble-0.3 (ble-0.4 で廃止)

設定変数 complete_menu_stylealign または align-wrap が設定されている時に使われます。 候補を並べる間隔の単位の最大幅を指定します。

7.2.6 設定変数 menu_align_min (算術式) (v0.3)

# 既定値
bleopt menu_align_min=4

設定変数 complete_menu_stylealign または align-wrap が設定されている時に使われます。 候補を並べる間隔の単位の最小幅を指定します。

7.2.7 設定変数 menu{,_align,_desc,_linewise,_dense}_prefix (printf書式/ANSI) (v0.4)

# 既定値
bleopt menu_prefix=
bleopt menu_align_prefix=
bleopt menu_desc_prefix=
bleopt menu_linewise_prefix=
bleopt menu_dense_prefix=

# 設定例
bleopt menu_align_prefix='\e[1m%d:\e[m '
bleopt menu_desc_prefix='\e[1m%d.\e[m '
bleopt menu_dense_prefix='\e[1;32m>\e[m '
bleopt menu_linewise_prefix='\e[1;36m%d:\e[m '

メニュー項目の先頭に表示する接頭辞または項目番号の書式を指定します。 menu_prefix は共通の既定の接頭辞を設定します。 menu_{align,desc,linewise,dense}_prefix はそれぞれ対応する menu-style における接頭辞を設定します。 項目番号を最初の引数とした printf 書式で指定します。ANSI制御シーケンスも有効です。

7.2.8 設定変数 menu_desc_multicolumn_width (printf書式/ANSI) (v0.4)

# 既定値
bleopt menu_desc_multicolumn_width=65

# 設定例: multicolumn を無効化
bleopt menu_desc_multicolumn_width=

設定変数 complete_menu_styledesc (または desc-text) を指定している時、複数カラム表示の際の最小カラム幅を指定します。 空文字列が設定されている時、複数カラム表示は無効化されます。

7.2.9 設定変数 complete_menu_color (空/非空) (v0.4)

# bashrc

# 既定値
bleopt complete_menu_color=on
bind 'set colored-stats on'

非空文字列が指定されている場合、メニュー項目の着色を有効にします。 Readline 変数 colored-completion-stats と同期されます。

7.2.10 設定変数 complete_menu_color_match (空/非空) (v0.4)

# bashrc

# 既定値
bleopt complete_menu_color_match=on
bind 'set colored-completion-prefix on'

非空文字列が指定されている場合、メニュー項目の入力済み文字列に一致する部分を強調表示します。 Readline 変数 colored-completion-prefix と同期されます。

7.2.11 描画設定 menu_desc_default (v0.4)

# 既定値
ble-face menu_desc_default=none

メニューの説明文に使われる既定の描画設定です。

7.2.12 描画設定 menu_desc_type (v0.4)

# 既定値
ble-face menu_desc_type=ref:syntax_delimiter

メニューの説明文中でメニュー項目の種類を示す (type) の形式の表示に使われる描画設定です。

7.2.13 描画設定 menu_desc_quote (v0.4)

# 既定値
ble-face menu_desc_quote=ref:syntax_quoted

メニューの説明文中でクォートされた文字列を示すのに使われる描画設定です。

7.2.14 描画設定 cmdinfo_cd_cdpath (v0.4)

CDPATH を元にして生成された補完候補の着色に用いる描画設定です。

# 既定
ble-face cmdinfo_cd_cdpath='fg=26,bg=155'

7.3 自動補完 (auto-complete) (Bash 4.0 以降) (v0.3)

Bash 4.0 以降で自動補完 (推測候補) が有効になります。

操作 編集関数 説明
C-g auto_complete/cancel キャンセル
S-RET, S-C-m auto_complete/insert 確定
C-f, right, C-e, end auto_complete/@end insert 行末なら確定、それ以外ならキャンセルし既定の動作
M-f, C-right auto_complete/@end insert-cword C単語確定
M-right auto_complete/@end insert-word 単語確定
C-j, C-RET auto_complete/accept-line 自動補完を確定し RET 実行
__defchar__ auto_complete/self-insert 1文字入力
__default__ auto_complete/cancel-default 自動補完をキャンセルし、既定の動作

7.3.1 設定変数 complete_auto_complete (空/非空) (v0.3)

# 既定値
bleopt complete_auto_complete=1

非空文字列が設定されている時、自動補完が有効です。 空文字列が設定されている時、自動補完は無効化されます。

7.3.2 設定変数 complete_auto_delay (算術式) (v0.3)

# 既定値
bleopt complete_auto_delay=1

ユーザが最後に入力を行ってから自動補完を開始するまでの待ち時間を設定します。単位はミリ秒です。

7.3.3 設定変数 complete_auto_history (空/非空) (v0.3)

# 既定値
bleopt complete_auto_history=1

非空文字列が設定されている時、 履歴から現在のコマンドラインに前方一致する履歴行を検索し自動補完します。

7.3.4 設定変数 complete_auto_wordbreaks (文字集合) (v0.4)

# 既定値
bleopt complete_auto_wordbreaks=$' \t\n'

自動補完の単語挿入 (M-right) で用いる単語の区切り文字を設定します。

7.3.5 設定変数 complete_auto_complete_opts (コロン区切りリスト) (v0.4)

# 既定値
bleopt complete_auto_complete_opts=

自動補完の振る舞いを制御するコロン区切りのリストです。

  • suppress-after-complete が指定されている時、タブ補完の後に自動補完が有効になります。 その他の場合は、タブ補完の後に自動補完は有効になりません。

7.3.6 設定変数 complete_auto_menu (空/算術式) (v0.4)

# 既定値
bleopt complete_auto_menu=

自動メニュー (auto-menu) の遅延時間を設定します。 非空文字列が設定されている時、自動メニューが有効になります。 設定されている文字列を算術式として評価した結果を遅延時間 (単位はミリ秒) とします。 ユーザーが操作しない時間が遅延時間に達した時に、自動的にメニューを表示します。

7.3.7 描画設定 auto_complete (v0.3)

# 既定値
ble-face auto_complete='bg=254,fg=238'

自動補完に依って呈示されている文字列を表示するのに使われる描画設定です。

7.4 候補絞り込み (menu-filter) (Bash 4.0 以降) (v0.3)

Bash 4.0 以降で候補絞り込みが有効になります。 候補一覧を表示した状態で入力を続けると、 入力した内容に応じて候補が絞り込まれます。

7.4.1 設定変数 complete_menu_filter (空/非空) (v0.3)

# 既定値
bleopt complete_menu_filter=1

非空文字列が設定されている時、候補絞り込みが有効になります。 空文字列が設定されている時、候補絞り込みは無効化されます。

7.4.2 描画設定 menu_filter_fixed (v0.3)

# 既定値
ble-face menu_filter_fixed=bold

候補絞り込みの固定部分を表示するのに使う描画設定です。

7.4.3 描画設定 menu_filter_input (v0.3)

# 既定値
ble-face menu_filter_input='fg=16,bg=229'

候補絞り込みの編集範囲を表示するのに使う描画設定です。

7.5 静的略語展開 (sabbrev)

操作 編集関数 説明
SP magic-space 静的略語展開を含む各種展開を実行し空白を挿入
/ magic-slash 名前付きディレクトリ展開 (~ で始まる静的略語展開) を実行しスラッシュを挿入
M-', C-x ' (Emacs)
C-] (Vim)
sabbrev-expand 静的略語展開

静的略語展開は zsh-abbreviations のような機能を提供します。 静的略語展開は SP (編集関数 magic-space)、 または M-', C-x ' (Emacs), C-] (Vim) (編集関数 sabbrev-expand) によって実行されます。

7.5.1 関数 ble-sabbrev

# hook:complete_load

ble-sabbrev [-wmil] [KEY=VALUE|KEY=]...

ble-sabbrev は略語展開を登録する関数です。 各引数の一番左の = の左辺を KEY と解釈し、右辺を VALUE と解釈します。 単語 KEYVALUE に展開する略語展開を追加します。 VALUE を省略した場合、その KEY に設定された略語展開を削除します。

  • 単語静的略語: -w オプションを指定した時または何も展開の種類を指定しなかった時は、KEY は現在位置直前の単語に一致します。
  • 動的静的略語: -m オプションを指定した場合は、最初の = の右辺を COMMAND と解釈します。 展開時に COMMAND をシェルコマンドとして実行して生成された候補による補完を開始します。 COMMAND は 配列 COMPREPLY に単語候補を格納するか、 ble/complete/cand/yield 関数を用いて詳細を指定して候補を生成します。
  • インライン静的略語: -i オプションを指定した場合は、KEY は現在位置を終端とする任意の部分文字列に一致します。
  • 行静的略語: -l オプションを指定した場合は、KEY は現在行の現在位置以前の部分に一致します。
  • 末尾静的略語: -s オプションを指定した場合は、KEY は (既知のコマンド名 に一致しない) コマンド名の拡張子に一致します。KEY には拡張子を分けるための . は含みません。展開時に VALUE をコマンド名の前に挿入します。Zsh の suffix エイリアスに類似の機能です。
# hook:complete_load

# 設定例
ble-sabbrev L='| less'
ble-sabbrev '\date'='date +%F'

静的略語展開は Zsh の名前付きディレクトリの機能を模倣するのにも使えます。 Bash 自体はチルダ展開で ~named_dir (但し named_dir はユーザー名でない) を展開する機能はありませんが、 静的略語 ~name_dir が定義されている時、ble.sh では ~named_dir の直後に SP または / を入力することでコマンドライン上で展開を実行できます。

# hook:complete_load

# 設定例
ble-sabbrev "~mybin=$HOME/bin"
ble-sabbrev "~local=$HOME/.local"

7.6 動的略語展開

動的略語展開は、 現在の単語に前方一致する単語 (空白またはシェル変数 COMP_WORDBREAKS に含まれる文字で区切られた文字列) を履歴から検索して補完する機能です。 C-x C-r で動的略語展開を開始します。

操作 編集関数 説明
C-x C-r dabbrev-expand 動的略語展開の開始

動的略語展開を実行している時の操作は以下のようにします。

操作 編集関数 説明
C-r dabbrev/next 次の候補
C-s dabbrev/prev 前の候補
C-g dabbrev/cancel キャンセル
C-m, RET dabbrev/exit 確定
C-j, C-RET dabbrev/exit 確定して RET 実行
__default__ dabbrev/exit-default 確定して既定の動作を行う

[ 日本語 | English ] ≫ 説明書 [§1 基本 | §2 描画 | §3 束縛 | §4 編集 | §5 Emacs | §6 Vim | §7 補完 | §8 他]

Clone this wiki locally