Linuxシステム内には、アプリケーションやLinux自体の設定ファイルなど、たくさんの設定ファイルが含まれています。これらのテキストファイルを扱うために、テキストエディタには十分に慣れておく必要があります。
今回は、Vimというテキストエディタの使い方についてまとめます。
テキストファイルとバイナリファイル
ファイルはその内容によって、テキストファイルとバイナリファイルの2種類に分けることができます。
ファイル | 概要 |
---|---|
テキストファイル | 文字列が書かれたファイルのこと。 例:プログラムのソースコード、HTMLファイル |
バイナリファイル | 文字列で書かれておらず、人が読むことを考慮していないもの。 例:画像ファイルや音声ファイル、Linuxコマンドの実態ファイル |
Linuxでは設定ファイルやアプリケーションのデータファイルなどの多くにはテキストファイルが使用されています。これはテキストファイルにはバイナリファイルにはない以下のような利点があるためです。
- 専用のアプリケーションを使用せずとも、内容が容易に理解できる
- 互換性が高く、1つのファイル形式を別のアプリケーションから利用しやすい
- Linuxにはテキストファイルを扱うためのコマンドが多く用意されており、それらの恩恵を受けられる
Vim
Linux向けのエディタには数多くの種類がありますが、ここではほとんどのLinuxディストリビューションに標準でインストールされているVimについてまとめます。
Vimのインストール
$vim --version#vimがインストールされているかの確認、バージョン情報が表示されればインストール済みインストールされていない場合は下記の手順
CentOS
$su #rootユーザへ変更$yum install vim #CentOSでのインストールコマンド
Ubuntu
$sudo apt-get install vim #Ubuntuでのインストールコマンド
Vimの起動と終了
Vimの起動コマンド
$vim #$ viでも良い
Vimの終了コマンド
:q <Enter>
Vimでファイルを開く・保存する
ファイルを開く
$vim newfile1.txt #ファイル名を指定してvimを起動。存在しないファイルを指定すると新規作成。ファイルの保存
:w <Enter>#既存のファイルの場合は上書き保存、新規の場合は新規作成される。:w <ファイル名><Enter> #:wの後にスペースを開けてファイル名を指定すると指定したファイル名で保存
ファイルを開いて編集した後に:qコマンドで終了しようとすると、ファイルが保存されていませんとエラーメッセージがでます。
この場合は:wでファイルを保存してから終了するか、現在の編集内容を破棄したい場合は:q!で終了できます。
vimの起動・終了に関するコマンドまとめ
コマンド | 内容 |
---|---|
:q | Vimを終了する |
:w | ファイルを上書き保存する |
:w <ファイル名> | ファイルを名前をつけて保存する |
:q! | ファイルを保存せずにVimを終了する |
Vimの編集操作
Vimを使ったテキストファイルの編集方法について解説していきます。
Vimのモード
Vimにはインサートモードとノーマルモードの2種類があります。
モード | 概要 |
---|---|
インサートモード | テキスト入力ができる状態のこと |
ノーマルモード | コマンド入力ができる状態のこと |
vimを起動した直後はノーマルモードです。iを押すとインサートモードに入ります。escを押すとノーマルモードに戻ります。
カーソルの移動
通常のカーソル移動
ノーマルモードでVimでカーソルを移動するにはh, k, j, lを使用します。もちろんカーソルキーでも移動できますが、カーソルキーを使うよりも手の移動が少ないため、コマンドを使用したカーソルの移動の方が疲れなくていいかもしれませんね。
インサートモードの場合は大人しくカーソルキーを使用しましょう。Ctrl+bなどの入力も^Bという文字列で解釈されます。
単語単位のカーソル移動
単語単位でカーソルを移動することもできます(w or bコマンド)。ただしVimでは「,」(カンマ)や「(」(カッコ)も文字列の区切りとして認識されます。これを無視したい場合はスペース区切りで単語を移動するコマンド(shift+w or b)を使います。
行単位のカーソル移動
大きなテキストファイルを扱う際には行番号を指定して移動すると便利です。「<行番号>shift+g」と入力するとファイルの<行番号>行目に移動します。
また、ファイルの最初と最後へ移動する機会は多いため、行番号を指定せずに移動できるコマンドが用意されています。ファイルの最初の行へはgg、最後の行へはGです。
コマンド | 内容 |
---|---|
h | 左に移動する |
j | 下に移動する |
k | 上に移動する |
l | 右に移動する |
w | 前方に単語1つ分移動する |
b | 後方に単語1つ分移動する |
shift+w | スペース区切りで前方に単語1つ分移動する |
shift+b | スペース区切りで後方に単語1つ分移動する |
<行番号>shift+g | <行番号>行目に移動 |
gg | 最初の行へ移動 |
shift+g | 最後の行へ移動 |
文字列の削除
ノーマルモードでカーソル一の文字列を削除する場合はxを押すことで削除が可能です。
コマンド | 内容 |
---|---|
x | カーソル位置の文字を削除する |
カット、コピー、ペースト
Vimでも、他のテキストエディタと同様にカット、コピー、ペーストが可能です。ただしこれらの呼び方がVimでは異なります。
一般的なエディタでの名称 | Vimでの名称 |
---|---|
カット | デリート(delete) |
コピー | ヤンク(yank) |
ペースト | プット(put) |
デリート
デリートを行うためには前出のxコマンドかdコマンドを使用します。ただしdコマンドはxコマンドとは使い方が異なります。dコマンドはdという文字の後ろにカーソル移動コマンドを合わせて指定する必要があります。
コマンド | 内容 |
---|---|
d$ | 行末までをデリート |
d0 | 行頭までをデリート |
x, dl | 1文字をデリート |
dw | 単語1文字をデリート |
dgg | 最初の行までをデリート |
dG | 最後の行までをデリート |
dd | 現在カーソルのある1行だけデリート |
ここで紹介したデリートコマンド以外にも、カーソル移動コマンドを組み合わせることで、dコマンドを使用することができます。
プット
dコマンドでデリートした文字列はプット(貼り付け)が可能です。貼り付けはpコマンドで実行できます。
コマンド | 内容 |
---|---|
p | デリート(dコマンド)した内容をプット(貼り付け) |
ヤンク
デリートではなく単にコピー(ヤンク)したい場合は、dの代わりにyコマンドを使用します。yもdと同様にyの後ろにカーソル移動コマンドを指定して使用します。
なお、現在カーソルのある1行だけをヤンクしたい場合は、yyというコマンドが使えます。
コマンド | 内容 |
---|---|
yy | 現在カーソルのある1行をヤンク |
その他の操作
下の行と連結する
行末の改行を削除して2行を1行としてまとめる場合にjコマンドが使用できます。
コマンド | 内容 |
---|---|
j | 現在の行とそのすぐ下の行を連結されて1つの行にする |
アンドゥ(元に戻す)とリドゥ(やり直し)
Vimではデリートなどの直後に、編集操作をやり直すことができます。直前の編集操作を取り消して前の状態に戻るには、uコマンドを使用します。この機能をアンドゥ(undo)といいます。
間違ってアンドゥしてしまった場合は、Ctrl+rを押すとアンドゥを取り消すことができます。これをリドゥと呼びます。
コマンド | 内容 |
---|---|
u | 編集操作をやり直す(アンドゥ) |
Ctrl+r | アンドゥを取り消す(リドゥ) |
検索と置換
検索
Vimではファイル内の文字列検索ができます。
文字列の検索はLinuxでlessコマンドを実行したときと同様の操作で行うことができます。
コマンド | 内容 |
---|---|
/<文字列> | 下方向に向かって<文字列>を検索する |
?<文字列> | 上方向に向かって<文字列>を検索する |
n | 次の検索結果に移動する |
shift+n | 前の検索結果に移動する |
置換
テキストファイルの中である文字列を別の文字列に置き換えたい場合には、次のコマンドを利用します。
これまでと同様に:を押すと再家業にコマンド入力欄が表示されますので、そこに入力します。
:%s/<置換元文字列>/<置換後文字列>/g
ヘルプとドキュメント
これまで紹介してきた意外にもたくさんの機能がVimにはあります。ここでは必要に応じてvimの機能を調べられるようにドキュメントを紹介します。
$vimtutor #vimのチュートリアルを開始するコマンド:help #Vimを実行中にヘルプを起動 :qで終了
:help d
:help :w #:helpの後ろに特定のコマンド名や単語を指定すると関連するヘルプを表示することができる
Ctrl+] #helpのリンクへ
Ctrl+t #リンク先から元の場所へ戻る
ここまでのVimコマンドのまとめ
コマンド | 内容 |
---|---|
:q | Vimを終了する |
:w | ファイルを上書き保存する |
:w <ファイル名> | ファイルを名前をつけて保存する |
:q! | ファイルを保存せずにVimを終了する |
h | 左に移動する |
j | 下に移動する |
k | 上に移動する |
l | 右に移動する |
w | 前方に単語1つ分移動する |
b | 後方に単語1つ分移動する |
shift+w | スペース区切りで前方に単語1つ分移動する |
shift+b | スペース区切りで後方に単語1つ分移動する |
<行番号>shift+g | <行番号>行目に移動 |
gg | 最初の行へ移動 |
shift+g | 最後の行へ移動 |
d$ | 行末までをデリート |
d0 | 行頭までをデリート |
x, dl | 1文字をデリート |
dw | 単語1文字をデリート |
dgg | 最初の行までをデリート |
dG | 最後の行までをデリート |
dd | 現在カーソルのある1行だけデリート |
p | デリート(dコマンド)した内容をプット(貼り付け) |
yy | 現在カーソルのある1行をヤンク |
j | 現在の行とそのすぐ下の行を連結されて1つの行にする |
u | 編集操作をやり直す(アンドゥ) |
Ctrl+r | アンドゥを取り消す(リドゥ) |
/<文字列> | 下方向に向かって<文字列>を検索する |
?<文字列> | 上方向に向かって<文字列>を検索する |
n | 次の検索結果に移動する |
shift+n | 前の検索結果に移動する |
$vim #$ viでも良い
$vim newfile1.txt #ファイル名を指定してvimを起動。存在しないファイルを指定すると新規作成。
:%s/<置換元文字列>/<置換後文字列>/g
$vimtutor #vimのチュートリアルを開始するコマンド:help #Vimを実行中にヘルプを起動 :qで終了
:help d
:help :w #:helpの後ろに特定のコマンド名や単語を指定すると関連するヘルプを表示することができる
Ctrl+] #helpのリンクへ
Ctrl+t #リンク先から元の場所へ戻る