テキスト上でのカーソル移動は特殊キーを用いる操作以外は ほとんど vim と同じはずです。 (一部古い挙動のままだったりするものもありますが)
┌──────────────────↑──────────────────┐
│ ↑ [CTRL-B] ページアップ │
│ [H] ページ先頭行 │
│ ↑ │
│ [CTRL-U] 半ページアップ │
│ [w]→ 次の単語 │
│ [e]──→ 次の単語末尾 上 │
│ ←─[b] 前の単語 ↑ │
│ □□ △△ ○○○○○... [k] ...○○○○○○○○○○○○○○│
│←[0] ←[^] 左 ←[h] [l]→ 右 [$]→│
│行頭 ↑ 行頭の文字 [j] 行末 │
│ [M] ページ中央 ↓ │
│ 下 │
│ │
│ [CTRL-D] 半ページダウン │
│ ↓ │
│ [L] ページ最下行 │
│ ↓ [CTRL-F] ページダウン │
└──────────────────↓──────────────────┘
| 特殊キー | normal コマンド | 説明 | 備考 |
|---|---|---|---|
| ↑ | k | 上へ移動 | |
| ↓ | j | 下へ移動 | |
| ← | h | 左へ移動 | |
| → | l | 右へ移動 | |
| HOME | 0 | 行頭へ移動 | |
| ^ | (空白でない)行の先頭文字へ移動 | ||
| END | $ | 行末移動 | |
| CTRL+HOME | 1G | ファイル先頭へ移動 | |
| CTRL+END | G | ファイル末尾へ移動 | |
| PageDown | CTRL+F | ページダウン | Forward page |
| PageUp | CTRL+B | ページアップ | Backward page |
| CTRL+PageDown | CTRL+D | 半ページダウン (CTRL+PageDown はウィンドウ移動が無効時のみ) | Down half page |
| CTRL+PageUp | CTRL+U | 半ページアップ (CTRL+PageUp はウィンドウ移動が無効時のみ) | Up half page |
| CTRL+→ | w | 次のワードの先頭へ移動 (CTRL+→ はウィンドウ移動が無効時のみ) | (next)word |
| CTRL+← | b | 現在の(あるいは前の)ワードの先頭へ移動 (CTRL+← はウィンドウ移動が無効時のみ) | back to word |
| e | 現在の(あるいは次の)ワード末尾へ移動 | end of word | |
| W | (空白区切りで)次のワードの先頭へ移動 | (next)Word | |
| B | (空白区切りで)現在の(あるいは前の)ワードの先頭へ移動 | Back to word | |
| E | (空白区切りで)現在の(あるいは次の)ワード末尾へ移動 | End of word | |
| H | 現在の画面中の最上段の行に移動 | High | |
| M | 現在の画面の中央の行に移動 | Middle | |
| L | 現在の画面の最下段の行に移動 | Low | |
| z または zt | 現在のカーソル行が画面の最上段にくるように表示をずらす。 | top | |
| z. または zz | 現在のカーソル行が画面の中央にくるように表示をずらす。 | ||
| z- または zb | 現在のカーソル行が画面の最下段にくるように表示をずらす。 | bottom | |
| zh | 水平方向の左へ画面の表示をずらす。(水平スクロール) | ||
| zl | 水平方向の右へ画面の表示をずらす。(水平スクロール) | ||
| zH | 水平方向の左へ画面の表示をずらす。(水平スクロール、画面幅の半分) | ||
| zL | 水平方向の右へ画面の表示をずらす。(水平スクロール、画面幅の半分) |
以下のパラメータで W, B, E コマンドの挙動を変えることができます。
| パラメータ | 省略形 | 形式 | 説明 | 初期値 | 備考 |
|---|---|---|---|---|---|
| wordskip | wds | 数値 | W, B, E コマンドの単語移動の境界を指定します。 | 0 | uvw固有 |
| wordskip値 | 説明 | 備考 |
|---|---|---|
| 0 | デフォルト(空白境界) | |
| 1 | ASCII/非ACSII/空白が境界 | |
| 2 | ASCII/非ACSII/記号/空白が境界 | |
| 3 | fieldseparator が境界 |
基本的な編集コマンドは vim と同じです。 以下にはとりあえずよく使われそうなものを記載します。
| normal コマンド1 | normal コマンド2 | 説明 | 備考 |
|---|---|---|---|
| x | 文字削除 | ||
| dd | 行削除 | ||
| yy | 行コピー | ||
| p or P | 貼り付け | ||
| J | 行の連結 |
オペレータコマンド
cdyQ<>!=
Visualモードでオペレータとなるコマンド
CDRrSsUuXxY~
カーソル移動のコマンドの大部分が該当するはずです。。
jkhl0^$wbeWBEHML
<n>G
HOME, END, CTRL+HOME, CTRL+END
↑↓←→
つまり、<operator> + <motion> でオペレータの動作をモーション範囲に適用、 という動作になります。
カーソル位置からのワード削除の例
dw
カーソル位置からの行末までコピー
y$
カーソル位置からの行頭まで削除
d0
カーソル位置からのファイル先頭まで削除
d<CTRL+HOME>
| 特殊キー | normal コマンド | 説明 | 備考 |
|---|---|---|---|
| SHIFT+矢印 | v (その後移動) | 範囲選択(文字単位) | visual |
| V (その後移動) | 範囲選択(行単位) | Visual line | |
| ALT+矢印 | CTRL+V (その後移動) | 範囲選択(ブロック単位) | Visual block |
文字単位の選択

行単位の選択

ブロック単位の選択

| 特殊キー1 | 特殊キー2 | normal コマンド1 | normal コマンド2 | 説明 | 備考 |
|---|---|---|---|---|---|
| ALT+C | CTRL+Ins (map) | {visual}"*y | {visual}gC | クリップボードへコピー | copy(yank) |
| ALT+X | {visual}"*x | {visual}gX | クリップボードへ切り取り | (cut) | |
| ALT+V | SHIFT+Ins (map) | "*p | gV | クリップボードから貼り付け | (paste) |
| DEL | {visual}d | 削除 | delete | ||
| CTRL+DEL | d$ | 行末まで削除 | |||
| SHIFT+DEL | dw | de | ワード末尾まで削除 | ||
| CTRL+BS | d0 | 行頭まで削除 | |||
| SHIFT+BS | db | ワード先頭まで削除 |
テキストオブジェクトも一応実装しています。 ただ、元々 jvim にはなかった機能を独自に実装したので 挙動が違うところがあるかも知れません。
| normal コマンド | 説明 | 備考 |
|---|---|---|
| di' | '' で囲まれた中を削除します。 | delete in '' |
| ci( | () で囲まれた中を変更します。 | change in () |
| yi[ | [] で囲まれた中をコピーします。 | yank in [] |
| da' | '' で囲まれた範囲を '' を含めて削除します。 | delete around '' |
| ca( | () で囲まれた範囲を () を含めて変更します。 | change around () |
| ya[ | [] で囲まれた範囲を [] を含めて削除します。 | yank around [] |
本エディタでは簡易的な surround 機能を組み込みで実装しています。 ただ、やはり独自に組み込んだものですので 一部挙動の解釈が異なっているものがあるかも知れません。 故意に変えてあるものは後述します。
surround パラメータを有効にすることで利用可能になります。 (uvwrc の設定では最初から有効にしています。)
:set surround
無効にするには
:set nosurround
| normal コマンド | 説明 | 備考 |
|---|---|---|
| ds' | カーソル位置の文を囲んでいる ' を消す。 | delete surround ' |
| cs'" | カーソル位置を囲んでいる ' を " に変更します。 | change surround ' " |
| {visual}S' | Visual 選択した部分を ' で囲みます。 | Surround ' |

オブジェクト単位での移動には次のようなものがあります。
この辺の操作方法は vim とほとんど同じです。
但し、実装は独自ですので一部挙動の解釈が異なっているものがあるかも知れません。
| normal コマンド | 説明 | 備考 |
|---|---|---|
| % | 対応する括弧に移動します。 | |
| ) | 次のセンテンスに進みます。(次の文の区切りに進むのによく使います) | 非互換 |
| ( | 前のセンテンスに戻ります。(前の文の区切りに戻るのによく使います) | 非互換 |
| } | 次のパラグラフに進みます。(次の空行に進むのによく使います) | |
| { | 前のパラグラフに戻ります。(前の空行に戻るのによく使います) | |
| ]] | 次のセクションに進みます。(次の { で始まる行まで進むのによく使います) | |
| [[ | 前のセクションに戻ります。(前の { で始まる行まで戻るのによく使います) | |
| ][ | <}> で始まる次のセクションに進みます。(次の } で始まる行まで進むのによく使います) | |
| [] | <}> で始まる前のセクションに戻ります。(前の } で始まる行まで戻るのによく使います) | |
| [( [{ | 閉じていない前の <(> <{> に戻ります。(現在の {} ブロックの先頭に飛ぶのによく使います) | |
| ]) ]} | 閉じていない次の <(> <{> に進みます。(現在の {} ブロックの末尾に飛ぶのによく使います) | |
| [m ]m | 前/次のメソッドの始めに移動します。 | 追加(非互換) |
| [M ]M | 前/次のメソッドの終わりに移動します。 | 追加(非互換) |
| [# ]# | 閉じていない前/次のプリプロセッサ制御文に移動します。 | 追加 |
| [/ [* | ブロックコメントの始めに移動します。 | 追加 |
| ]/ ]* | ブロックコメントの終わりに移動します。 | 追加 |
| [c | ブロックコメントの始めに移動します。 | uvw固有 |
| ]c | ブロックコメントの終わりに移動します。 | uvw固有 |
以下のパラメータで [[, ]] コマンドの挙動を変えることができます。
| パラメータ | 省略形 | 形式 | 説明 | 初期値 | 備考 |
|---|---|---|---|---|---|
| smartbracket | sbkt | 二値 | [[, ]] コマンドで行頭にない { にもジャンプするようになります。 | nosmartbracket | uvw固有 |
int main(void)
{ ← デフォルトでは行頭に { がある箇所にしかジャンプしませんが。
printf("Hello, World!\n");
}
int main(void) { ← smartbracket でこのようなケースでもジャンプ可能になります。
printf("Hello, World!\n");
}

本エディタでは ctags や global コマンドの出力結果によるタグジャンプ機能を備えています。
| normal コマンド | 説明 | 備考 |
|---|---|---|
| ^] | カーソル下の単語をタグとしてジャンプする。 | |
| ^T | 過去のタグジャンプを遡る。 | |
| g^] | tagprg に指定されたコマンドを実行する。 | uvw固有 |
| g^T | tagrefprg に指定されたコマンドを実行する。 | uvw固有 |

本エディタでは上記に加えて、以下のようなジャンプを実装しています。
| normal コマンド | 説明 | 備考 |
|---|---|---|
| [0 ]0 | (空行を飛ばして)インデントのない行の行頭へ移動します。 | uvw固有 |
| [^ ]^ | (空行を飛ばして)インデントレベルの一段浅い行の行頭へ移動します。 | uvw固有 |
