Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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へ


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>