🙃

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など

引用

https://docs.oracle.com/cd/E19253-01/816-3946/editorvi-tbl-83/index.html
https://www.redhat.com/ja/blog/introduction-vi-editor
https://qiita.com/Shioshio4037/items/35ebc70e4509c6fb366a
https://qiita.com/sa_6ebdc2/items/265e6f6c921139a57ca0

Discussion