🙃
vi/viewコマンドの使い方について
きっかけ
業務でサーバー操作をする場面が多くなり、よく使用するvi,viewコマンドについてもっといろいろと知りたくなり、業務効率が上がると思うコマンドと併せて、今後の自分のために残そうと思い作成しようと思いました。
実行環境
- Git Bash git version 2.50.0.windows.2
viエディタとは
Linuxで使用されるファイルを編集するためのツールです。
使用する場面としては、サーバー内のファイル書き換え操作が大半なのではないかと思います。
viエディタの起動
vi,viewコマンドはそれぞれ
$ vi filename.txt
または
$ view filename.txt
で起動でき、コマンドモード状態に切り替わります。
※vi,viewコマンドともに存在しないファイルを指定して起動すると新規ファイルが作成されます。
※viewコマンドで起動してiなどで編集モードに切り替えると警告がでます。これはviewコマンドが読み取り専用のコマンドであるためです。
-- INSERT -- W10: Warning: Changing a readonly file
モードの切り替え
初めて使用するとわかるのですが、モードの切り替えコマンドを入力しないと編集ができない仕様になっています。これについては投稿者も少し困惑しました。モードの切り替えはとても簡単です。逐次モードの切り替えを行い、ファイルを編集・保存していきます。
| コマンド | 切り替え先 |
|---|---|
| i または a | 編集モード |
| escキー | コマンドモード |
各種コマンドについて
業務効率化が期待できるものを抜粋しました。あまり複雑だと覚えられないので独断と偏見で使いやすいであろうコマンドを選びました。
カーソル移動
| コマンド | 説明 |
|---|---|
| ^ | 選択の先頭にジャンプ |
| $ | 選択の行末にジャンプ |
| G | ファイルの最終行にジャンプ |
| 1G | ファイルの先頭行にジャンプ |
| nG | n行目にジャンプ |
終了/保存関連
| コマンド | 説明 |
|---|---|
| :w | ファイルの保存 |
| :wq または ZZ | ファイルの保存をして編集を終了 |
| :wq! | ファイルの保存をして編集を強制的に終了 |
| :q | 編集を終了する。 |
| :q! | 編集を強制的に終了する。 |
| :e! | 最後に保存した内容に戻す |
grep関連
| コマンド | 説明 |
|---|---|
| /string | "string"という文字列を検索 |
| /Hello World | "Hello World"という文字列を検索 |
| n | 次の検索結果の位置を表示 ex. grepワードを入力してenterを押下して使用 |
| N | 前の検索結果の位置を表示 ex. grepワードを入力してenterを押下して使用 |
削除関連
| コマンド | 説明 |
|---|---|
| x | カーソルの文字を削除 |
| dd | 行を削除 |
| :%d | すべて削除 |
| D | ある行のうちカーソルから右側の部分を削除 |
| :5,10d | 5行目から10行目までを削除 |
コピペ関連
| コマンド | 説明 |
|---|---|
| yy | 1行をコピー |
| :%y | 全選択してコピー |
| p | コピーまたは移動の対象行をカーソルがある行の下に挿入 |
| P | コピーまたは移動の対象行をカーソルがある行の上に挿入 |
元に戻す/やり直す
| コマンド | 説明 |
|---|---|
| u | 1つ前に戻す ※Windowsのctrl + Zにあたる動き |
| ctrl + r | やり直す(直前の動作をやり直す)※Windowsのctrl + Yにあたる動き |
replace関連
| コマンド | 説明 |
|---|---|
| :%s/[stringA]/[stringB] | 最初に見つかった"stringA"という文字列を"stringB"に置換 |
| :%s/[stringA]/[stringB]g | "stringA"という文字列を"stringB"にすべて置換 |
その他
| コマンド | 説明 |
|---|---|
| :set nu または :set number | 行番号の表示 |
| :set nonu または :set nonumber | 行番号の非表示 |
| :!<command> | viを起動させたままコマンドの内容を実行 ex. ls / pwdなど |
引用
Discussion