LoginSignup
7
11

More than 5 years have passed since last update.

vimのノーマルモードのコマンドまとめ(その2)

Last updated at Posted at 2016-08-29

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$

画面に表示している行の右端へ移動
※ $:行末へ移動(折り返し、見切れに依存しない)

Indexへ

g# g*

g#:現在位置から最も近い単語文字列の後方検索を実行
g*:現在位置から最も近い単語文字列の前方検索を実行

# *との違い

  • # *:単語検索
  • g# g*:単語文字列検索

例えば)
g#(またはg*)でorという単語の検索を実行した場合、word内のorも検索対象となる

Indexへ

g&

最後に実行した置換処理をフラグ保持して再実行する
※ &:最後に実行した置換処理をフラグ保持せず再実行する

例えば)
:s/aa/bb/cgで置換を実行し後に
&で置換処理を再実行した場合は:s/aa/bb/となるのに対し、g&は:s/aa/bb/cgとなる

g` g'

g`x:マークxに移動
g'x:マークxの行頭位置へ移動
※' `と同様に動作

` 'との違い

  • ` ':ジャンプリストを変更する
  • g` g':ジャンプリストを変更しない

Indexへ

g+ g-

g+

新しいテキスト状態に移動

g-

古いテキスト状態に移動

補足

undo実行後にテキスト編集した後もg-を使うことで、undo実行前の状態に戻ることができる

例えば

  1. edit1,..,edit4操作でテキスト編集
  2. undo機能により、edit2操作でテキスト編集した状態まで戻る
  3. 「2.」の状態から、edit5,edit6操作でテキスト編集

と操作した場合、テキストの編集履歴は以下の様になる。

edit1 - edit2 - edit5 - edit6
              \
                edit3 - edit4

このとき、g-を2回実行することでedit6->edit5->edit4となり、edit4操作のテキスト編集状態に戻ることができる。
また、再度edit6操作のテキスト編集状態に戻りたい場合はg+を2回実行すれば良い

参考:
Undoを管理する

Indexへ

g, g;

g,

変更リストの前の位置にカーソルを移動する

g;

変更リストの後の位置にカーソルを移動する

補足

  • vimでは変更時、カーソル位置の履歴を変更リストに蓄積する
  • 変更リストはコマンドにて、:changesにより確認できる

Indexへ

gm

画面表示している行文字列の中央に移動

Indexへ

g8

カーソル位置の文字バイト列を16進数で表示

Indexへ

g<

前のコマンドの出力内容を表示する

例)

  1. :regより、レジスタの一覧確認
  2. g<で再確認

Indexへ

g? g?? g?g?

g?[移動系コマンド]

[移動系コマンド]の範囲の文字列をRot13でエンコードする

g?? g?g?

現在行をRot13でエンコードする

参考

ROT13 - Wikipedia

Indexへ

g@

g@[移動系コマンド]で[移動系コマンド]の範囲に:set operatorfuncで設定した関数を適用する

Indexへ

gCtrl + a

通常は使わない。以下:help g^aより、引用

MEM_PROFILINGをdefineしてVimをコンパイルした時のみ使えます(通常は使いません)。メモリの使用量の統計を表示します。Vimをデバッグするときなどに使います。

Indexへ

gCtrl + g

カーソルの現在の位置を、列、行、単語、文字、バイト、の5種類の単位で表示する

Indexへ

gh gH gCtrl + h

gh

通常のselectモードに切り替え

gH

行選択のselectモードに切り替え

gCtrl + h

矩形選択のselectモードに切り替え

Indexへ

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):

Indexへ

g_

行の最後の非空白文字へ移動
※ $:行末へ移動

Indexへ

ga

カーソル配下の文字コードを10/16/8進法で表示
例えば)
h配下で実行すると<h> 104, Hex 68, Octal 150と表示

Indexへ

gd gD

gd

カーソル配下のローカル変数の宣言元へジャンプ

gD

カーソル配下のグローバル変数の宣言元へジャンプ

Indexへ

ge gE

ge

前単語末尾へ移動

  • 単語はアルファベット、数値、その他の非空白文字の連続で構成
  • 区切り文字はスペース、タブ、<EOL>
    ※例えばabc_123あいう 567<<>>なら、abc_123, あいう, 567, <<>>の4単語

gE

前単語末尾へ移動

  • 単語は非空白文字の連続で構成
  • 区切り文字はスペース、タブ、<EOL>
    ※例えばabc_123あいう 567<<>>なら、abc_123あいう,567<<>>の2単語

Indexへ

gf gF

gf

カーソル配下もしくは後ろにあるパスを開く
例えば)
tmp.txt 2なら./tmp.txtを開く

gF

カーソル配下もしくは後ろにあるパスを開き、数値があった場合はその行に移動する
例えば)
tmp.txt 2なら./tmp.txtを開き2行目にカーソルが移動する

Indexへ

gi gI

gi

挿入モードを終了した位置に移動してから挿入モードに切り替え

gI

行頭(空白文字含む)に移動して挿入モードに切り替え

Indexへ

gj

下に一文字移動(行折り返し時は同じ行へ移動)
※ j:次行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)

Indexへ

gk

上に一文字移動(行折り返し時は同じ行へ移動)
※ k:前行に移動(移動前の行のカラム位置は移動後の行のカラム位置となる)

Indexへ

gJ

間にスペースを入れず次行と行連結
※ J:間にスペース文字を入れて、次行と行連結

Indexへ

gg

[数値]ggより、ファイルの[数値]行目の非空白文字の最初に移動する
※未指定時はファイルの先頭に移動

Indexへ

gn gN

gn

次検索し、visualモードに切り替え

gN

前検索し、visualモードに切り替え

補足

  • visualモードの場合は選択範囲を拡張
  • オペレータコマンド併用時はマッチした位置に作用
    dgnで検索対象を除去等

Indexへ

go

[数値]goで現編集中ファイルの[数値]バイト目に移動
※未指定時はファイルの先頭

Indexへ

gp gP

gp

カーソル位置から後ろに貼り付け、貼り付けたテキストの後にカーソル移動

gP

カーソル位置から前に貼り付け、貼り付けたテキストの後にカーソル移動

Indexへ

gq

gq[移動系コマンド]

[移動系コマンド]対象の文字列整形を実行

gqgq gqq

現在行の整形を実行

補足

上記整形処理は以下変数の設定値に従う

  1. formatexprの値
  2. formatprgの値(※formatexprが空だった場合)
  3. 内部の整形ルーチン(※formatexpr formatprgが空だった場合)

Indexへ

gQ

Exモードに切り替え

補足

Qとほぼ同様であるが、gQはviのコマンドモードと同様に動作する。ノーマルモードに戻る場合は:viと入力

Indexへ

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 -> かきくけこ

Indexへ

gs

[数値]gsで[数値]秒間、操作ロック状態となる
※gsはgo to sleepが語源

Indexへ

gt gT

gt

次のタブに切り替え

gT

前のタブに切り替え

Indexへ

gu gU g~

gu[移動系コマンド]

[移動系コマンド]の範囲を小文字に切り替え

gugu guu

現在行を小文字に切り替え

gU[移動系コマンド]

[移動系コマンド]の範囲を大文字に切り替え

gUgU gUU

現在行を大文字に切り替え

g~[移動系コマンド]

[移動系コマンド]の範囲の大文字/小文字切り替え

g~g~ g~~

現在行を大文字/小文字切り替え

Indexへ

gv

visualモードを最後に終了した範囲を再選択し、visualモードに切り替え

Indexへ

gw

gw[移動系コマンド]

[移動系コマンド]範囲の文字列整形を実行後、カーソルを実行前の位置に移動

gwgw gww

gw同様の整形処理を現在行に実行後、カーソルを実行前の位置に移動

補足

上記整形処理はgqと異なりformatexprformatprgの値を使用しない

Indexへ

gx

カーソル位置のパス文字列にあるファイルを専用のツールで開く

例えば)
以下操作を実行した場合、~/tmp/page.htmlをブラウザで表示

# 以下のパス上にてgxをクリック
~/tmp/page.html

補足

Mac OSの場合はカーソル位置のパスに対し、openコマンドを適用する

Indexへ

g<Home>

画面上で表示している行の左端へ移動
※g0と同様

Indexへ

g<End>

画面上で表示している行の右端へ移動
※g$と同様

Indexへ

g<Up>

上に一文字移動(行折り返し時は同じ行へ移動)
※gkと同様

Indexへ

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^

[数値]行を最下部に位置させ、再描画。カーソル位置は非空白文字の行頭部分に移動

Indexへ

z=

カーソル配下の単語のスペル候補を表示し、選択した項目に置き換え

補足

  • 該当機能使用のため:set spell(スペルチェックの機能ON)の実行が必要

Indexへ

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終了後、無効となる

Indexへ

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

Indexへ

zf zF zd zD zE

以下表に従い、折り畳み項目の作成/削除を実行する

キー 折り畳み項目作成/削除
zf[移動系コマンド] [移動系コマンド]範囲行を折り畳み項目にする
[数値]zF 現在行から[数値]行を折り畳み項目にする
zd カーソル位置の折り畳み項目を1つ削除する
zD カーソル位置の折り畳み項目を再帰的に削除する
zE ファイル内の折り畳み項目を全て削除する

補足

  • 折り畳み項目の作成/削除をする場合は折り畳み方法set foldmethodの値が
    markermanualとなっている必要がある

Indexへ

zn zN zi

以下表に従い、折り畳みする/しない(set foldenable/nofoldenable)の切り替えを行う

キー 折り畳みする/しない
zn 折り畳みしないを設定
zN 折り畳みするを設定
zi 折り畳みする/しないの設定値を反転

補足

  • 「折り畳みする」->「折り畳みしない」に切り替え時、折り畳み項目は全て開く
  • 「折り畳みしない」->「折り畳みする」に切り替え時、折り畳み項目は「折り畳みしない」設定前の状態に戻る

Indexへ

zj zk

zj

カーソルより下にある閉じた折り畳み項目へ移動

zk

カーソルより上にある閉じた折り畳み項目へ移動

Indexへ

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 カーソル位置が右端となるようスクロール

Indexへ

z[数値]<Enter>

画面の高さを[数値]行に変更

Indexへ

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11