
ページコンテンツ
viとは
viはLinuxコンソール上でファイル編集を行うためのツールです。
構文
vi[オプション]「ファイル名」
起動オプション
- + コマンド ファイルを開いた際に、指定したViコメンドを実行
- -C コマンド ファイルを開いた際に、指定したViコメンドを実行※「+ コマンドと同じ」
- -R ファイルを読み込み専用モードで開く
- -r 編集途中で保存されずに破棄された内容を復旧する
コマンドモードと入力モードについて
コマンドモード、入力モードという2つの動作モードを切り替えて操作します。
コマンドモード
Viを操作するためのモードです。
入力モード
Viへ登録したい文字を入力するモードです。
コマンドモードから入力モードへ移行
- a 入力モードに移行後、対応した内容をカーソル位置の直後に入力
- A 入力モードに移行後、対応した内容をカーソル行の末尾に入力
- i 入力モードに移行後、対応した内容をカーソル位置の直前に入力
- I 入力モードに移行後、対応した内容をカーソル行の頭行に入力
- o 入力モードに移行後、対応した内容をカーソル行の次の行に入力
- O 入力モードに移行後、対応した内容をカーソル行の前の行に入力
入力モードからコマンドモードへ移行
[ESC] 入力モードを終了し、コマンドモードへ
Viエディタの終了
- :q ファイルの書き込みを行わずにViを終了
- :q! 編集中の内容を破棄してViを終了
- :wq 編集中の内容をファイルに書き込んでViを終了
- ZZ 編集中の内容をファイルに書き込んでViを終了
Viエディタでのファイル操作
- :w 編集中の内容をファイルに保存する
- :e! 編集中の内容を破棄し、直前に保存した内容に戻す
- :n 複数のファイルを開いている場合は、現在編集中のファイルを閉じ、次のファイルを編集する
- :n ファイル名 現在編集中のファイルを閉じ、ファイル名で指定したファイルの内容を編集する
- :r ファイル名 ファイル名で指定されたファイルの内容をカーソルの次の行以降に読み込む
- :r! コマンド 指定されたコマンドを実行し、その実行結果をカーソルの次の行の以降に読み込む
- :!コマンド viを終了せずにシェルコマンドを実行
Viのカーソル移動(コマンドモード)
文字単位の移動
- l 右へ一文字移動
- h 左へ一文字移動
- k 上へ一文字移動
- j 下へ一文字移動
文字単位の移動
- w 次の単語の先頭へ移動
- b 現在カーソルのある単語の先頭に移動
- e 現在カーソルのある単語の終わりに移動
- W 空白で区切られた次の単語の先頭に移動
- B 空白で区切られた前の単語の先頭に移動
その他のカーソル移動
- 0 行頭に移動
- $ 行末に移動
- H 表示されているページの1行目に移動
- L 表示されているページの最下行に移動
- M 表示されているページの中央行に移動
- [Ctrl]+y 1行前にスクロール
- [Ctrl]+e 1行後にスクロール
- [Ctrl]+u 半ページ前にスクロール
- [Ctrl]+d 半ページ後にスクロール
- [Ctrl]+n 1ページ前にスクロール
- [Ctrl]+f 1ページ後にスクロール
- 1G ファイルの1行目に移動
- G ファイルの最後の行に移動
- nG ファイルのn行目に移動
- :n ファイルのn行目に移動
Viの文字編集(コマンドモード)
文字・行削除
- x カーソル位置の1文字を削除
- X カーソル位置前の1文字を削除
- dw カーソル位置から次の単語までを削除
- d$ カーソル位置からその行の最後までを削除
- d0 カーソル位置からその行の先頭までを削除
- dd カーソルのある行を削除
数値による回数指定が可能です。
例)
「5dd」:カーソル位置から5行削除
「20x」:20文字削除
コピー
- yy カーソルのある行をコピー
- yw カーソル位置から次の単語までをコピー
- y$ カーソル位置からその行の最後までをコピー
- y0 カーソル位置からその行の先頭までをコピー
ペースト
- p カーソル位置の後ろにコピーバッファーの内容をペースト
- P カーソル位置の前にコピーバッファーの内容をペースト
検索コマンド
コマンド | 説明 |
---|---|
/パターン | カーソル位置から後方に向かって指定したパターンを検索 |
?パターン | カーソル位置から前方に向かって指定したパターンを検索 |
n | 次を検索 |
N | 次を検索(逆方向) |
:noh | 候補のハイライト表示を解除 |
;%s/A/B/ | 文字列Aを文字列Bに置換 |
設定変更
「:set」を利用してviの設定を変更できます。
コマンド | 説明 |
---|---|
:set nu | 行番号を表示 |
:set nonu | 行番号を非表示にする |
:set ts=タブ幅 | タブ幅を数値で指定 |
テキスト処理の関連コマンド
- cat ファイルの内容を表示
- more ファイル内容を画面単位で表示
- lesss ファイル内容を画面単位で表示
- pg ファイル内容を画面単位で表示
- head ファイル内容の先頭を表示する
- tail ファイル内容の末尾を表示する
- Vi エディター操作
- view ファイルを編集
- emacs ファイルを編集
- grep 文字列検索
- sort テキストファイルを行単にソートする
- uniq 重複している行は、まとめて1行で表示する
- diff ファイルの相違点を調べる
最近の記事
- CentOS7 最小構成でインストール後のネットワーク設定ページコンテンツ 概要 CentOS7では、最小構成でインストールした直後はネットワークが接続されません。GU… 続きを読む »
- CenteOS7にYumを利用してGitサーバをインストールページコンテンツ 概要 勉強がてらにコーディングしたソースが多くなってきたので、Gitでのソース管理(構成管理… 続きを読む »
- yum update後 systemctl restart nginx.serviceにて「Can’t open PID file /var/run/nginx.pid (yet?) after start: Too many levels of symbolic links」エラー発生ページコンテンツ エラー内容 yum update後 systemctl restart nginx.serv… 続きを読む »
- CentOS7 Cronが使えないページコンテンツ CentOS7への切り替え CentOS6のサポート期限が切れるので、CentOS7への切り… 続きを読む »
- CenOS7、Java11(OpenJDK11) 、Tomcat9 インストールページコンテンツ 概要 CenOS7に、Java11(OpenJDK11) 、Tomcat9 をインストールす… 続きを読む »