Skip to content

説明書 §4 編集

Koichi Murase edited this page Dec 18, 2024 · 54 revisions

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

4. コマンドライン編集

4.1 文字入力

操作 編集関数 説明
__defchar__ self-insert 文字を挿入
M-C-m, M-RET (Emacs) newline 改行挿入
C-q, C-v quoted-insert 次のキー入力の文字をそのまま挿入
insert overwrite-mode 上書きモード・挿入モード切り替え
paste_begin bracketed-paste Bracketed Paste Mode 開始
__batch_char__ batch-insert 文字をまとめて挿入

4.2 選択範囲

現在位置の他にマークと呼ばれる位置が管理されます。 選択状態にある時、選択範囲はマークと現在位置の間の文字列と解釈されます。

操作 編集関数 説明
C-@, C-SP, NUL
M-SP (Emacs)
set-mark 現在位置にマークを設定して選択開始
C-x C-x exchange-point-and-mark 現在位置とマークを交換
C-w, S-delete kill-region-or kill-backward-uword 現在の選択範囲または uword (後述) を切り取り
M-w (Emacs)
C-insert
copy-region-or copy-backward-uword 現在の選択範囲または uword (後述) をコピー
C-y, S-insert yank 貼り付け

4.3 文字単位の移動・操作

操作 編集関数 説明
C-f, right forward-char 次の文字に移動
C-b, left backward-char 前の文字に移動
C-d, delete delete-region-or delete-forward-char 現在の選択範囲または次の文字を削除
C-?, DEL, C-h, BS delete-region-or delete-backward-char 現在の選択範囲または前の文字を削除
C-t transpose-chars 文字の交換
C-] (Emacs) character-search-forward 前方に文字を検索
M-C-] (Emacs) character-search-backward 後方に文字を検索

4.4 単語単位の移動・操作

ble.sh には5種類の単語があります。 eword はアルファベット・数字からなる英単語です。 cword は C の単語で、アルファベット・数字・アンダースコアからなる文字列です。 uword は Unix 単語で、シェル変数 IFS に含まれる文字 (または空白類) で区切られる文字列です。 sword はシェル単語で、空白類またはシェルの特殊文字で区切られる文字列です。 fword はファイル名で、シェル変数 IFS に含まれる文字 (または空白類) またはスラッシュ / で区切られる文字列です。

以下は既定で割り当てられている cword 単位の操作です。

操作 編集関数 説明
C-right
M-f (Emacs)
forward-cword 次の cword の先頭に移動
C-left
M-b (Emacs)
backward-cword 前の cword の末尾に移動
M-d (Emacs) kill-forward-cword 次の cword を切り取り
M-h (Emacs) kill-backward-cword 前の cword を切り取り
C-delete delete-forward-cword 次の cword を削除
C-_, C-DEL, C-BS delete-backward-cword 前の cword を削除

以下は既定で割り当てられている sword 単位の操作です。

操作 編集関数 説明
M-right (Emacs) forward-sword 次の sword の先頭に移動
M-left (Emacs) backward-sword 前の sword の末尾に移動
M-delete (Emacs) copy-forward-sword 前の sword をコピー
M-C-?, M-DEL, M-C-h, M-BS (Emacs) copy-backward-sword 前の sword をコピー

以下は eword 単位の操作です。

操作 編集関数 説明
M-c (Emacs) capitalize-eword 次の eword 末尾までをキャピタライズします。
M-l (Emacs) downcase-eword 次の eword 末尾までを小文字にします。
M-u (Emacs) upcase-eword 次の eword 末尾までを大文字にします。

他に空白に対する操作もあります。

操作 編集関数 説明
M-\ (Emacs) delete-horizontal-space 現在位置の周りの空白を全て削除

4.5 行単位の移動・操作

操作 編集関数 説明
C-a, home beginning-of-line 行頭に移動
C-e, end end-of-line 行末に移動
M-m (Emacs) non-space-beginning-of-line 非空白行頭に移動
C-k kill-forward-line 現在位置から行末までを削除
C-u kill-backward-line 現在位置から行頭までを削除

4.6 編集文字列の先頭・末尾

操作 編集関数 説明
C-home beginning-of-text 編集文字列の先頭に移動
C-end end-of-text 編集文字列の末尾に移動

4.7 シフト選択

シフト修飾キー S- を押したまま移動コマンドを実行することによって範囲選択をすることもできます。 通常の範囲選択と同様の操作でコピー・切り取り・貼り付けなどができます。

操作 編集関数 説明
S-C-f, S-right @marked forward-char 選択しつつ次の文字へ移動
S-C-b, S-left @marked backward-char 選択しつつ前の文字へ移動
S-C-right
M-S-f, M-F (Emacs)
@marked forward-cword 選択しつつ次の cword の先頭に移動
S-C-left
M-S-b, M-B (Emacs)
@marked backward-cword 選択しつつ前の cword の末尾に移動
M-S-right (Emacs) @marked forward-sword 選択しつつ次の sword の先頭に移動
M-S-left (Emacs) @marked backward-sword 選択しつつ前の sword の末尾に移動
S-C-a, S-home @marked beginning-of-line 選択しつつ行頭に移動
S-C-e, S-end @marked end-of-line 選択しつつ行末に移動
M-S-m, M-M (Emacs) @marked non-space-beginning-of-line 選択しつつ非空白行頭に移動
S-C-p, S-up @marked backward-line 選択しつつ前の行に移動
S-C-n, S-down @marked forward-line 選択しつつ次の行に移動
S-C-home @marked beginning-of-text 選択しつつ編集文字列の先頭に移動
S-C-end @marked end-of-text 選択しつつ編集文字列の末尾に移動

上記の何れかのキーを押すと選択を開始すると共に選択モードに入ります。 選択モードでは、以下のように、選択開始に用いるとの同じキー束縛が利用できます。

操作 編集関数 説明
S-C-f, S-right forward-char 選択を保持したまま次の文字へ移動
S-C-b, S-left backward-char 選択を保持したまま前の文字へ移動
S-C-right
M-S-f, M-F
forward-cword 選択を保持したまま次の cword の先頭に移動
S-C-left
M-S-b, M-B
backward-cword 選択を保持したまま前の cword の末尾に移動
M-S-right forward-sword 選択を保持したまま次の sword の先頭に移動
M-S-left backward-sword 選択を保持したまま前の sword の末尾に移動
S-C-a, S-home beginning-of-line 選択を保持したまま行頭に移動
S-C-e, S-end end-of-line 選択を保持したまま行末に移動
M-S-m, M-M non-space-beginning-of-line 選択を保持したまま非空白行頭に移動
S-C-p, S-up backward-line 選択を保持したまま前の行に移動
S-C-n, S-down forward-line 選択を保持したまま次の行に移動
S-C-home beginning-of-text 選択を保持したまま編集文字列の先頭に移動
S-C-end end-of-text 選択を保持したまま編集文字列の末尾に移動

4.8 キーボードマクロ

操作 編集関数 説明
C-x ( start-keyboard-macro マクロ記録の開始
C-x ) end-keyboard-macro マクロ記録の終了
C-x e call-keyboard-macro マクロの再生
C-x P print-keyboard-macro マクロの表示

4.9 履歴の移動 (history)

操作 編集関数 説明
C-prior
M-< (Emacs)
history-beginning 最初の履歴項目に移動
C-next
M-> (Emacs)
history-end 最後の履歴項目に移動
C-p, up backward-line history 前の行または前の履歴項目に移動
C-n, down forward-line history 次の行または次の履歴項目に移動

4.10 履歴の逐次検索 (isearch)

逐次検索の開始操作は以下の通りです。

操作 編集関数 説明
C-r history-isearch-backward 前方に逐次検索を開始
C-s history-isearch-forward 後方に逐次検索を開始

逐次検索中の操作は以下の通りです。

操作 編集関数 説明
__defchar__ isearch/self-insert 検索文字列に追記
C-r isearch/backward 前方に検索
C-s isearch/forward 後方に検索
C-?, DEL, C-h, BS isearch/prev 一つ前の検索状態に戻す
__default__ isearch/exit-default 検索を抜けて既定の動作を実行
C-g isearch/cancel キャンセルし検索前の状態に復元
C-m, RET isearch/exit 検索を確定し検索を終了
C-j, C-RET isearch/accept-line 検索を抜けて RET 実行
C-d isearch/exit-delete-forward-char 検索を抜けて削除

4.11 履歴の非逐次検索 (nsearch)

非逐次検索の開始操作は以下の通りです。

操作 編集関数 説明
prior, C-x C-p, C-x up history-search-backward 現在位置以前の文字列を前方に非逐次検索(先頭一致)
next, C-x C-n, C-x down history-search-forward 現在位置以前の文字列を後方に非逐次検索(先頭一致)
C-x p history-substring-search-backward 現在位置以前の文字列を前方に非逐次検索(部分一致)
C-x n history-substring-search-forward 現在位置以前の文字列を後方に非逐次検索(部分一致)
C-x < history-nsearch-backward ユーザ入力を取り前方に非逐次検索(先頭一致)
C-x > history-nsearch-forward ユーザ入力を取り後方に非逐次検索(先頭一致)

非逐次検索中の操作は以下の通りです。

操作 編集関数 説明
C-r, C-p, up nsearch/backward 前方に検索
C-s, C-n, down nsearch/forward 後方に検索
C-g nsearch/cancel キャンセル
C-m, RET nsearch/exit 確定
C-j, C-RET nsearch/accept-line 確定して RET を実行
__default__ nsearch/exit-default 確定して規定の動作を実行

4.11.1 編集関数 history-search

概要

  history-search OPTS
  history-search-backward OPTS
  history-search-forward OPTS
  history-substring-search-backward OPTS
  history-substring-search-forward OPTS
  history-nsearch-backward OPTS
  history-nsearch-forward OPTS
  history-nsearch-backward-again OPTS
  history-nsearch-forward-again OPTS

OPTS はコロン区切りのリスト

  backward, forward, substr, input, again, hide-status, immediate-accept
  action=ACTION, point=POINT, empty=EMPTY

ACTION

  goto, load, load-line, load-command, insert, insert-line

POINT

  begin, end, match-begin, match-end

EMPTY

  empty-search, previous-search, hide-status, history-move
  • history-search-forward OPTShistory-search forward:OPTS の別名です。
  • history-search-backward OPTShistory-search backward:OPTS の別名です。
  • history-substring-search-forward OPTShistory-search forward:substr:OPTS の別名です。
  • history-substring-search-backward OPTShistory-search backward:substr:OPTS の別名です。
  • history-nsearch-forward OPTShistory-search forward:input:OPTS の別名です。
  • history-nsearch-backward OPTShistory-search backward:input:OPTS の別名です。
  • history-nsearch-forward-again OPTShistory-search forward:again:OPTS の別名です。
  • history-nsearch-backward-again OPTShistory-search backward:again:OPTS の別名です。

目標文字列をコマンド履歴から検索します。 既定では、コマンドライン中のカーソルより前にある文字列が目標文字列と解釈されます。 引数に input / again オプション (後述) を指定して、ユーザーに目標文字列を入力させる事も可能です。 既定では、目標文字列から始まるコマンドを検索します。 引数に substr オプション (後述) を指定して、目標文字列を含むコマンドを検索する事も可能です。

OPTS は以下の値を含むコロン区切りのリストです。

  • backward (既定) ... 前方に検索を開始します (より新しい履歴項目を検索します)。
  • forward ... 後方に検索を開始します (より古い履歴項目を検索します)。
  • substr ... (目標文字列から始まる履歴項目の代わりに) 目標文字列を含む履歴項目を探します。
  • input ... 目標文字列をユーザーに対話的に入力させます。
  • again ... 前回ユーザーが対話的に入力した目標文字列を再利用します。
  • hide-status ... ((nsearch #N: << !M >>) `NEEDLE' の形式の) nsearch 状態表示を行いません。
  • immediate-accept ... (nsearch モード中で C-m または RET を押した時に既定で呼び出される) 編集関数 nsearch/exit に際して、単に nsearch を完了するだけでなく、即座にコマンドを実行します。
  • action=ACTION ... 目標文字列が見つかった時の動作を指定します。ACTION には以下の値の何れかを指定します。
    • goto (既定) ... 該当する履歴項目に移動します。
    • load ... 現在の履歴位置を移動せずに、該当する履歴項目の内容を現在履歴位置にコピーします。Bash の非逐次検索と同様の動作です。
    • load-line ... 現在の行を該当する履歴項目の内容で置き換えます。
    • load-command ... 文法に基づくコマンドを該当する履歴項目の内容をで置き換えます。
    • insert ... 現在位置に該当する履歴項目の内容を挿入します。
    • insert-line ... 現在位置に該当する履歴項目の内容を新しい行として挿入します。
  • point=POINT ... 目標文字列が見つかった後のカーソル位置を指定します。POINT には以下の値の何れかを指定します。
    • begin ... コマンドラインの先頭
    • end ... コマンドラインの末尾
    • match-begin ... 一致範囲の先頭
    • match-end (既定) ... 一致範囲の末尾
  • empty=EMPTY ... 目標文字列が空の時の動作を指定します。
    • empty-search (default) ... 空文字列を検索します。
    • hide-status ... 空文字列を検索しますが、nsearch 状態表示を隠します。
    • previous-search ... 前回の目標文字列を使って検索を開始します。
    • history-move ... 検索は開始せず単に次または前の履歴項目に移動します。 カーソルより前にある文字列が空文字列であり続ける為に、カーソル位置はコマンドライン先頭に移動します。

4.12 履歴の単語挿入 (lastarg)

操作 編集関数 説明
M-., M-_ (Emacs) insert-last-argument 前のコマンドの最後の引数を挿入
C-M-y (Emacs) insert-nth-argument 前のコマンドのN番目[最初]の引数を挿入

insert-last-argument を実行すると単語挿入 (keymap lastarg) モードに入ります。単語挿入モードでは以下の操作を使用できます。

操作 編集関数 説明
__default__ lastarg/exit-default 単語挿入を抜けて既定の動作を実行
C-g, C-x C-g,
C-M-g (Emacs)
lastarg/cancel 挿入単語を削除して単語挿入を抜ける
M-., M-_ (Emacs) lastarg/next N[1]個前の履歴項目の最後の引数に移動
M-C-u universal-arg 引数入力の開始・終了
M--, M-0, M-1, M-2, M-3, M-4, M-5, M-6, M-7, M-8, M-9 (Emacs) append-arg-or lastarg/exit-default 引数の指定
C--, C-0, C-1, C-2, C-3, C-4, C-5, C-6, C-7, C-8, C-9 append-arg-or lastarg/exit-default 引数の指定
-, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (Emacs) append-arg-or lastarg/exit-default 引数の指定

4.13 プロンプト文字列

ble.sh では PS1, PS2, PS0, bleopt prompt_rps1, read -p 等様々な場所で "プロンプト文字列" を指定できます。 通常の Bash の \... の形のエスケープシーケンス (プロンプトシーケンス) に加えて幾つかの拡張もされています。

4.13.1 プロンプトシーケンス \g{[TYPE:]SPEC} (v0.4)

描画属性を gspec 形式または ble-face face=[TYPE:]SPEC で用いられる形式で直観的に指定することができます。 TYPE として ble-face に指定できる物の他に copy と同義の face を使うことができます。

#
PS1='[\g{bold,fg=green}\u\g{none}@\g{bold,fg=navy}\h\g{none}]\$ '

4.13.2 ユーザー定義プロンプトシーケンス

function ble/prompt/backslash:X {
  ble/prompt/print STRING
  ble/prompt/process-prompt-string PROMPT_STRING
  ble/prmopt/unit/add-hash '$VARNAME'
}
PS1='[\X]\$ '

プロンプト文字列には Bash で定義されているプロンプトシーケンスに加えて、ユーザ定義のシーケンスも追加できます。 シェル関数 ble/prompt/backslash:X を定義すると \X というシーケンスをプロンプト文字列で使う事ができるようになります。 シェル関数の中では ble/prompt/print STRING または ble/prompt/process-prompt-string PROMPT_STRING を用いてプロンプトに挿入する文字列を追記します。前者は引数をそのまま文字列として挿入します。 後者は引数に含まれるプロンプトシーケンスやシェル展開を処理の対象とします。 また、ble/prompt/unit/add-hash '$VARNAME' を指定する事で任意の変数に対する依存性を宣言する事ができます。 変数の内容に変更があった場合にプロンプトを自動的に再更新します。

またプロンプトシーケンス \q{NAME ARGS...} (v0.4) を用いれば 名前付きプロンプトシーケンスを引数付きで呼び出す事ができます。 名前付きプロンプトシーケンスは、シェル関数 ble/prompt/backslash:NAME ARGS... を呼び出す事によって処理されます。

# 例: ユーザ定義シーケンス hello を定義して呼び出す
function ble/prompt/print {
  ble/prompt/process-prompt-string "Hello, ${1:-world}!"
}
PS1='[\q{hello $USER}]\$ '

4.13.3 プロンプトシーケンス \q{row} (v0.4)

コマンドライン内における現在の行番号に展開されます。

\q{row}  # 展開例: 1

4.13.4 プロンプトシーケンス \q{column} (v0.4)

コマンドライン内における現在の列番号に展開されます。

\q{column}  # 展開例: 5

4.13.5 プロンプトシーケンス \q{position} (v0.4)

コマンドライン内における現在の行番号と列番号に展開されます。第一引数にprintf書式を指定できます。

\q{position}           # 展開例: (1,5)
\q{position %s行%s列}  # 展開例: 1行5列

4.13.6 プロンプトシーケンス \q{point} (v0.4)

コマンドライン文字列内における現在位置のオフセットに展開されます。

\q{point}  # 展開例: 3

4.13.7 プロンプトシーケンス \q{mark} (v0.4)

コマンドライン文字列内におけるマーク位置のオフセットに展開されます。

\q{mark}  # 展開例: 0

4.13.8 プロンプトシーケンス \q{history-index} (v0.4)

コマンド履歴内における現在位置の履歴番号に展開されます。

\q{history-index}  # 展開例: 0

4.13.9 プロンプトシーケンス \q{history-percentile} (v0.4)

コマンド履歴内における現在位置を表す百分率に展開されます。

\q{history-percentile}  # 展開例: 100%

4.14 プロンプト

PS1, PS2PS0 などの Bash の標準的なプロンプトに加えて、ble.sh ではこの節で挙げている様々なプロンプトを利用できます。 以下の編集モード固有のプロンプトもご参照ください。

4.14.1 設定変数 prompt_rps1 (プロンプト文字列) (v0.3)

# 既定値
bleopt prompt_rps1= # ble-0.4
bleopt rps1=        # ble-0.3 (互換性 obsolete)

右プロンプトを指定します。

# 時刻を表示する設定例
bleopt prompt_rps1='\t'

4.14.2 設定変数 prompt_ps1_final (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_ps1_final=

非空文字列が設定されている時、 新しい行に移動する直前にプロンプトの内容をこの値に置き換えます。

4.14.3 設定変数 prompt_ps1_transient (空/コロン区切りリスト) (v0.4)

# 既定値
bleopt prompt_ps1_transient=

always, same-dir, trim のコロン区切りリストです。 prompt_ps1_final が空でかつこの設定に非空文字列が設定されている場合、 新しい行に移動する時に PS1 によって表示されたプロンプトを消去します。 値に trim が入っている時、複数行 PS1 の最後の行だけが残されて他は削除されます。 それ以外の場合は恰も PS1= のようにコマンドラインを再描画します。 値に same-dir が含まれていてかつ現在のディレクトリが前回のコマンドラインのディレクトリと異なる時、 この設定変数は無視されます。

4.14.4 設定変数 prompt_rps1_final (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_rps1_final=

非空文字列が設定されている時、 新しい行に移動する直前に右プロンプトの内容をこの値に置き換えます。

4.14.5 設定変数 prompt_rps1_transient (空/非空) (v0.3)

# 既定値
bleopt prompt_rps1_transient= # ble-0.4
bleopt rps1_transient=        # ble-0.3 (互換性 obsolete)

prompt_rps1_final が空でかつ非空文字列が設定されている場合、 新しい行に移動する時に設定変数 prompt_rps1 によって表示されている右プロンプトを消去します。

4.14.6 設定変数 prompt_xterm_title (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_xterm_title=

非空文字列が設定されている時、PS1 の表示直前に OSC 0 ; ... BEL を用いて端末のタイトルを指定した内容に設定します。

4.14.7 設定変数 prompt_screen_title (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_screen_title=

GNU screen や tmux などの端末マルチプレクサの内部で動作している時に有効です。 非空文字列が設定されている時、PS1 の表示直前に ESC k ... ST を用いて端末マルチプレクサのウィンドウタイトルを指定した内容に設定します。

4.14.8 設定変数 prompt_term_status (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_term_status=

terminfo tsl (termcap ts) と terminfo fsl (termcap ds) が登録されている時に有効です。 非空文字列が設定されている時、PS1 の表示直前に ステータス行を指定した内容に設定します。

4.14.9 設定変数 prompt_status_line (プロンプト文字列) (v0.4)

# 既定値
bleopt prompt_status_line=

端末の最下行に表示するステータス行の内容を指定します。 プロンプト文字列として評価した結果として空文字列になった場合には、ステータス行は無効化されます。

ステータス内の文字列配置および背景スタイルの制御については、以下の二つの設定 (bleopt prompt_status_alignble-face prompt_status_line) もご参照ください。

4.14.10 設定変数 prompt_status_align (列挙) (v0.4)

# 既定値
bleopt prompt_status_align=$'justify=\r'

ステータス行の内容の表示位置を指定します。 left, right, center, justify=CHAR の何れかの値を指定する事ができます。 justify=CHAR (CHAR はユーザー指定の文字) を指定した時は、 プロンプト展開の結果を文字 CHAR で分割して両端を揃えるように行内で配置します。

4.14.11 描画設定 prompt_status_line (v0.4)

# 既定値
ble-face prompt_status_line='fg=231,bg=240'

ステータス行の背景の描画属性を指定します。

4.15 編集・コマンド実行に関係する設定変数

4.15.1 設定変数 indent_offset (算術式) (v0.2)

# 既定値
bleopt indent_offset=4

インデントの幅を指定します。

4.15.2 設定変数 indent_tabs (算術式) (v0.2)

# 既定値
bleopt indent_tabs=1

インデントにタブ文字を使用するかどうかを指定します。 0 を指定した時に空白のみでインデントします。 それ以外の時にインデントにタブ文字を使用します。

4.15.3 設定変数 edit_forced_textmap (算術式) (v0.2)

# 既定値
bleopt edit_forced_textmap=1

移動操作 (up, down) などにおいて、 必ず文字の配置を考慮した操作を行う事を指定します。 0 を指定した時は、文字の配置情報が最新の時にのみ配置情報を利用します。 それ以外の時、文字の配置情報が最新でなければ文字の配置情報を更新して利用します。

4.15.4 設定変数 edit_line_type (列挙) (v0.4)

# 既定値
bleopt edit_line_type=logical

行頭・行末への移動などの操作を行う時の行の解釈を制御します。 logical が設定されている時、論理行で解釈します。 つまり編集文字列内の改行文字で区切られた行頭・行末を使用して操作を行います。 graphical が設定されている時、表示行で解釈します。 つまり端末内での現在行の行頭・行末を使用して操作を行います。

4.15.5 設定変数 edit_magic_expand (コロン区切りのリスト) (v0.4)

# 既定値
bleopt edit_magic_expand=history:sabbrev

magic-space で行う展開の種類をコロン区切りのリストで指定します。 値として historysabbrevaliasautocd を指定できます。

4.15.6 設定変数 edit_magic_opts (コロン区切りのリスト) (v0.4)

# 既定値
bleopt edit_magic_opts=

編集関数 magic-space の振る舞いをコロン区切りのリストで調整します。 inline-sabbrev-no-insert を指定すると、行われた展開がインライン略語展開 (inline sabbrev)の時に SP の挿入が省略されます。

4.15.7 設定変数 edit_magic_accept (Colon-separated list) (v0.4)

# 既定値
bleopt edit_magic_accept=verify-syntax

accept-line の際に実行される展開をコロン区切りのリストで指定します。展開は Bashの標準の履歴展開と同様に行われます。値 sabbrevaliasautocdhistory が指定されている時、それぞれ静的略語展開・エイリアス展開・autocd展 開・履歴展開が実行しようとしているコマンド文字列に対して適用されます。history による履歴展開は、シェルのset -H による履歴展開と同一の物です。値 verify が 指定されている時、静的略語展開・エイリアス展開・autocd展開が実際にコマンド文 字列を変化させた時に、ユーザーが展開結果を確認または続けて編集できるように、コ マンド実行を一旦中断します。履歴展開については shopt -s histverify を用いて同 様に制御できます。値 verify-syntax が指定されている時、展開がコマンド文字列を 変化させた場合に文法チェックを行います。文法的に間違っている場合、コマンド実行 をキャンセルします。値 history-line が指定されている時、履歴展開は単に展開結 果を出力するのではなく、他の展開と同様に実際にコマンドラインを置き換えます。

4.15.8 設定変数 delete_selection_mode (空/非空) (v0.2)

# 既定値
bleopt delete_selection_mode=1

非空文字列が設定されている場合、 選択範囲がある時に文字挿入で選択範囲の文字列を削除してから文字を挿入します。 空文字列が設定されている場合、選択範囲を解除してから現在位置に文字を挿入します。

4.15.9 設定変数 undo_point (v0.2)

# 既定値
bleopt undo_point=end

undo が実行された直後のカーソル位置を指定します。 end を指定した場合、変更範囲の末端にカーソルを移動します。 beg を指定した場合、変更範囲の先頭にカーソルを移動します。 それ以外の場合、状態が記録された時のカーソル位置を復元します。

4.15.10 設定変数 history_preserve_point (空/非空)

# 既定値
bleopt history_preserve_point=

履歴移動 (既定の updown など) を行った後のカーソル位置を指定します。 非空文字列が設定されている場合、できるだけ移動前のカーソル位置を保持します。 移動後の文字列が移動前のカーソル位置よりも短い時は、移動後の文字列の末尾に移動します。 空文字列が設定されている場合、 履歴移動でより昔の履歴に遡った時は最終行の行末に、 より最近の履歴に下った時は最初の行の行末に移動します。

4.15.11 設定変数 term_cursor_external (算術式) (v0.2)

# 既定値
bleopt term_cursor_external=0

外部コマンドを実行する時のカーソルの形状を DECSCUSR の引数として設定します。 terminfo (または termcap) に Ss が登録されている時に有効です。 terminfo に登録されていない場合でも端末が DECSCUSR に対応している場合には、 blerc に以下を記述して下さい。

_ble_term_Ss=$'\e[@1 q'

4.15.12 設定変数 term_stty_restore (空/非空) (v0.4)

# 既定値
bleopt term_stty_restore=

非空文字列を設定した時に TTY 状態の復元が有効になります。この設定を有効が有効の 時、ble.sh はコマンド終了時の TTY 状態を保存し次のコマンド開始前に TTY 状態を 復元します。この設定を有効にした場合、stty コマンドを余分に実行するためのオー バーヘッドが生じます。

Warning

この設定を有効にしていると、直前のコマンドが TTY 状態を破壊した場合、その影響が後 続のコマンドにも残ります。

この設定を ~/.blerc または ~/.bashrc で有効化する時、PROMPT_COMMAND な どの行エディタ内部状態で source ~/.bashrcble-updateble-reload などを実行すると問題が置きます。これは ble.shterm_stty_restore を設定 した時点での TTY 状態を初期の外部TTY状態として使用するためです。もし source ~/.bashrcble-updateble-reload が内部状態で実行されると、その時の TTY 状態が初期の TTY 外部状態として使われることになります。

4.15.13 設定変数 allow_exit_with_jobs (空/非空) (v0.3)

# 既定値
bleopt allow_exit_with_jobs=

空文字列が設定されている場合、ジョブが残っている場合には delete-forward-char-or-exit (既定 C-d) でシェルを終了しません。 非空文字列が設定されている場合、ジョブが残っている場合でもシェルを終了します。

4.15.14 設定変数 prompt_eol_mark (ANSI制御シーケンス) (v0.3)

# 既定値
bleopt prompt_eol_mark=$'\e[94m[ble: EOF]\e[m'

コマンドが行頭で終了しなかった時に表示する文字列を指定します。

4.15.15 設定変数 prompt_ruler (空/列挙/ANSI制御シーケンス) (v0.4)

# 既定値
bleopt prompt_ruler=

powerlevel10k の POWERLEVEL9K_PROMPT_{ADD_NEWLINE,SHOW_RULER,RULER_*} の様に、前のコマンドとプロンプトの間に表示する分割行の設定を指定します。 空文字列が設定されている時、分割行は無効です。これが既定値です。 値 empty-line が設定されている時、空行が挿入されます。 その他の値が指定されている時、それは ANSI制御シーケンスとして解釈され、行を埋めるのに繰り返し使用されます。

4.15.16 設定変数 prompt_command_changes_layout (空/非空) (v0.4)

# 既定値
bleopt prompt_command_changes_layout=

PRECMD フックまたは PROMPT_COMMAND 配列に指定されたコマンドが端末に文字列を出力してレイアウトを変更するかどうかを指定します。 非空文字列が指定されている時、ble.sh は現在のレイアウトを初期化してから PRECMD 及び PROMPT_COMMAND を実行しその後で再び端末のレイアウトを復元します。 空文字列が指定されている時、ble.sh はレイアウトの調整を行わず直接 PRECMD 及び PROMPT_COMMAND を実行します。

4.15.17 設定変数 exec_restore_pipestatus (空/非空) (v0.4)

# 既定値
bleopt exec_restore_pipestatus=

# PIPESTATUS を復元
bleopt exec_restore_pipestatus=1

非空文字列が設定されている時、ble.sh は次のユーザーコマンドを実行する直前に前回のユーザーコマンド実行後の PIPESTATUS を復元します。 余分な実行コストがかかるため、既定ではこの機能はオフになっています。 同じ情報はこの設定にかかわらず BLE_PIPESTATUS 配列を通して常に参照可能です。

4.15.18 設定変数 edit_marker (ANSI制御シーケンス) (v0.4)

# 既定値
bleopt edit_marker=$'\e[94m[ble: %s]\e[m'

ble.sh が通常の通知に用いるマーカー ([ble: ...] など) の既定のスタイルを指定します。 空文字列が指定されている時、(マーカーに続いて追加情報が表示される場合を除き) マーカーは無効化されます。 既定のスタイルは exec_elapsed_markexec_exit_mark などの設定によって個別に上書きされます。

4.15.19 設定変数 edit_marker_error (ANSI制御シーケンス) (v0.4)

# 既定値
bleopt edit_marker_error=$'\e[91m[ble: %s]\e[m'

ble.sh が通常の通知に用いるマーカー ([ble: ...] など) の既定のスタイルを指定します。 空文字列が指定されている時、(マーカーに続いて追加情報が表示される場合を除き) マーカーは無効化されます。 既定のスタイルは exec_errexit_mark などの設定によって個別に上書きされます。

4.15.20 設定変数 exec_errexit_mark (ANSI制御シーケンス) (v0.4)

# 既定値
bleopt exec_errexit_mark=$'\e[91m[ble: exit %d]\e[m'

コマンドの終了ステータスが非零の時に表示する文字列を指定します。 この設定が空文字列の時、終了ステータスの表示は行いません。

4.15.21 設定変数 exec_elapsed_mark (ANSI制御シーケンス) (v0.4)

# 既定値
bleopt exec_elapsed_mark=$'\e[94m[ble: elapsed %s (CPU %s%%)]\e[m'

コマンド実行時間の統計を表示する際の書式を指定します。 この書式に対して二つの引数が指定されます。一つ目は経過時間を表す文字列です。二つ目はCPU使用率を表す数です。

4.15.22 設定変数 exec_elapsed_enabled (算術式) (v0.4)

# 既定値
bleopt exec_elapsed_enabled='usr+sys>=10000'

コマンド実行時間の統計を表示する条件を算術式で指定します。評価結果が非零の時に統計が表示されます。 算術式の内部では変数 real, {usr,sys}{,_self,_child}, cpu を参照できます。 real は実際の経過時間を表します。 usrsys はそれぞれ消費したユーザー時間及びシステム時間表します。 その内、メインのシェルおよび子プロセスで消費された時間は接尾辞 _self_child によって参照できます。 cpu は CPU 使用率を百分率(整数)で表します。(usr+sys)*100/real で計算される値です。 その他の時間変数はすべてミリ秒単位です。

4.15.23 設定変数 exec_exit_mark (ANSI制御シーケンス) (v0.4)

# 既定値
bleopt exec_exit_mark=$'\e[94m[ble: exit]\e[m'

シェルセッションが終了する時に出力する文字列を指定します。

4.15.24 設定変数 history_share (空/非空) (v0.4)

# 既定値
bleopt history_share=

非空文字列が設定されている時、コマンドが実行される度に $HISTFILE と履歴の同期を行います。

4.15.25 設定変数 info_display (列挙) (v0.4)

# 既定値
bleopt info_display=top

情報ペイン (補完候補一覧、モード名などの表示領域) の表示位置を制御します。 top が指定されている時、情報ペインは編集文字列の直下に表示されます。 bottom が指定されている時、情報ペインは端末の最下部に表示されます。

4.15.26 設定変数 accept_line_threshold (算術式) (v0.4)

# 既定値
bleopt accept_line_threshold=5

編集関数 accept-single-line-or-newline の単一行モードにおける振る舞いを制御します。 負の整数に評価された時、常にコマンドを実行します。 0 に評価された時、ユーザの入力がある場合は改行を挿入して複数行モードに入ります。 正の整数 n の時、未処理のユーザ入力が n 以上の時に改行を挿入して複数行モードに入ります。

4.15.27 設定変数 line_limit_type (列挙) (v0.4)

# 既定値
bleopt line_limit_type=none

コマンドライン中の文字数が line_limit_length で指定した容量を超過した時の振る舞いを指定します。 値 none は超過チェックを実施しない事を示します。 値 discard は超過して挿入しようとした文字列を破棄することを示します。 値 truncate は超過した分だけ編集文字列の末尾から削除することを示します。 値 editor は文字を挿入した後に編集関数 edit-and-execute によりエディタを起動して編集する事を示します。

Note

editor を指定する場合は設定 bleopt history_limit_lengthbleopt line_limit_length 以下にすることが推奨されます。 これは、長い履歴項目によって履歴移動中にエディタが起動するのを防ぐためです。

4.15.28 設定変数 line_limit_length (算術式) (v0.4)

# 既定値
bleopt line_limit_length=10000

コマンドライン文字数の上限を指定します。 0以下の値は文字数に制限を与えない事を示します。

4.15.29 設定変数 history_limit_length (算術式) (v0.4)

# 既定値
bleopt history_limit_length=10000

履歴に登録するコマンドの最大文字数を指定します。 正の値を持つ時、この値を超える長さのコマンドは履歴に登録されません。 0以下の値に評価される時は、コマンドの長さに拘らず履歴に登録が為されます。

4.15.30 設定変数 history_erasedups_limit (空/算術式) (v0.4)

# 既定値
bleopt history_erasedups_limit=0

erasedups の操作 (HISTCONTROL に指定されている時に実行される) の際の、コマンド履歴内の対象範囲を制限します。 空文字列が指定されている時は、plain Bash の時と同様にコマンド履歴全体が erasedups の対象範囲です。 算術式として正の整数 count に評価された時は、対象範囲はコマンド履歴の末尾 count 項目となります。 0以下の整数 offset に評価された時は、offset は対象範囲の開始位置を〈ble.sh 開始後に追加された最初の履歴項目からの相対位置〉で指定します。 対象範囲の終端点は常にコマンド履歴の終端です。


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

Clone this wiki locally