vimのノーマルモードのコマンドまとめ(その1)の続き
g,z打鍵が必要なノーマルモードのコマンドのまとめ
version
vim 7.4.2210
コマンドのタイプ
あくまで、主観です。
gx(xは任意のキー入力)のコマンドの種類
- オプション的:gxとxが類似動作
- それ以外:xと無関係
zxのコマンドの種類
- 縦カーソル
- 折り畳み動作
- スペルチェック
- 水平カーソル
- その他
Index
gx
| g^ g0 g$ | g# g* | g& | g` g' | g+ g- | g, g; | gm | g8 | g< | g? g?? g? | g@ |
| gCtrl + a | gCtrl + g | gh gH gCtrl + h | g] gCtrl + ] | g_ |
| ga | gd gD | ge gE | gf gF | gi gI | gj | gk | gJ | gg | gn gN | go | gp gP |
| gq | gQ | gr gR | gs | gt gT | gu gU g~ | gv | gw | gx |
| g<Home> | g<End> | g<Up> | g<Down>|
zx
| z<Enter> zt z. zz z- zb | z+ z^ | z= |
| zg zG zw zW zug zuG zuw zuW | za zA zc zC zm zM zo zO zr zR zv zx |
| zf zF zd zD zE | zn zN zi | zj zk |
| zl z<Left> zh z<Right> zH zL ze zs |
| z[数値]<Enter> |
コマンドタイプ毎
g:オプション的(gxとxが類似動作)
| g^ g0 g$ | g# g* | g& | g` g' |
| gCtrl + g | g] gCtrl + ] | g_ |
| ge gE | gi gI | gj | gk | gJ | gn gN | gp gP |
| gQ | gr gR | g~ | gv |
| g<Home> | g<End> | g<Up> | g<Down>|
g:それ以外
| g+ g- | g, g; | gm | g8 | g< |
| g? g?? g? | g@ | gCtrl + a | gh gH gCtrl + h |
| ga | gd gD | gf gF | gg | go |
| gq | gs | gt gT | gu gU | gw | gx |
z:縦カーソル
| z<Enter> zt z. zz z- zb | z+ z^ |
z:スペルチェック
| z= | zg zG zw zW zug zuG zuw zuW |
z:折り畳み動作
| zf zF zd zD zE | zn zN zi | zj zk |
z:水平カーソル
| zl z<Left> zh z<Right> zH zL ze zs |
z:その他
| z[数値]<Enter> |
g^ g0 g$
g^
画面上で表示している行の非空白文字の左端へ移動
※ ^:非空白文字の行頭へ移動(折り返し、見切れに依存しない)
g0
画面上で表示している行の左端へ移動
※ 0:行頭へ移動(折り返し、見切れに依存しない)
g$
画面に表示している行の右端へ移動
※ $:行末へ移動(折り返し、見切れに依存しない)
g# g*
g#:現在位置から最も近い単語文字列の後方検索を実行
g*:現在位置から最も近い単語文字列の前方検索を実行
# *との違い
- # *:単語検索
- g# g*:単語文字列検索
例えば)
g#(またはg*)でor
という単語の検索を実行した場合、word
内のor
も検索対象となる
g&
最後に実行した置換処理をフラグ保持して再実行する
※ &:最後に実行した置換処理をフラグ保持せず再実行する
例えば)
:s/aa/bb/cg
で置換を実行し後に
&で置換処理を再実行した場合は:s/aa/bb/
となるのに対し、g&は:s/aa/bb/cg
となる
g` g'
g`x:マークxに移動
g'x:マークxの行頭位置へ移動
※' `と同様に動作
` 'との違い
- ` ':ジャンプリストを変更する
- g` g':ジャンプリストを変更しない
g+ g-
g+
新しいテキスト状態に移動
g-
古いテキスト状態に移動
補足
undo実行後にテキスト編集した後もg-
を使うことで、undo実行前の状態に戻ることができる
例えば
- edit1,..,edit4操作でテキスト編集
- undo機能により、edit2操作でテキスト編集した状態まで戻る
- 「2.」の状態から、edit5,edit6操作でテキスト編集
と操作した場合、テキストの編集履歴は以下の様になる。
edit1 - edit2 - edit5 - edit6
\
edit3 - edit4
このとき、g-
を2回実行することでedit6->edit5->edit4
となり、edit4操作のテキスト編集状態に戻ることができる。
また、再度edit6操作のテキスト編集状態に戻りたい場合はg+
を2回実行すれば良い
参考:
Undoを管理する
g, g;
g,
変更リストの前の位置にカーソルを移動する
g;
変更リストの後の位置にカーソルを移動する
補足
- vimでは変更時、カーソル位置の履歴を変更リストに蓄積する
- 変更リストはコマンドにて、
:changes
により確認できる
gm
画面表示している行文字列の中央に移動
g8
カーソル位置の文字バイト列を16進数で表示
g<
前のコマンドの出力内容を表示する
例)
-
:reg
より、レジスタの一覧確認 -
g<
で再確認
g? g?? g?g?
g?[移動系コマンド]
[移動系コマンド]の範囲の文字列をRot13でエンコードする
g?? g?g?
現在行をRot13でエンコードする
参考
g@
g@[移動系コマンド]で[移動系コマンド]の範囲に:set operatorfunc
で設定した関数を適用する
gCtrl + a
通常は使わない。以下:help g^a
より、引用
MEM_PROFILINGをdefineしてVimをコンパイルした時のみ使えます(通常は使いません)。メモリの使用量の統計を表示します。Vimをデバッグするときなどに使います。
gCtrl + g
カーソルの現在の位置を、列、行、単語、文字、バイト、の5種類の単位で表示する
gh gH gCtrl + h
gh
通常のselectモードに切り替え
gH
行選択のselectモードに切り替え
gCtrl + h
矩形選択のselectモードに切り替え
g] gCtrl + ]
g]
カーソル配下のキーワード定義位置のリストを表示(表示項目を選択することで定義位置へジャンプ)
gCtrl + ]
カーソル配下のキーワード定義位置にジャンプ
ただし、Ctrl + ]と異なり、候補が複数ある場合はリストを表示し、そこから選択して移動できる
出力例):
nr pri kind tag file
1 F f mch_delay os_amiga.c
mch_delay(msec, ignoreinput)
> 2 F f mch_delay os_msdos.c
mch_delay(msec, ignoreinput)
3 F f mch_delay os_unix.c
mch_delay(msec, ignoreinput)
Enter nr of choice (<CR> to abort):
g_
行の最後の非空白文字へ移動
※ $:行末へ移動
ga
カーソル配下の文字コードを10/16/8進法で表示
例えば)
h
配下で実行すると<h> 104, Hex 68, Octal 150
と表示
gd gD
gd
カーソル配下のローカル変数の宣言元へジャンプ
gD
カーソル配下のグローバル変数の宣言元へジャンプ
ge gE
ge
前単語末尾へ移動
- 単語はアルファベット、数値、その他の非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123
,あいう
,567
,<<>>
の4単語
gE
前単語末尾へ移動
- 単語は非空白文字の連続で構成
- 区切り文字はスペース、タブ、<EOL>
※例えばabc_123あいう 567<<>>
なら、abc_123あいう
,567<<>>
の2単語
gf gF
gf
カーソル配下もしくは後ろにあるパスを開く
例えば)
tmp.txt 2
なら./tmp.txt
を開く
gF
カーソル配下もしくは後ろにあるパスを開き、数値があった場合はその行に移動する
例えば)
tmp.txt 2
なら./tmp.txt
を開き2行目にカーソルが移動する
gi gI
gi
挿入モードを終了した位置に移動してから挿入モードに切り替え
gI
行頭(空白文字含む)に移動して挿入モードに切り替え
gj
下に一文字移動(行折り返し時は同じ行へ移動)
※ j:次行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)
gk
上に一文字移動(行折り返し時は同じ行へ移動)
※ k:前行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)
gJ
間にスペースを入れず次行と行連結
※ J:間にスペース文字を入れて、次行と行連結
gg
[数値]ggより、ファイルの[数値]行目の非空白文字の最初に移動する
※未指定時はファイルの先頭に移動
gn gN
gn
次検索し、visualモードに切り替え
gN
前検索し、visualモードに切り替え
補足
- visualモードの場合は選択範囲を拡張
- オペレータコマンド併用時はマッチした位置に作用
dgn
で検索対象を除去等
go
[数値]goで現編集中ファイルの[数値]バイト目に移動
※未指定時はファイルの先頭
gp gP
gp
カーソル位置から後ろに貼り付け、貼り付けたテキストの後にカーソル移動
gP
カーソル位置から前に貼り付け、貼り付けたテキストの後にカーソル移動
gq
gq[移動系コマンド]
[移動系コマンド]対象の文字列整形を実行
gqgq gqq
現在行の整形を実行
補足
上記整形処理は以下変数の設定値に従う
-
formatexpr
の値 -
formatprg
の値(※formatexpr
が空だった場合) - 内部の整形ルーチン(※
formatexpr formatprg
が空だった場合)
gQ
Exモードに切り替え
補足
Qとほぼ同様であるが、gQはviのコマンドモードと同様に動作する。ノーマルモードに戻る場合は:vi
と入力
gr gR
gr
grxでカーソル配下の仮想文字をxに置き換える(xは任意の文字)
※r:rxでカーソル配下の文字をxに置き換える(xは任意の文字)
rとの違い
grの場合、画面上の文字列幅が変わらないように文字の置き換えを実行する
例えば)
# rの場合
abc -> あbc
# grの場合
abc -> あc
となる
gR
仮想置換モードに切り替え
Rとの違い
置き換え処理がgr同様、画面上の文字列幅が変わらないよう文字列の置換を実行する
例えば)
# Rの場合
kakikukeko -> かきくけこukeko
# gRの場合
kakikukeko -> かきくけこ
gs
[数値]gsで[数値]秒間、操作ロック状態となる
※gsはgo to sleepが語源
gt gT
gt
次のタブに切り替え
gT
前のタブに切り替え
gu gU g~
gu[移動系コマンド]
[移動系コマンド]の範囲を小文字に切り替え
gugu guu
現在行を小文字に切り替え
gU[移動系コマンド]
[移動系コマンド]の範囲を大文字に切り替え
gUgU gUU
現在行を大文字に切り替え
g~[移動系コマンド]
[移動系コマンド]の範囲の大文字/小文字切り替え
g~g~ g~~
現在行を大文字/小文字切り替え
gv
visualモードを最後に終了した範囲を再選択し、visualモードに切り替え
gw
gw[移動系コマンド]
[移動系コマンド]範囲の文字列整形を実行後、カーソルを実行前の位置に移動
gwgw gww
gw同様の整形処理を現在行に実行後、カーソルを実行前の位置に移動
補足
上記整形処理はgq
と異なりformatexpr
とformatprg
の値を使用しない
gx
カーソル位置のパス文字列にあるファイルを専用のツールで開く
例えば)
以下操作を実行した場合、~/tmp/page.html
をブラウザで表示
# 以下のパス上にてgxをクリック
~/tmp/page.html
補足
Mac OSの場合はカーソル位置のパスに対し、openコマンドを適用する
g<Home>
画面上で表示している行の左端へ移動
※g0と同様
g<End>
画面上で表示している行の右端へ移動
※g$と同様
g<Up>
上に一文字移動(行折り返し時は同じ行へ移動)
※gkと同様
g<Down>
下に一文字移動(行折り返し時は同じ行へ移動)
※gjと同様
Indexへ
z<Enter> zt z. zz z- zb
[数値]zxで[数値]行を画面の「最上部」/「中央」/「最下部」となるようスクロールし、
カーソルを「同じカラム」/「非空白文字の行頭部分」に移動して再描画
※1.xは<Enter> t . z - bのいずれかの文字
※2.[数値]未指定時は現在行
※3.xに対し、行の配置、カーソルのカラム位置の対応は以下表を参照
zx | 行の配置 | 移動カラム位置 |
---|---|---|
z<Enter> | 最上部 | 非空白な行頭 |
zt | 最上部 | 同カラム |
z. | 中央 | 非空白な行頭 |
zz | 中央 | 同カラム |
z- | 最下部 | 非空白な行頭 |
zb | 最下部 | 同カラム |
z+ z^
z+
画面の最下部の行を最上部に位置させ、再描画。カーソル位置は非空白文字の行頭部分に移動
[数値]z+
[数値]行を最上部に位置させ、再描画。カーソル位置は非空白文字の行頭部分に移動
※[数値]z<Enter>と同様
z^
画面の最上部の行を最下部に位置させ、再描画。カーソル位置は非空白文字の行頭部分に移動
[数値]z^
[数値]行を最下部に位置させ、再描画。カーソル位置は非空白文字の行頭部分に移動
z=
カーソル配下の単語のスペル候補を表示し、選択した項目に置き換え
補足
- 該当機能使用のため
:set spell
(スペルチェックの機能ON)の実行が必要
zg zG zw zW zug zuG zuw zuW
zg
カーソル配下の単語を正しいスペルとして、spellfile
に追加
zG
カーソル配下の単語を正しいスペルとして、internal-wordlist
に追加
※zW:カーソル配下の単語を誤ったスペルとして、internal-wordlist
に追加
zw
カーソル配下の単語を誤ったスペルとして、spellfile
に追加
zW
カーソル配下の単語を誤ったスペルとして、internal-wordlist
に追加
zug zuG zuw zuW
以下各コマンドをそれぞれ、undoする
- zug : zgをundo
- zuG : zGをundo
- zuw : zwをundo
- zuW : zWをundo
補足
- 該当機能使用のため
:set spell
(スペルチェックの機能ON)の実行が必要 -
spellfile
への設定はvim終了後も有効 -
internal-wordlist
への設定はvim終了後、無効となる
za zA zc zC zm zM zo zO zr zR zv zx
以下表に従い、ファイル内もしくはカーソル配下の項目の折り畳み開閉を実行
キー | 折り畳み動作 | 折り畳みレベル値 |
---|---|---|
zo | カーソル配下の折り畳みを一段階開く | 未更新 |
zO | カーソル配下の折り畳みを再帰的に全て開く | 未更新 |
zc | カーソル配下の折り畳みを一段階閉じる | 未更新 |
zC | カーソル配下の折り畳みを再帰的に全て閉じる | 未更新 |
za | カーソル配下の折り畳みの開閉切り替え | 未更新 |
zA | カーソル配下の折り畳みを再帰的に開閉切り替え | 未更新 |
zm | 折り畳みをより閉じる | 1減らす |
zM | 折り畳みを再帰的に全て閉じる | 0にする |
zr | 折り畳みをより開く | 1増やす |
zR | 折り畳みを再帰的に全て開く | 最大値にする |
zv | カーソル配下が開くレベルまで折り畳みを開く | 未更新 |
zx | ファイル内各項目を現在の折り畳みレベルまで開閉し、zv を実行 |
未更新 |
zX | ファイル内各項目を現在の折り畳みレベルまで開閉する | 未更新 |
補足
- 折り畳みレベル値は
set foldlevel
の値:値が小さい程、深く閉じた状態 - 折り畳みを使用する場合は折り畳み方法
set foldmethod
の設定が必要
例えば)
インデントの深さで折り畳み深さ指定:set foldmethod=indent
zf zF zd zD zE
以下表に従い、折り畳み項目の作成/削除を実行する
キー | 折り畳み項目作成/削除 |
---|---|
zf[移動系コマンド] | [移動系コマンド]範囲行を折り畳み項目にする |
[数値]zF | 現在行から[数値]行を折り畳み項目にする |
zd | カーソル位置の折り畳み項目を1つ削除する |
zD | カーソル位置の折り畳み項目を再帰的に削除する |
zE | ファイル内の折り畳み項目を全て削除する |
補足
- 折り畳み項目の作成/削除をする場合は折り畳み方法
set foldmethod
の値が
marker
かmanual
となっている必要がある
zn zN zi
以下表に従い、折り畳みする/しない(set foldenable
/nofoldenable
)の切り替えを行う
キー | 折り畳みする/しない |
---|---|
zn | 折り畳みしないを設定 |
zN | 折り畳みするを設定 |
zi | 折り畳みする/しないの設定値を反転 |
補足
- 「折り畳みする」->「折り畳みしない」に切り替え時、折り畳み項目は全て開く
- 「折り畳みしない」->「折り畳みする」に切り替え時、折り畳み項目は「折り畳みしない」設定前の状態に戻る
zj zk
zj
カーソルより下にある閉じた折り畳み項目へ移動
zk
カーソルより上にある閉じた折り畳み項目へ移動
zl z<Left> zh z<Right> zH zL ze zs
以下表に従い、水平スクロール動作する。尚、折り返し設定がON(set wrap
)のときは無効となる
キー | 水平スクロール距離 |
---|---|
zh | 左に一文字スクロール |
z<Left> |
zh と同じ |
zl | 右に一文字スクロール |
z<Right> |
zl と同じ |
zH | 画面幅半分左にスクロール |
zL | 画面幅半分右にスクロール |
zs | カーソル位置が左端となるようスクロール |
ze | カーソル位置が右端となるようスクロール |
z[数値]<Enter>
画面の高さを[数値]行に変更