568
674

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

viコマンド(vimコマンド)リファレンス

Last updated at Posted at 2018-01-23

起動

基本
$ vi ファイル名    ...指定して起動  
$ vi ファイル名1 ファイル名2 … ファイル名n    ...複数ファイル起動  
$ vi -R ファイル名 or $ view ファイル名   ...読み込み専用で起動

初期表示位置を指定して起動
$ vi + ファイル名    ...最後の行から表示   
$ vi +行数 ファイル名    ...指定行から表示
$ vi +/文字列 ファイル名    ...文字列が最初に見つかった場所から表示

その他
$ vi -r ファイル名   ...壊れたファイルをリカバリする

カーソル移動

1文字移動
[←] or [h] or [BackSpace]
[→] or [l] or [Space]
[↑] or [k] or [Ctrl]+[p]
[↓] or [j] or [Ctrl]+[n]

数字指定移動
数字[←] or 数字[h] or 数字[BackSpace]
数字[→] or 数字[l] or 数字[Space]
数字[↑] or 数字[k] or 数字[Ctrl]+[p]
数字[↓] or 数字[j] or 数字[Ctrl]+[n]

行移動
[^]    ...現在行の先頭位置へ
[$]    ...現在行の末端位置へ
[G]    ...最終行の先頭位置へ
[-]    ...前行の先頭位置へ
[Enter]    ...次行の先頭位置へ
:数字    ...指定行へ

移動
[w]    ...1語次へ
[b]    ...1語前へ
[e]    ...単語末尾へ

画面スクロール

画面移動
[H]    ...画面先頭へ(H: Header の意味)
[M]    ...画面中央へ(M: Middle の意味)
[L]    ...画面最終行へ(L: Lower の意味)

1画面分
[Ctrl]+[f]			… (f: Forward の意味)
[Ctrl]+[b]			… (b: Back の意味)

半画面分
[Ctrl]+[d]			… (d: Down の意味)
[Ctrl]+[u]			… (u: Up の意味)

終了

終了
:q    ...書込みを行わず終了(quit の意味)
:q!    ...書込みを行わず強制終了
:wq    ...書込み後終了
:wq!    ...書込み後強制終了

ファイル操作

書込み (上書き)
:w    ...書込み保存(w: write の意味)
:w!    ...強制書込み
:w ファイル名    ...別名で書込み
:w! ファイル名     ...別名で強制書込み
:数字,数字 w     ...n行目からn行目までを保存

複数ファイルを編集中に
:n    ...次のファイルの編集に移る(n: next の意味)
:n!   ...次のファイルの編集に強制的に移る
:rew    ...先頭のファイルに移る
:arg    ...現在何番目のファイルを編集中かを確認
:args    ...編集中ファイルの一覧を確認
:rewind   ..現在のファイルの変更内容を保存して、リストの最初から編集をやり直す
:rewind!    ...現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す
:e#   ...直前の編集ファイルに戻る

読み込み
:e     ...現在開いているファイルを再度読込み(e: edit の意味)
:e!     ...現在開いているファイルを再度強制読込み
:e ファイル名    ...ファイルを編集用に読込み
:e! ファイル名    ...ファイルを編集用に強制読込み

編集

開始
[a]   ...カーソルの右から入力開始(a: Add の意味)
[A]   ...行末から入力開始
[i]   ...カーソルの左から入力開始(i: Insert の意味)
[I]   ...行頭から入力開始
[o]   ...現在の行の下に1行挿入し、その行頭から入力開始
[O]   ...現在の行の上に1行挿入し、その行頭から入力開始
*入力モードに入る前に入力済みの文字が挿入される

挿入
:r    ...現在行の直下に現在のファイルの内容を挿入(r: read の意味)
:r ファイル名    ...現在行の直下に別ファイルの内容を挿入
:r! コマンド    ...現在位置の直後にシェルコマンドの結果を挿入(ex: !!hogehoge)

削除

削除
[x]   ...カーソルの文字を1文字削除
数字[x]   ...カーソルから後ろに指定数分削除
[X]   ...カーソル直前の文字を1文字削除
数字[X]   ...カーソル直前の文字を指定数分削除

行削除
[D]   ...カーソルから行の終端までの文字を削除
[d$]    ...カーソルから行の最後までを削除
[d^]    ...カーソルから行の先頭までを削除    
[dd]    ...カーソルの行を1行削除
数字[dd]    ...カーソルの行をn行削除

:行番号[d]   ...指定行削除
:開始行,終了行[d]   ...指定範囲行削除
:g/文字列/d    ...指定文字列のある行を全て削除

ワード削除
[dw]    ...1ワード削除(ワード:前後を空白かTABに挟まれた文字列)
数字[dw]    ...指定ワードを削除
[de]    ...1ワード削除(dwと異なる点は区切り文字(空白 or TAB)を削除しない)
数字[de]    ...指定ワードを削除
[df文字列    ...カーソルから最初に見つかった指定文字列までを削除

コピー&ペースト

行コピー
[yy]    ...カーソル位置の現在行をコピー
行数[yy]    ...カーソル位置の現在行から指定行数分をコピー

ワードコピー
[yw]    ...カーソル位置から1ワード分コピー
数字[yw]    ...カーソル位置から指定ワード分コピー

その他コピー
[yl]    ...1文字分コピー
[y0]    ...カーソル位置から行頭までコピー
[y$]    ...カーソル位置から行末までコピー

ペースト
[p]    ...コピーした内容をカーソルの後にペースト
[P]    ...コピーした内容をカーソルの前にペースト

検索

[/]文字列    ...カーソルの後方に検索を行う
[?]文字列    ...カーソルの前方に検索を行う
[n]文字列    ...次の検索該当文字列へ([/]→後方に [?]→前方に)
[N]文字列    ...前の検索該当文字列へ

置換

1文字だけ
[r]文字     ...カーソルの文字を1文字だけ違う文字に変更(r: Replace の意味)
数字[r]文字    ...カーソルから指定文字分を違う文字に変更
[R]    ...カーソルからESCを押すまでの文字を上書き更新

ワード(c系)
[cw]    ...カーソルから1ワード分をESCを押すまで入力した文字に置換
数字[cw]    ...カーソルから指定ワード数分をESCを押すまで入力した文字に置換    
[ce]    ...カーソルから1ワード分をESCを押すまで入力した文字に置換(区切り文字を置換しない)
数字[ce]    ...カーソルから指定ワード数分をESCを押すまで入力した文字に置換
[cf]文字列    ...カーソルから最初に見つかった指定文字列までをESCを押すまで入力した文字に置換
[C]      ...カーソルから行の最後までをESCを押すまで入力した文字に置換

指定(s系)
[s]    ...カーソルの文字をESCを押すまで入力した文字に置換
数字[s]    ...カーソルから指定文字数分をESCを押すまで入力した文字に置換
[S]    ...カーソルから行の最後までをESCを押すまで入力した文字に置換
:s/文字列1/文字列2/    ...カーソル行で最初の「文字列1」のみを「文字列2」に置換する(s: Substitute の意味)
:s/文字列1/文字列2/g    ...カーソル行の「文字列1」を全て「文字列2」に置換する(g: Global の意味)    
:s/文字列1/文字列2/c    ...カーソル行で最初の「文字列1」を「文字列2」に置換する前に確認が入る(c: Cheange の意味)
:行数s/文字列1/文字列2/    ...指定行で最初の「文字列1」のみを「文字列2」に置換する
:行数s/文字列1/文字列2/g    ...指定行で「文字列1」を全て「文字列2」に置換する
:%s/文字列1/文字列2/g    ...全ての行で「文字列1」を全て「文字列2」に置換する
:開始行,終了行s/文字列1/文字列2/    ...指定範囲行内で各行の最初の「文字列1」を「文字列2」に置換する
:開始行,終了行s/文字列1/文字列2/g     ...指定範囲行内の「文字列1」を全て「文字列2」に置換する
:開始行,$s/文字列1/文字列2/g     ...指定開始行から最終行までの「文字列1」を全て「文字列2」に置換する
:&, &   ...直前のsコマンドの繰り返し

小文字、大文字
~      ...カーソル行の大文字⇔小文字を置換 (置換完了のESCは不要)
数字~    ...カーソルから指定文字分の大文字⇔小文字を置換 (置換完了のESCは不要)

結合(改行をスペースに置換)
[J]   ...現在行と直下の行を結合する
数字[J]   ...現在行から指定行数下を結合する

取り消し

[u]    ...直前の操作をやめる(u: Undo の意味)
[U]    ...行全体に操作を取りやめる
[.]   ...直前の変更操作の繰り返し
Ctrl-[R]    ...取り消しの取り消し

ウインドウ操作

:sp ファイル名   ...ウインドウを横に分割
:vs ファイル名   ...ウインドウを縦に分割
:q,:only    ...カーソルのあるウインドウ以外を全部閉じる
:new    ...空の横ウインドウを開く
:vnew   ...空の縦ウインドウを開く
Ctrl-w w    ...次のウインドウに移動
Ctrl-w p    ...前のウインドウに移動
Ctrl-w o    ...現在のウインドウ以外を閉じる

バッファ

:ls   ...バッファリストの表示
:b    ...バッファ	バッファを表示
:bn   ...次のバッファを表示
:bp   ...前のバッファを表示
:bd   ...バッファ削除 バッファ番号指定は :bd 5などで指定可能

その他

:set nu   ...行番号を表示する
:set nonu   ...行番号の表示をやめる
:set showmode   ...現在のモードを表示する
:set showmatch    ...()や{}の対応の報告をするようになる
:set ignorecase   ...大文字/小文字の区別なく検索する
:set autoindent   ...自動インデントモード
:set noautoindent   ...自動インデントモードをやめる
:set all      ...すべてのオプションを表示する
:set ruler     ...ルーラー(右下に表示される行・列の番号)を表示する
:set tabstop=数値     ...タブの大きさを半角スペース数で指定
:set nowrap         ...折り返し表示しない
:set history=数値     ...コマンド履歴の保存数
:set backup       ...ファイルを保存する時にバックアップファイルを作成する
:set nobackup       ...バックアップファイルを作成しない
:syntax on,off    ...カラー表示のオンオフ
:Tutorial   ...30分程度のVi利用方法のチュートリアル
:vert diffsplit ファイル名   ...今のファイルと、他のファイルとの差分を取るコマンド 

役に立ったらいいね!&ストックすると喜びます🤗

568
674
2

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
568
674

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?