ノーマルモード(編集・移動)

移動

テキスト上でのカーソル移動は特殊キーを用いる操作以外は ほとんど 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>

範囲選択(Visual モード)

特殊キー normal コマンド 説明 備考
SHIFT+矢印 v (その後移動) 範囲選択(文字単位) visual
V (その後移動) 範囲選択(行単位) Visual line
ALT+矢印 CTRL+V (その後移動) 範囲選択(ブロック単位) Visual block

文字単位の選択

行単位の選択

ブロック単位の選択

Visual モードからの編集操作

特殊キー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 ワード先頭まで削除

text-objects 機能

テキストオブジェクトも一応実装しています。 ただ、元々 jvim にはなかった機能を独自に実装したので 挙動が違うところがあるかも知れません。

normal コマンド 説明 備考
di' '' で囲まれた中を削除します。 delete in ''
ci( () で囲まれた中を変更します。 change in ()
yi[ [] で囲まれた中をコピーします。 yank in []
da' '' で囲まれた範囲を '' を含めて削除します。 delete around ''
ca( () で囲まれた範囲を () を含めて変更します。 change around ()
ya[ [] で囲まれた範囲を [] を含めて削除します。 yank around []

surround パラメータ

本エディタでは簡易的な 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");
    }

タグジャンプ (^] ^T g^] g^T)

本エディタでは ctags や global コマンドの出力結果によるタグジャンプ機能を備えています。

normal コマンド 説明 備考
^] カーソル下の単語をタグとしてジャンプする。
^T 過去のタグジャンプを遡る。
g^] tagprg に指定されたコマンドを実行する。 uvw固有
g^T tagrefprg に指定されたコマンドを実行する。 uvw固有

インデントジャンプ ([0 ]0 [^ ]^)

本エディタでは上記に加えて、以下のようなジャンプを実装しています。

normal コマンド 説明 備考
[0 ]0 (空行を飛ばして)インデントのない行の行頭へ移動します。 uvw固有
[^ ]^ (空行を飛ばして)インデントレベルの一段浅い行の行頭へ移動します。 uvw固有

戻る