Skip to content
Koichi Murase edited this page Dec 10, 2023 · 27 revisions

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

6. Vim 編集モード

Vim 編集モードでは挿入モード (vi_imap) が基底のキーマップになり、 そこから様々なキー操作によってノーマルモード (vi_nmap)、オペレータ待機モード (vi_omap)、 ビジュアルモード (vi_xmap)、選択モード (vi_smap)、コマンドモード (vi_cmap) などの各モードに入ります。 vi_imap に於ける操作の多くは「4. コマンドライン編集」に載っています。

6.1 共通コマンド

6.1.1 引数 (count)

vi_nmap, vi_omap, vi_xmap に於いて後続の操作に対する整数引数を設定します。

操作 widget
0 vi-command/append-arg
1 vi-command/append-arg
2 vi-command/append-arg
3 vi-command/append-arg
4 vi-command/append-arg
5 vi-command/append-arg
6 vi-command/append-arg
7 vi-command/append-arg
8 vi-command/append-arg
9 vi-command/append-arg

未だ引数が設定されていない時、0 は後述の移動コマンドとして行頭への移動を行います。 1 から 9 までは新しく引数を設定します。 既に引数が設定されている時、0 から 9 までは既存の整数引数に新しい桁を追加します。 引数がどのように解釈されるかは後続の操作に依存します。

6.1.2 レジスタ (register)

vi_nmap, vi_xmap に於いて後続の操作に対して使用するレジスタを設定します。

操作 widget 説明
" {char} vi-command/register レジスタの指定

6.1.3 オペレータ (operator)

vi_nmap, vi_omap, vi_xmap で各種オペレータが利用可能です。 vi_nmap でオペレータを実行すると、そのオペレータを記録して vi_omap に入ります。 vi_xmap でオペレータを実行すると、選択範囲に対してオペレータを作用させます。 vi_omap でオペレータを実行すると、記録されたオペレータと一致する場合に、現在行に対してオペレータを作用させます。

操作 widget 説明
y vi-command/operator y コピー
d
x, delete (vi_xmap)
vi-command/operator d 切り取り
c
s (vi_xmap)
vi-command/operator c 切り取り、挿入モードへ
< vi-command/operator indent-left インデントを減らす
> vi-command/operator indent-right インデントを増やす
! vi-command/operator filter フィルタコマンドにかける
g ~
~ (vi_omap/vi_xmap)
vi-command/operator toggle_case 英小文字・大文字の切り替え
g u
u (vi_omap/vi_xmap)
vi-command/operator u 英小文字に
g U
U (vi_omap/vi_xmap)
vi-command/operator U 英大文字に
g ?
? (vi_omap)
vi-command/operator rot13 英字を簡易暗号化
g q
q (vi_omap)
vi-command/operator fold 適当な幅で改行を挿入
g w vi-command/operator fold-preserve-point 適当な幅で改行を挿入し、元の位置に
g @ vi-command/operator map bleopt keymap_vi_operatorfunc 参照

6.1.4 移動コマンド (motion)

移動コマンドは現在位置を移動するコマンドでオペレータと組み合わせて使うこともできます。 移動コマンドは vi_nmap, vi_omap, vi_xmap で利用可能です。 vi_nmap 及び vi_xmap で移動コマンドを実行した時は対応する位置に移動します。 vi_omap で移動コマンドを実行した時は、 現在位置から移動先までを作用対象として、vi_omap に入る時に設定されたオペレータを適用し、vi_nmap に戻ります。

行頭・行末への移動に関係する操作

操作 widget type
home vi-command/beginning-of-line exclusive
$, end vi-command/forward-eol inclusive
^ vi-command/first-non-space exclusive
_ vi-command/first-non-space-forward linewise
+, C-m, RET vi-command/forward-first-non-space linewise
- vi-command/backward-first-non-space linewise
g 0, g home vi-command/beginning-of-graphical-line exclusive
g ^ vi-command/graphical-first-non-space exclusive
g $, g end vi-command/graphical-forward-eol inclusive
g m vi-command/middle-of-graphical-line exclusive
g _ vi-command/last-non-space inclusive

文字単位の移動に関係する操作

操作 widget type
h, left vi-command/backward-char exclusive
l, right vi-command/forward-char exclusive
C-?, DEL, C-h, BS vi-command/backward-char wrap exclusive
SP vi-command/forward-char wrap exclusive

行単位の移動に関係す操作

操作 widget type
j, down, C-n, C-j vi-command/forward-line linewise
k, up, C-p vi-command/backward-line linewise
g j, g down vi-command/graphical-forward-line exclusive
g k, g up vi-command/graphical-backward-line exclusive

単語単位の移動に関係する操作

操作 widget type
w vi-command/forward-vword exclusive
W vi-command/forward-uword exclusive
b vi-command/backward-vword exclusive
B vi-command/backward-uword exclusive
e vi-command/forward-vword-end inclusive
E vi-command/forward-uword-end inclusive
g e vi-command/backward-vword-end inclusive
g E vi-command/backward-uword-end inclusive
C-right vi-command/forward-vword exclusive
S-right vi-command/forward-vword exclusive
C-left vi-command/backward-vword exclusive
S-left vi-command/backward-vword exclusive

その他の移動に関係する操作

操作 widget type 説明
g o vi-command/nth-byte exclusive N[1]バイト目を含む文字の直前
| vi-command/nth-column exclusive N[1]列目
H vi-command/nth-line linewise/jump 上からN[1]行目の非空白行頭
L vi-command/nth-last-line linewise/jump 下からN[1]行目の非空白行頭
g g vi-command/history-beginning linewise N個目[最初]の履歴項目 (nmap) / N行目[1行目]の非空白行頭 (omap)
G vi-command/history-end linewise N個目[最後]の履歴項目 (nmap) / N行目[最終行]の非空白行頭 (omap)
C-home vi-command/first-nol linewise N行目[1行目]の非空白行頭
C-end vi-command/last-eol inclusive N行目[最終行]の行末

対応する括弧に移動する操作

操作 widget type
% vi-command/search-matchpair-or vi-command/percentage-line inclusive or linewise

引数が設定されていない場合、対応する括弧の位置に移動します。 引数が設定されている場合、引数を百分率と解釈して、編集文字列内の対応する行に移動します。

文字の検索に関連する操作

操作 widget type
f vi-command/search-forward-char inclusive
F vi-command/search-backward-char exclusive
t vi-command/search-forward-char-prev inclusive
T vi-command/search-backward-char-prev exclusive
; vi-command/search-char-repeat exclusive
, vi-command/search-char-reverse-repeat exclusive

文字列の検索に関連する操作

操作 widget type
/ vi-command/search-forward exclusive
? vi-command/search-backward exclusive
n vi-command/search-repeat exclusive
N vi-command/search-reverse-repeat exclusive
* vi-command/search-word-forward exclusive
# vi-command/search-word-backward exclusive

マークに移動する操作

操作 widget type
` {char} vi-command/goto-mark exclusive
' {char} vi-command/goto-mark line exclusive

6.1.5 テキストオブジェクト (txtobj)

テキストオブジェクトは vi_omap 及び vi_xmap で利用可能です。 vi_omap で実行した場合は、指定の範囲を対象として、記録されたオペレータを作用します。 vi_xmap で実行した場合は、指定の範囲を含むように選択範囲を拡張します。

操作 widget
i {char} vi-command/text-object-inner
a {char} vi-command/text-object-outer
{char} 説明
w 単語(同種文字の連続)
W 単語(非空白文字の連続)
" 引用符で囲まれた範囲
' 引用符で囲まれた範囲
` 引用符で囲まれた範囲
(, ), b 括弧 () で囲まれた範囲
{, }, B 括弧 {} で囲まれた範囲
<, > 括弧 <> で囲まれた範囲
[, ] 括弧 [] で囲まれた範囲
t HTMLタグで囲まれた範囲
s 文(ピリオド区切り)
p 段落(二重改行区切り)

6.1.6 その他

以下は vi_nmap, vi_omap, vi_xmap で使用可能です。

操作 widget 説明
: vi-command/commandline コマンドラインモード

以下は vi_nmap, vi_omap, vi_xmap, vi_smap の何れでも使用可能です。

操作 widget 説明
C-z (shell command) fg fg コマンドの実行
paste_begin vi-command/bracketed-paste (内部用途)

6.2 各モードのコマンド

6.2.1 挿入モード (vi_imap)

挿入モードには細かく見ると (通常の) 挿入モード、置換モード、仮想置換モードがあります。 挿入モードのキー操作は以下を除いて殆ど「4. コマンドライン編集」で述べたものと同様です。

モード変更

操作 widget 説明
insert vi_imap/overwrite-mode 置換モード
ESC, C-[ vi_imap/normal-mode ノーマルモード
C-c vi_imap/normal-mode-without-insert-leave ノーマルモード (特殊動作キャンセル)
C-o vi_imap/single-command-mode 単一コマンドモード

編集

操作 widget 説明
C-w vi_imap/delete-backward-word 単語削除
SP magic-space 各種展開を実行の後にスペース挿入
/ magic-slash 名前付きディレクトリ展開 (~ で始まる静的略語展開) を実行の後にスラッシュ挿入

シェル操作

操作 widget 説明
C-j, C-RET accept-line コマンド実行
C-m, RET accept-single-line-or-newline 状況によりコマンド実行または改行挿入
C-g, C-\, C-^ bell ベル・キャンセル
C-l clear-screen 画面再描画
f1 command-help 現在位置のコマンドのヘルプを表示
C-x C-v display-shell-version シェルバージョンを表示
C-x C-e edit-and-execute-command コマンドを編集して実行

内部用途

操作 widget
__attach__ vi_imap/__attach__
__default__ vi_imap/__default__
__before_widget__ vi_imap/__before_widget__

6.2.2 ノーマルモード (vi_nmap)

ノーマルモードには通常のノーマルモードの他に単一コマンドモードがあります。 単一コマンドモードではコマンドを一つ実行すると元の挿入モードに戻ります。

キャンセル

操作 widget 説明
ESC, C-[ vi-command/bell ベル
C-c vi-command/cancel キャンセル

モード切替に関する操作

操作 widget 説明
C-\ C-n nop vi_nmap (何もしない)
a vi_nmap/append-mode vi_imap 挿入モード @現在の文字の後
A vi_nmap/append-mode-at-end-of-line vi_imap 挿入モード @行末
i, insert vi_nmap/insert-mode vi_imap 挿入モード @現在の文字の前
I vi_nmap/insert-mode-at-first-non-space vi_imap 挿入モード @非空白の行頭
g I vi_nmap/insert-mode-at-beginning-of-line vi_imap 挿入モード @行頭
o vi_nmap/insert-mode-at-forward-line vi_imap 挿入モード @次に新しい行
O vi_nmap/insert-mode-at-backward-line vi_imap 挿入モード @前に新しい行
R vi_nmap/replace-mode vi_imap 置換モード
g R vi_nmap/virtual-replace-mode vi_imap 仮想置換モード
g i vi_nmap/insert-mode-at-previous-point vi_imap 前回の位置
v vi_nmap/charwise-visual-mode vi_xmap ビジュアルモード
V vi_nmap/linewise-visual-mode vi_xmap 行ビジュアルモード
C-v, C-q vi_nmap/blockwise-visual-mode vi_xmap 矩形ビジュアルモード
g v vi-command/previous-visual-area vi_xmap 前回のビジュアルモード
g h vi_nmap/charwise-select-mode vi_smap 選択モード
g H vi_nmap/linewise-select-mode vi_smap 行選択モード
g C-h vi_nmap/blockwise-select-mode vi_smap 矩形選択モード

行単位の操作

操作 widget 説明
Y vi_nmap/copy-current-line 現在の行をコピー
S vi_nmap/kill-current-line-and-insert 現在行を切り取り、挿入モードに
D vi_nmap/kill-forward-line 行末まで切り取る
C vi_nmap/kill-forward-line-and-insert 行末まで切り取り、挿入モードに
J vi_nmap/connect-line-with-space 行をスペースで連結
g J vi_nmap/connect-line 行を連結

スクロール

操作 widget 説明
C-d vi-command/forward-line-scroll N行[半画面]次の行に移動してスクロール
C-e vi-command/forward-scroll N行[半画面]だけ次にスクロール
C-u vi-command/backward-line-scroll N行[半画面]前の行に移動してスクロール
C-y vi-command/backward-scroll N行[半画面]だけ前にスクロール
C-f, next vi-command/pagedown N頁[1頁]次に移動してスクロール
C-b, prior vi-command/pageup N頁[1頁]前に移動してスクロール

文字単位の操作

操作 widget 説明
~ vi_nmap/forward-char-toggle-case 大文字小文字を切り替えてN[1]文字進む
x, delete vi_nmap/kill-forward-char 現在の文字を削除
s vi_nmap/kill-forward-char-and-insert 現在の文字を削除して、挿入モードに
X vi_nmap/kill-backward-char 前の文字を削除
r vi_nmap/replace-char 現在の文字を置換
g r vi_nmap/virtual-replace-char 現在の文字を仮想置換

整数の操作

操作 widget 説明
C-a vi_nmap/increment 整数をN[1]増やす
C-x vi_nmap/decrement 整数をN[1]減らす

レジスタ・貼り付け・記録・再生

操作 widget 説明
p vi_nmap/paste-after 現在位置の次に挿入
P vi_nmap/paste-before 現在位置の前に挿入
q {char} vi_nmap/record-register マクロの記録開始
@ {char} vi_nmap/play-register マクロの再生

やり直し・繰り返し

操作 widget 説明
. vi_nmap/repeat 直前の編集を繰り返し
u vi_nmap/undo 元に戻す
C-r vi_nmap/redo やり直す
U vi_nmap/revert 完全に元に戻す

マーク

操作 widget 説明
m {char} vi-command/set-mark 現在位置にマーク

再描画・情報表示

操作 widget
z t vi_nmap/scroll-to-top-and-redraw
z z vi_nmap/scroll-to-center-and-redraw
z b vi_nmap/scroll-to-bottom-and-redraw
z RET, z C-m vi_nmap/scroll-to-top-non-space-and-redraw
z + vi_nmap/scroll-or-pagedown-and-redraw
z - vi_nmap/scroll-to-bottom-non-space-and-redraw
z . vi_nmap/scroll-to-center-non-space-and-redraw
C-g vi-command/show-line-info

シェルの操作

操作 widget 説明
C-j, C-RET accept-line コマンド実行
C-m, RET accept-single-line-or vi-command/forward-first-non-space 状態に応じてコマンド実行または改行挿入
C-l clear-screen 再描画
C-d vi-command/exit-on-empty-line 空文字列の時、シェルを終了。他の時、C-e と同じ
K, f1 vi_nmap/command-help 現在位置のコマンドのヘルプを表示
Z Z, Z Q vi-command:q シェルを終了する

内部用途

操作 widget
__default__ vi-command/decompose-meta
auto_complete_enter auto-complete-enter

6.2.3 オペレータ待機モード (vi_omap)

操作 widget 説明
C-\ C-n nop (何もしない)
ESC, C-[, C-c vi_omap/cancel キャンセル
v vi_omap/switch-to-charwise 作用対象をinclusive/exclusive反転して文字指向に
V vi_omap/switch-to-linewise 作用対象を行指向に
C-v, C-q vi_omap/switch-to-blockwise 作用対象を矩形範囲に
__default__ vi_omap/__default__ (内部用途)

6.2.4 ビジュアルモード (vi_xmap)

ビジュアルモードには細かく見ると (文字指向の) ビジュアルモード、行ビジュアルモード、矩形ビジュアルモードがあります。

モード変更

操作 widget 説明
ESC, C-[ vi_xmap/exit 終了
C-c, C-\ C-n, C-\ C-g vi_xmap/cancel キャンセル
v vi_xmap/switch-to-charwise ビジュアルモード
V vi_xmap/switch-to-linewise 行ビジュアルモード
C-v, C-q vi_xmap/switch-to-blockwise 矩形ビジュアルモード
g v vi-command/previous-visual-area 前回のビジュアルモードの状態
C-g vi_xmap/switch-to-select 選択モード

移動

操作 widget 説明
o vi_xmap/exchange-points 現在位置と開始点を交換
O vi_xmap/exchange-boundaries 左右の境界を交換 (矩形ビジュアルモード)、他の場合は上に同じ

コピー・貼り付け・矩形挿入

操作 widget 説明
C vi_xmap/replace-block-lines 行末まで内容を削除して挿入 (文字指向なら行指向に変換)
D, X vi_xmap/delete-block-lines 行末まで内容を削除 (文字指向なら行指向に変換)
S, R vi_xmap/delete-lines 行指向で内容を削除
Y vi_xmap/copy-block-or-lines 行末まで内容をコピー (文字指向なら行指向に変換)
I vi_xmap/insert-mode 前に挿入
A vi_xmap/append-mode 後に挿入
p vi_xmap/paste-after 後に貼り付けて、内容を切り取り
P vi_xmap/paste-before 前に貼り付けて、内容を切り取り

範囲内の変換

操作 widget 説明
r {char} vi_xmap/visual-replace-char 範囲内の文字を置換
J vi_xmap/connect-line-with-space 行連結 (スペース区切り)
g J vi_xmap/connect-line 行連結
C-a vi_xmap/increment 範囲内の整数をN[1]増やす
C-x vi_xmap/decrement 範囲内の整数をN[1]減らす
g C-a vi_xmap/progressive-increment 範囲内のk番目の整数をN[1]*k増やす
g C-x vi_xmap/progressive-decrement 範囲内のk番目の整数をN[1]*k減らす

シェルの操作

操作 widget 説明
f1, K vi_xmap/command-help 現在位置のコマンドのヘルプを表示する

内部用途

操作 widget
__default__ vi-command/decompose-meta

6.2.5 選択モード (vi_smap)

選択モードには細かく見ると (文字指向の) 選択モード、行選択モード、矩形選択モードがあります。

モード変更

操作 widget 説明
ESC, C-[ vi_xmap/exit 終了
C-c, C-\ C-n, C-\ C-g vi_xmap/cancel キャンセル
C-\ C-n nop (何もしない)
C-v, C-q vi_xmap/switch-to-visual-blockwise 矩形ビジュアルモード
C-g vi_xmap/switch-to-visual ビジュアルモード

移動: 文字単位

操作 widget
left vi_smap/@nomarked vi-command/backward-char
right vi_smap/@nomarked vi-command/forward-char
C-?, DEL, C-h, BS vi_smap/@nomarked vi-command/backward-char wrap
SP vi_smap/@nomarked vi-command/forward-char wrap
S-left vi-command/backward-char
S-right vi-command/forward-char
S-C-?, S-DEL, S-C-h, S-BS vi-command/backward-char wrap
S-SP vi-command/forward-char wrap

移動: 単語単位

操作 widget
C-right vi_smap/@nomarked vi-command/forward-vword
C-left vi_smap/@nomarked vi-command/backward-vword
S-C-right vi-command/forward-vword
S-C-left vi-command/backward-vword

移動: 行頭・行末

操作 widget
home vi_smap/@nomarked vi-command/beginning-of-line
end vi_smap/@nomarked vi-command/forward-eol
C-m, RET vi_smap/@nomarked vi-command/forward-first-non-space
S-home vi-command/beginning-of-line
S-end vi-command/forward-eol
S-C-m, S-RET vi-command/forward-first-non-space

移動: 行単位

操作 widget
down, C-n, C-j vi_smap/@nomarked vi-command/forward-line
up, C-p vi_smap/@nomarked vi-command/backward-line
C-home vi_smap/@nomarked vi-command/nth-line
C-end vi_smap/@nomarked vi-command/last-line
S-down, S-C-n, S-C-j vi-command/forward-line
S-up, S-C-p vi-command/backward-line
S-C-home vi-command/nth-line
S-C-end vi-command/last-line

編集

操作 widget 説明
__defchar__ vi_smap/self-insert 選択範囲を削除して文字挿入
delete, C-?, DEL, C-h, BS vi-command/operator d 選択範囲を削除
C-a vi_xmap/increment 範囲内の整数を1増やす
C-x vi_xmap/decrement 範囲内の整数を1減らす

シェルの操作

操作 widget 説明
f1 vi_xmap/command-help 現在位置のコマンドのヘルプを表示

内部用途

操作 widget
__default__ vi-command/decompose-meta

6.3 Vim 編集モードの設定

Vim 編集モードの設定は hook keymap_vi_load 経由で実行することができます。

# blerc (例)

function my/vim-load-hook {
  bleopt keymap_vi_mode_string_nmap=$'\e[1m-- NORMAL --\e[m'
  source "$_ble_base/lib/vim-surround.sh"
}

blehook/eval-after-load keymap_vi my/vim-load-hook
# ble-0.3以前
# ble/array#push _ble_keymap_vi_load_hook my/vim-load-hook

6.3.1 設定 ble-bind -m vi_?map --cursor VALUE (空/整数) (v0.2)

これらの設定は各モードにおけるカーソルの形状を制御します。 設定変数 term_cursor_external と同様の指定方法です。

旧設定変数 keymap_vi_?map_cursorble-bind -m KEYMAP --cursor CODE を使用する様に変更されました。 ble-bind の関連する記述も御確認下さい。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
ble-bind -m vi_cmap --cursor ''
ble-bind -m vi_imap --cursor ''
ble-bind -m vi_nmap --cursor ''
ble-bind -m vi_omap --cursor ''
ble-bind -m vi_smap --cursor ''
ble-bind -m vi_xmap --cursor ''
# ble-0.3以前
bleopt keymap_vi_cmap_cursor=
bleopt keymap_vi_imap_cursor=
bleopt keymap_vi_nmap_cursor=
bleopt keymap_vi_omap_cursor=
bleopt keymap_vi_smap_cursor=
bleopt keymap_vi_xmap_cursor=

# 設定例
ble-bind -m vi_cmap --cursor 0
ble-bind -m vi_imap --cursor 5
ble-bind -m vi_nmap --cursor 2
ble-bind -m vi_omap --cursor 4
ble-bind -m vi_smap --cursor 2
ble-bind -m vi_xmap --cursor 2

6.3.2 設定変数 term_vi_?map (v0.2)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt term_vi_cmap=
bleopt term_vi_imap=
bleopt term_vi_nmap=
bleopt term_vi_omap=
bleopt term_vi_smap=
bleopt term_vi_xmap=

これらの設定変数は各モードに入った時に端末に送信するシーケンスを設定します。

6.3.3 設定変数 keymap_vi_keymodel (v0.2)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_keymodel=

選択モードにおける移動コマンドの振る舞いを制御します。 カンマ区切りの単語のリストです。 単語 stopsel が含まれている時、 選択モードの移動コマンドで選択モードを抜けます。

6.3.4 設定変数 keymap_vi_macro_depth (v0.2)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_macro_depth=64

キーボードマクロ再生の再帰の深さの上限を指定します。

6.3.5 設定変数 keymap_vi_mode_update_prompt (空/非空) (v0.4)

モード変更時にプロンプトの再計算を実行するかどうかを指定します。 非空文字列の時にプロンプトの再計算を実行します。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_mode_update_prompt=

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

Info行に配置されるモード表示の内容をプロンプト文字列で指定します。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt prompt_vi_mode_indicator='\q{keymap:vi/mode-indicator}'

6.3.7 プロンプトシーケンス \q{keymap:vi/mode-indicator} (v0.4)

現在の Vim モード表示に展開されます。

\q{keymap:vi/mode-indicator}  # 展開例: -- INSERT --

6.3.8 設定変数 keymap_vi_mode_show (空/非空) (v0.4)

モード表示 \q{keymap:vi/mode-indicator} を有効化するかどうかを制御します。 空文字列が指定されている時 \q{keymap:vi/mode-indicator} は空文字列に展開されます。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_mode_show=1

6.3.9 設定変数 keymap_vi_mode_name_* (v0.4)

\q{keymap:vi/mode-indicator} で使うモード名を指定します。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_mode_name_insert='INSERT'
bleopt keymap_vi_mode_name_replace='REPLACE'
bleopt keymap_vi_mode_name_vreplace='VREPLACE'
bleopt keymap_vi_mode_name_visual='VISUAL'
bleopt keymap_vi_mode_name_select='SELECT'
bleopt keymap_vi_mode_name_linewise='LINE'
bleopt keymap_vi_mode_name_blockwise='BLOCK'

# 例 (日本語名)
bleopt keymap_vi_mode_name_{insert=挿入,replace=置換,vreplace=仮想置換}
bleopt keymap_vi_mode_name_{visual=ビジュアル,select=選択}
bleopt keymap_vi_mode_name_{linewise=行,blockwise=矩形}

6.3.10 設定変数 keymap_vi_mode_string_nmap (v0.2)

ノーマルモードで \q{keymap:vi/mode-indicator} で使用するモード名を指定します。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_mode_string_nmap=$'\e[1m~\e[m' # ble-0.4
bleopt keymap_vi_nmap_name=$'\e[1m~\e[m'        # ble-0.2 (互換性)

例えば、他のモードと同様に明示的にモード名を表示するには以下の様にします。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

bleopt keymap_vi_mode_string_nmap=$'\e[1m-- NORMAL --\e[m

または、ノーマルモードではモード名を表示しないという場合には以下の様にします。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

bleopt keymap_vi_mode_string_nmap=

6.3.11 設定変数 keymap_vi_operatorfunc (v0.2)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_operatorfunc=

オペレータ g@ で呼び出すオペレータ名を指定します。 関数 ble/keymap:vi/operator:$value ($value はこの変数に指定された値) がオペレータの実装として使用されます。

6.3.12 設定変数 keymap_vi_search_match_current (空/非空) (v0.2)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_search_match_current=

非空文字列が設定されている時 /, ?, n, N で 現在のカーソルの下にある単語に一致します。 空文字列が設定されている時は vim の振る舞いに倣います。

6.3.13 設定変数 keymap_vi_imap_undo (v0.3)

undo を記録する頻度を制御します。more を設定すると vi_imap に於ける様々な動作の折に undo を記録します。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

# 既定値
bleopt keymap_vi_imap_undo=

# 設定例
bleopt keymap_vi_imap_undo=more

6.4 モジュール lib/vim-surround

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

ble-import lib/vim-surround

6.4.1 設定変数 vim_surround_omap_bind (空/非空)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-surround"

# 既定値
bleopt vim_surround_omap_bind=1

空文字列の時、vi_nmap で直接に各種のオペレータを束縛します。 非空文字列の時、 取り敢えず y, d, c に於いてオペレータ待機モードに入り、 オペレータ待機モードの s, S で各オペレータに委譲を行います。

6.4.2 設定変数 vim_surround_整数, vim_surround_? (v0.2)

指定した文字に対応する囲み文字列を設定します。 vim_surround_整数 の形式の設定では整数で指定される文字コードの文字に対する設定になります。 それ以外の vim_surround_? の形式を用いる時、文字 ? に対する設定になります。 設定値が CR ($'\r') を含む時、最初の CR より前の部分が左囲み文字列として使われ、 最初の CR より後の部分が右囲み文字列として使われます。 設定値が CR を含まない時、その設定値がそのまま左右の共通の囲み文字列として使われます。

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-surround"

# 既定値
bleopt vim_surround_45:=$'$(\r)'
bleopt vim_surround_61:=$'$((\r))'
bleopt vim_surround_Q:=\"
bleopt vim_surround_q:=\'

6.5 モジュール lib/vim-arpeggio

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

ble-import lib/vim-arpeggio

6.5.1 設定変数 vim_arpeggio_timeoutlen 整数

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-arpeggio"

# 既定値
bleopt vim_arpeggio_timeoutlen=40

以降の ble/lib/vim-arpeggio.sh/bind の際に使用する timeout (単位: ミリ秒) を指定します。

6.5.2 関数 ble/lib/vim-arpeggio.sh/bind

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-arpeggio"

# 使用法
ble/lib/vim-arpeggio.sh/bind [-m KEYMAP] -[fxcs@] KEYS COMMAND

KEYS にはキーの組み合わせを指定します。C-S-M-A-s-H- 等の修飾子とキー二文字の組み合わせです。 例えば KEYSjk を指定した場合は jk の二つのキーを同時に押した時の束縛を設定します。 また KEYSC-df を指定した場合は C-dC-f を同時に入力した時の束縛を設定します。

6.6 モジュール lib/vim-airline (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load

ble-import lib/vim-airline

6.6.1 設定変数 vim_airline_theme (Enumerate) (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-airline"

# 既定値
bleopt vim_airline_theme=dark

airline のテーマを指定します。 利用できるテーマ名は contrib/airlinnnne/*.bash のファイル名をご参照下さい。

6.6.2 設定変数 vim_airline_section_? (Prompt string) (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-airline"

# 既定値
bleopt vim_airline_section_a='\e[1m\q{lib/vim-airline/mode}'
bleopt vim_airline_section_b='\q{lib/vim-airline/gitstatus}'
bleopt vim_airline_section_c='\w'
bleopt vim_airline_section_x='bash'
bleopt vim_airline_section_y='$_ble_util_locale_encoding[unix]'
bleopt vim_airline_section_z=' \q{history-percentile} \e[1m!\q{history-index}/\!\e[22m \q{position}'

これらの設定は airline の対応するセクションの内容を指定します。 ariline 内のセクションは左から順に a, b, c, x, y, z になります。

6.6.3 設定変数 vim_airline_{left,right}{,_alt}_sep (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-airline"

# 既定値
bleopt vim_airline_left_sep=$'\uE0B0'
bleopt vim_airline_left_alt_sep=$'\uE0B1'
bleopt vim_airline_right_sep=$'\uE0B2'
bleopt vim_airline_right_alt_sep=$'\uE0B3'

セクション境界に用いられる文字を指定します。 left 及び right を含む設定は、それぞれ a-c 及び c-z の間のセクション境界に使われます。 2つの同じ背景色のセクションの境界には名前に sep を含む設定が使われます。 それ以外の場合には、sep を含まない設定が使われます。

6.6.4 設定変数 vim_airline_symbol_branch (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-airline"

# 既定値
bleopt vim_airline_symbol_branch=$'\uE0A0'

ブランチ名の前に表示される文字を指定します。

6.6.5 設定変数 vim_airline_symbol_dirty (v0.4)

[ 注意: 以下の設定は keymap_vi_load フックを通して設定する必要があります。 この節の初めのコード例 を御覧ください。 ]

# hook:keymap_vi_load after importing "lib/vim-airline"

# 既定値
bleopt vim_airline_symbol_dirty=$'\u26A1'

リポジトリに変更がある時にブランチ名の後に表示される文字を指定します。

6.6.6 描画設定 vim_airline_{a,b,c,x,y,z,error,term,warning}{,_normal,_insert,_replace,_visual,_commandline,_inactive}{,_modified} (v0.4)

# 既定値
ble-face -s vim_airline_a       fg=17,bg=45
ble-face -s vim_airline_b       fg=231,bg=27
ble-face -s vim_airline_c       fg=231,bg=18
ble-face -s vim_airline_x       ref:vim_airline_c
ble-face -s vim_airline_y       ref:vim_airline_b
ble-face -s vim_airline_z       ref:vim_airline_a
ble-face -s vim_airline_error   fg=16,bg=88
ble-face -s vim_airline_term    fg=158,bg=234
ble-face -s vim_airline_warning fg=16,bg=166

それぞれのセクションの様々な状態の描画属性を指定します。


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

Clone this wiki locally