オプションを設定してvi/vimを使いやすくする〜初心者編

Linux使いなら最低限使い方をマスターすべきvi/vim(以下viで統一)エディタ。

重要度こそ2ですが、LinuCレベル1の主題「1.03:GNUとUnixのコマンド」の最後の項目「1.03.5 エディタを使った基本的なファイル編集の実行」でもviの使い方が問われます。

今回はviでテキスト入力や検索・置換などの練習をする際などに使える、便利なオプション機能を初心者向けにご紹介します。

viオプションの形式

viではオプションを実行するには、(exコマンドの)setオプションを使用します。:(セミコロン)に続いて任意のオプションを入力します。

setオプションは主に以下のような形式で利用します。

:set [オプション]
:set no[オプション]
:set [オプション]=[値]

初心者にオススメのviオプション

個人的に初心者の方にオススメしたいsetオプションを幾つかご紹介します。見出しの後ろの★はリナスク的重要度です。重要度の高いコマンドはLinuC試験で出題される可能性大です。

set number — 行番号を表示 ★★★

一番有名なのが、viの画面上の各行の頭に行番号を表示してくれるコマンド。

:set number

後者のnumberを短縮して :set nu でもOKです。

ちなみに、/etc/passwdのファイルをviで開いて、上記コマンドを入力すると以下のように表示されます。

 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8 halt:x:7:0:halt:/sbin:/sbin/halt 9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10 operator:x:11:0:operator:/root:/sbin/nologin 11 games:x:12:100:games:/usr/games:/sbin/nologin 12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 13 nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin 14 dbus:x:81:81:System message bus:/:/sbin/nologin 15 systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin 16 systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin 17 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin 18 polkitd:x:998:996:User for polkitd:/:/sbin/nologin 19 geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin 20 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
:set nu

オプションを取り消す場合は、

:set nonumber

です。または省略形で :set nonuです。なお、noとオプションの間にスペースは入りません。

エスパくん

行番号があると無いとでは大違い。人に説明する時にも便利ですよね。

set tabstop — タブで移動する文字数を制御 ★★★

:set tabstop=[数値]

タブキーを押した時に数値で指定した文字数分のスペースを入力してくれるというものです。いわゆるインデントですね。ちなみに、tabstopはtsに省略可能です。

標準では8文字分なのでこんか感じになります。

 1 aaaa bbbb cccc dddd 2 eeee ffff gggg hhhh 3 iiii jjjj kkkk llll 4 mmmm nnnn oooo pppp
:set tabstop=4

にしてみると、

 1 aaaa bbbb cccc dddd 2 eeee ffff gggg hhhh 3 iiii jjjj kkkk llll 4 mmmm nnnn oooo pppp

タブキーを入力した箇所が4文字分のスペースに変更されました。

インデント(字下げ)を多用するような文章作成時に便利かと。

エスパくん

標準ではタブキーで8文字のスペースが入るのですが、空きすぎて視認性が悪くなる気がするんですよね。

set ignorecase — 大文字小文字を区別しない ★★

:set ignorecase

大文字小文字を区別しないので、特定の用語を検索したい時などに便利です。ignorecaseはicに省略も可能です。

エスパくん

OpenSSHの設定ファイル「sshd_config」では、認証を意味する「Auth」のように頭に大文字のAが付く用語もあれば、小文字で始まる「auth」が途中に入っている用語もあります。

set autoindent — 改行時にインデントを揃える ★

:set autoindent

読んで字の如く、改行時に前行と頭を揃えてくれます。コーディングの記述時などに便利です。

set wrap — テキストの折り返し ★

:set wrap

長いテキストを画面の右端で折り返します。内容の把握や視認性を挙げる目的で使います。

上:wrap有効 下:無効(nowrap)

set background — エディタ画面の色調整を最適化する

:set background=[dark/light]

viの環境にもよりますが、エディタの画面を黒やグレーなどの暗い下地にしている場合、または白などの明るい下地にしている場合に視認性を良くしてくれます。backgroundはbgに省略可能です。

左:bg=dark 右:通常起動

上の例では左がオプションが有効になった状態です。右と比較して青い文字が明るい水色になって、視認性がグッと上がっているのが確認できます。

なお、ディストリビューションによって、viとvimで表示が変わる場合があります。

set list — 見えない文字を可視化

:set list

改行やスペースなど、通常は見えない(隠している)文字を可視化します。コンサートなどのセットリストではありません。

aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp

上のテキストを表示した状態でset listを入力すると以下のような表示になります。

aaaa^Ibbbb^Icccc^Idddd$
^Ieeee^Iffff^Igggg^Ihhhh$
^I^Iiiii^Ijjjj^Ikkkk^Illll$
^I^I^Immmm^Innnn^Ioooo^Ipppp$

タブが「^」、改行が「$」に置き換わっています。

初期設定ファイルを作成してオプションを常用する

ここまでご紹介したviのオプションですが、毎回毎回viを立ち上げてから入力するのも面倒です。

常用したいオプションをまとめて「.vimrc」というファイルに記述し、ホームディレクトリに置くことで、vi立ち上げ時にオプション設定が自動的に有効になります。

.vimrcは不可視のテキストファイルですが、viで作るも良し、echoコマンドと標準出力を組み合わせて作っても良いでしょう。以下、後者でサンプルを作ってみます。

$ echo set nu > .vimrc
$ echo set ts=4 >> .vimrc
$ echo set ignorecase >> .vimrc
$ echo set autoindent >> .vimrc
$ echo set wrap >> .vimrc
$ echo set bg=dark >> .vimrc

catで.vimrcの中身を確認するとこんな感じ。

$ cat .vimrc
set nu
set ts=4
set ignorecase
set autoindent
set wrap
set bg=dark

以降は、このファイルで設定したオプションが反映された状態でviを使うことができます。

ついでに覚えておきたいviの便利コマンド

noh — ハイライト表示を解除 ★★★

viの環境によってはワード検索を実行すると、その語句がハイライト表示される場合があります。一度ハイライトされた語句は次の検索が実行されるまでハイライトされたままになります。

nohはそれを解除したい時に使います。nohighlightの頭三文字と覚えれば忘れないと思います。なお、このオプションにはsetの入力は必要ありません。

:noh
左はkeyで検索した後の画面。その状態で:nohを入力すれば右のようにハイライトが消える。

なお、ディストリビューションによって、viとvimで様々な表示が異なる場合があります。全体的に色つきで利用したい時は意図的にvimを使いましょう。

エスパくん

Linuxの学習では様々な状況下でviで設定ファイルを編集する機会が多く、設定ファイルの行数が多ければ多いほど検索を多用するので結構重宝します。