Vimの使い方
今回は、vim(vi)エディタの使い方について紹介します。
vimエディタは、昔から多くの人に使われ続けているエディタツールの1つです。
組み込み機器向けを含む、大半のLinuxディストリビューションに初めからインストールされており、
個人的にはプログラマーに良く好まている印象のエディタです。
そんなvimエディタですが、nanoなどの他エディタと比べると、使い方に若干の癖(場合によっては、初心者の方が忌避するくらいの癖)があります。
そこで、今回はvimエディタの癖も含め、その使い方を簡単に紹介します。
効率良く使い方を押さえられるように書きますので、よろしくお願いします。
- #実行環境OS
- ubuntu 22.04 LTS 64bit
- #vim
- version 8.2.4919
目次
- これがクセ! vimエディタの3モード(コマンド・編集・ラストライン)
- 起動方法と簡単な使い方
- コマンドモード
- カーソル移動(上:
k
、下:j
、左:h
、右:l
) - カーソルの行移動
gg
、G
、<number>G
- カーソル位置の文字を削除する
x
- 1行をコピーする(Yank)
yy
- 複数行をコピーする(Yank)
<number>yy
- 1行をカットする(Delete)
dd
- 複数行をカットする(Delete)
<number>dd
- ペーストする(Put)
p
- 編集モード
- カーソル位置で編集モードに移行する(insert)
i
- カーソル位置の1つ前を開始地点として編集モードに移行する(append)
a
- カーソル行の次の行頭を開始地点として編集モードに移行する(open)
o
- ラストラインモード
- 文字列を検索する
/<search-text>
- 既存ファイルの変更を保存する
:w
- 新規ファイルに名前を付けて保存する
:w <file>
- vimエディタの終了
:q
- vimエディタの強制終了
:q!
- おわりに
- 参考文献
これがクセ! vimエディタの3モード(コマンド・編集・ラストライン)
操作方法の紹介に入る前に、vim(vi)エディタの癖であるモードについて説明します。
viエディタにはコマンド・編集・ラストラインと呼ばれる3つのモードがあり、ユーザーは各モード に移行した上で、適切なファイル操作をする必要があります。
各モードの説明は以下の通りです。
- コマンドモード
-
viエディタを開いたときの初期モードです。
主にカーソル移動やテキストの削除やコピー&ペースト(Yank/Delete & Put)を受け付けます。
このモードは他モードに移行する際の分岐点となります。
そのため、編集モードやラストラインモードから別モードに移行したいときは一度コマンドラインモードに戻る必要があります。
通常、コマンドラインモードに戻るには
ESC
を押します。
※詳しくは「コマンドモード」の節を参照。
- 編集モード
-
文字入力を受け付けるモードです。カーソル位置を文字編集の開始地点とする
i
やカーソル位置の1つ先を開始地点とするa
などを押してコマンドラインモードから編集モードに移行します。※詳しくは「編集モード」の節を参照。
- ラストラインモード
-
viエディタの終了やファイルの保存を指示するためのモードです。
ユーザーが入力した指示オプションが行末に表示されるためラストラインモードと呼ばれます。
ファイルを保存する
:w
などを入力してコマンドラインモードからラストラインモードに移行します。 ※詳しくは「ラストラインモード」の節を参照。
それでは、次節から各操作について説明します。
起動方法と簡単な使い方
その1:ファイル指定なしで起動する(無名新規ファイルのオープン)
コンソール上でvi
orvim
と入力して、Enter
を押すことで起動できます。
user:~$ vi
これによって無名の新規ファイルが開きます。この時のviエディタはコマンドモードなので挿入(insert)i
キーなど
を押して編集モードに移行する必要があります。これでテキスト入力を受け付けます。
新規ファイルに名前を付けて保存する際は、ESC
を押してコマンドモードに戻った上で:w <file>
と入力してください。
指定したファイル名<file>
で保存されます。※合わせてファイルを閉じたい場合は:wq <file>
と入力してください。
その2:ファイル指定ありで起動する(既存ファイルの編集 or 名前付き新規ファイルのオープン)
コンソール上でvi <file>
orvim <file>
と入力して、Enter
を押すことで起動できます。
user:~$ vi hello.txt
これによって既存ファイルのhello.txtまたは新規ファイルのhello.txtが開きます。
この時のviエディタはコマンドモードなので挿入(insert)i
キーなど
を押して編集モードに以降する必要があります。これでテキスト入力を受け付けます。
新規ファイルに名前を付けて保存する際は、ESC
を押してコマンドモードに戻った上で:w
を入力します。
※合わせてファイルを閉じたい場合は:wq
と入力します。
コマンドモード
カーソル移動を受付け、テキストの削除やコピー&ペーストなどの操作が可能なモードです。他モードの分岐点にもなります。
前提:現在の状態が編集モードやラストラインモードの場合は、一度ESC
を押してコマンドモードに
戻ってから、以下で説明するキー操作をしてください。
カーソル移動(上:k
、下:j
、左:h
、右:l
)
vimエディタでは、カーソル移動を全てキーボードで操作します。
移動方向とキーの対応は以下の通りです。
移動方向 | 対応キー |
---|---|
上 | k または ↑ |
下 | j または ↓ |
左 | h または ← |
右 | l または → |
カーソルの行移動gg
、G
、<number>G
説明 | 対応キー |
---|---|
ファイルの先頭行に移動 | gg |
ファイルの末尾行に移動 | G |
ファイルの指定行に移動 | <number>G |
カーソル位置の文字を削除するx
文字を削除する操作です。
x
を押すたびに、文字が1文字ずつ削除されていきます。
次は以下のテキストファイルから「このサイトはIT技術に関する技術ブログです。」を消す例です。 まず、3行目の行頭にカーソル位置を移動します。
その後、x
を押して文字を消していきます。
今回は「このサイトはIT技術に関する技術ブログです。」の22文字分だけx
を押すことでその文面を削除できました。
1行をコピーする(Yank)yy
対象の行にカーソルを合わせてyy
を押すことで、その行をコピーすることができます。
次はyy
を押して、以下のテキストファイルの3行目をコピーする例です。
通常、yy
を押しただけでは、対象行がメモリにコピーされるだけなので見た目は変わりません。
コピーした行をペーストするには続けてp
を押します。
複数行をコピーする(Yank)<number>yy
対象の行にカーソルを合わせて、そこから<number>
行分をコピーすることもできます。
次は6yy
を押して、以下のテキストファイルの3行目から9行目コピーする例です。
3行目にカーソルを移動した上で6yy
を押すことでコピーできます。
通常、6yy
を押しただけでは、対象行がメモリにコピーされるだけなので見た目は変わりません。
コピーした行をペーストするには続けてp
を押します。
1行をカットする(Delet)dd
対象の行にカーソルを合わせてdd
を押すことで、その行をカットすることができます。
次はdd
を押して、以下のテキストファイルの3行目をコピーする例です。
まず、テキストの3行目にカーソルを移動します。
次にdd
と入力します。
すると、対象行の3行目がカットされ、その内容がメモリにコピーされます。
通常、コピーした行をペーストするには続けてp
を押します。
複数行をカットする(Delet)<number>dd
対象の行にカーソルを合わせて、そこから<number>
行分をカットすることもできます。
次は6dd
を押して、以下のテキストファイルの3行目から9行目をカットする例です。
まず、3行目にカーソルを移動します。
次に6dd
と入力します。
すると、3行目から9行目がカットされ、その内容がメモリにコピーされます。
通常、コピーした行をペーストするには続けてp
を押します。
行をペーストする(Put)p
yy
やdd
でコピーした行をp
を押すことで
カーソル行にペーストすることができます。
次は3行目をyy
でコピー(yank)して、その内容を最終行にペーストした例です。
yy
でメモリにコピーした3行目がペーストされることが確認できます。
編集モード
テキスト入力を受け付けるモードです。
前提:現在の状態がラストラインモードの場合は、一度ESC
を押してコマンドモードに
戻ってから、以下で説明するキー操作をしてください。また続けて別のキー操作をしたい場合も一度ESC
を押してください。
カーソル位置で編集モードに移行する(insert)i
現在のカーソル位置を開始地点として編集モードに移行します。続いてテキスト入力をすれば、カーソル位置に入力テキストが挿入されます。
次は「viエディタの使い方」という文字列の7文字目に「基礎的な」という文字列を挿入してみた例です。 先ず、カーソル位置を「viエディタの」の箇所まで移動します。
次にi
を入力することでその位置で編集モードに移行します。
(画面下部にINSERT(または'挿入')と表示されます。)
後はキーボードで「基礎的な」と入力するだけです。
この後にテキスト編集以外の操作をしたければ、ESC
でコマンドモードに戻ります。
(このとき、画面下部のINSERT(または'挿入')の表示が消えます。)
カーソル位置の1つ前を開始地点として編集モードに移行する(append)a
例えば、「viエディタの使い方」の行頭をカーソル位置としてa
を入力すると、
「v」と「i」の間から文字の挿入が開始されます。
カーソル行の次の行頭を開始地点として編集モードに移行する(open)o
例えば、テキストの2行目でo
を入力します。
すると、改行処理によって3行目が新規で作られ、編集モードに移行します。
ラストラインモード
前提:現在の状態が編集モードの場合は、一度ESC
を押してコマンドモードに
戻ってから、以下で説明するキー操作をしてください。
文字列を検索する/<search-text>
例えば、以下のテキストファイルの中から「OpenWrt」という文字列を探してみます。
先ず、/
を入力すると、画面下部に「/」と表示されますので
続けて「OpenWrt」と入力します。
Enter
を押すと検索が開始され、発見した「OpenWrt」の文字列の先頭まで
カーソル位置が移動します。
もし、同じ文字列を再検索したいときは、/
だけを入力してEnter
を
入力します。今回の場合では「OpenWrt」という文字列を検索対象として、現在のヒット位置から再検索を始めます。
なお、発見した文字列がそのファイルの出現順序の中で最後の場合は「search hit BOTTOM, continuing at TOP」と 表示され、再度検索するときは先頭行から始まります。
既存ファイルの変更を保存する:w
or:wq
:w
を押すことで既存ファイルに対する変更を保存することができます。
このとき、代わりに:wq
を押すと、既存ファイルの変更を保存してviエディタを終了します。
新規ファイルに名前を付けて保存する:w <file>
or:wq <file>
:w <file>
で、新規ファイルに名前付け<file>
をして、変更内容を保存します。
このとき、代わりに:wq
を押すと、新規ファイルの名前付けと保存をした後にviエディタを終了します。
vimエディタの終了:q
viエディタを終了する操作です。
このとき、開いたファイルに変更を加えていた場合、No write since last change (add ! to override)と表示され:q
を押してもviエディタを終了することが出来なくなります。
この場合、:q!
で強制終了することができます。
vimエディタの強制終了:q!
viエディタを強制終了する操作です。
:q!
を押したときに開いているファイルに対する変更が存在した場合、その変更を破棄した上でviエディタを終了します。
おわりに
今回はviエディタの使い方について紹介しました。
細かい操作を含めると、ここでは紹介していないもの数多くあります。
興味が沸いたら調べて使ってみることをおススメします。 ※公式ドキュメントは参考文献のURLから
参考文献
- welcome home : vim online https://www.vim.org/