Vimのモード

 もしもあなたが真にVimを使いこなしたいと思うならば、次に行うべきことはそれぞれのVimに付属したチュートリアルをこなすことです。


 本来、 vim-jp版のチュートリアルはShellから呼んでやる必要があります。 Shellというのは映像作品でハッカーがカタカタやってウィンドウに大量に出すアレです(厳密にはアレはターミナルですが)。 Shellからチュートリアルを呼ぶには PATHを通すという作業が必要なのですが、文書の執筆には関係ないので、ここでは触れません。


 幸いにも、 vim-jp版ではgvim.exeと同じフォルダにある vimtutor.batからでもチュートリアルを起動することができます( vim-Kaoriyaではgvimを起動した状態で「:Tutorial」とタイピングしてリターンキーを押すと開始できます)。


 実の所、 vimの操作についてはここで話をするよりも、チュートリアルを受けてもらった方が解りやすいと思われるので、ここではチュートリアルを受ける前に知っておくと便利な、「モード」という概念について説明します。


 そして、このモードこそが、本来カクヨムでは読む方も書く方も辛いプログラムの紹介に、筆者を踏み切らせた存在なのです。


 さて、「モード」とは何かということを簡単に説明すると、「モード」とはモードです。これは別に反復で遊んでいるわけではありません(今、少しだけ嘘をつきました)。モード、日本語に訳するならば「状態」ですが、これは言葉の意味の通り、 Vimが「何をするための状態にいるか」を示すラベルです。


 Vimには基本的には 4つのモードしかありません(置換モードや各種一時モードなどを含める教義もあります)。


 モードはそれぞれ、「ノーマルモード」、「インサートモード」、「ビジュアルモード」、「Exモード」と呼ばれます。


 以下で、それぞれのモードで Vimが何をするのかを見てみましょう。


 ・ノーマルモード


 ノーマルモードは通常の状態です。こう書くと、ふざけているように見えますが、実は、含蓄のある言葉なのです。


 ノーマルモードでモード変更以外に私達ができることは 2つだけ、カーソルを動かすことと、文章を整形することだけです。


 ノーマルモードにいる限り、文字を打つことも、文字列を選択することも、ファイルを保存することすらできません。にも関わらず、なぜ「通常の」モードと呼ばれるのでしょうか。それは、あなたが文章を書いている時に何をしているかを思い出すと、理解しやすいでしょう。


 あなたが文章をまさに書いている時には、あなたはキーボードを常識的な意味で叩いているでしょう(あるいは、それ以外の方法で文字を書き起こしているでしょう)。少なくとも、座っていた椅子を振り上げてキーボードを叩くよりは建設的に、文章を書き起こしているはずです。


 では、あなたの執筆活動はそれだけで尽きているでしょうか。もしあなたが無限のタイプライターとペアになった猿の一匹ならばこれで尽きているかもしれませんが、もう少し上等な執筆環境にいるのならば、頭の中でどんな文章を書こうかと考えているはずです。


 文章が頭の中からMMK(漏れて漏れて困る)ならば、文章を考えている時間とタイピング時間はほぼ等しいかもしれませんが、そうでないならば、文章を考えている時間はタイピング時間よりも長いでしょう。気に入らない表現や誤字誤用を探している時間、さらには次の展開を考えている時間を含めれば、確実にタイピング時間よりも考えている時間のほうが長いはずです(繰り返しになりますが、無限の猿の一匹である場合はその限りではありません)。


 この経験が私達にもたらす重要な示唆は、「文書を書く時間の大部分は思考の時間である」ということです。


 そして、私達がこの大部分の時間の内、並列して文字を打っている以外の時間で文書それ自体に何を行っているかと考えると、次に文字を打つ場所にカーソルを移動させるか、単語などの順番を並べ替えているか、特に何もしないか、と言った所ではないでしょうか。もしもあなたが紙の上に文書を書いているのならば、ペーパーベースボールの球を作ることもできるかもしれません。しかし、今はコンピュータ上での作業だけに限定しましょう。


 つまり、私達が文書を書く際における、文字を打つ以外の「通常の状態」は奇しくも Vimの「ノーマルモード」で出来ることしか行っていないのです。


 そのため、この状態はノーマルモードと呼ばれるのです。そして、そのために、仮にあなたのキーボードに ESCキーしかついていないとしても、このモードに戻ってくることができるのです。


 ・インサートモード


 インサートモードでできることは単純です。


 インサートモードでは文書に文字を入力することができます。


 ・ビジュアルモード


 ビジュアルモードでできることも単純です。


 ビジュアルモードでは文書の一部分を選択することができます。


 ただし、ビジュアルモードがインサートモードより少しだけ複雑なのは、ビジュアルモードには三種類のモードが含まれているということです。


 そのうちの1つは、他のエディタやアプリケーションでもお馴染みの「文字ごとに選択するモード」です。


 もう1つのモードである、「行ごとに選択するモード」もカーソルの使い方によっては馴染み深いかもしれません。


 しかし、最後のモードである「矩形選択モード」はエディタとしては珍しいでしょう。


 この矩形選択モードは、例えばお絵かきツールの範囲選択と同じように、指定した長方形の範囲内にあるすべての文字を選択するモードです。この文書ではこれ以上詳しく扱いませんが、このモードを使うことで、例えば任意の範囲にある複数行の行頭や行末に文字を追記するなどができ、コメントアウトや表の整形などに役立ちます。


 ・ Exモード


 実は筆者も勉強不足で、このあたりの正確な話はどうなっているのかわからないのですが、以下では直感的な説明を優先します。よくわかっていないというのは機能の話ではなく、中で何が起きているのかが良くわからないということです。


 さて、この節の最初で、 Vimの家系図について触れました。すなわち、「初めにedありき。 edからexができ、exからviができた。そして、viからVimができた。 ──Unix旧約聖書」[14] です。


 この経典に登場した exがExモードの正体のようなものです。


 歴史的な経緯を見ると、 Vimの前身である viは当初、ラインエディタであるexのビジュアルモード(ややこしいですが、Vimのビジュアルモードとは別です)として実装されました。つまり、exを見やすくするモードがviだったわけですが、 viがメインのモードとして使われるうちに、エディタとして独立したのです。とはいえ、中で動いているプログラムの思想はexゆずりでしたから、 viからexの機能を呼び出さなくてはなりません。この呼び出した際に使われるコマンドが「Exコマンド」と呼ばれているのです。


 そして、 Exコマンドを呼び出す際に Vimがいるモードと言う意味でノーマルモードは「コマンドモード」とも呼ばれることがあります。


 あやふやになるのはここからで、このExコマンドを呼び出せるモードは 2種類あります。


 1つは「コマンドラインモード」、もう1つは「Exモード」です。


 コマンドラインモードはノーマルモードから「:」をタイプすることで入ることができるモードで、 Exコマンドを1つ実行するとノーマルモードに戻ります。


 一方のExモードは、「Q」あるいは「gQ」を入力することで入ることができるモードで、 Vi(m)自体をexを模したモードに変化させ、「visual」コマンドを打たない限りExコマンドを入力し続けることができるモードです。


 このように書くと、コマンドラインモードは一度だけExモードに入るモードのように見えるのですが、実は「Q」で入ったExモードはコマンドラインモードで使用できるいくつかの機能(補完など)が使用できません(gQで入った場合は使用できます)。


 そのため、どちらが本体なのかは外から見る限り解らないのですが、 Exコマンドの名前を覚えていただきたいため、便宜上 4つめのモードをExモードに選ばせていただきます。


 ソースコード(設計図)を読めという声が聞こえてきそうですが、 Vimを構成するファイル群は気軽に踏み込んで良い領域ではないため、勘弁願います(実はVimは2023年までほぼ一人のエンジニアがメンテナンスしていたのですが、彼が2023年8月に亡くなったことで、今後の開発がどうなるのか注目を集めました。これはつまり、素人がチラッと目を通して良い物ではないことを意味します)。


 話を戻しますが、 Exコマンドで(モードの名前については触れたくないのです)できることの一部を挙げると、ファイルを開くことや編集内容の保存、単語の検索にウィンドウの操作、エディタの一時的な設定変更やエディタ自体の終了も Exコマンドで行われます。


 つまりは、文書に手を加えること以外のすべてをExコマンドが担っています(ただし、あなたに小説のアイデアを与えることは砂糖たっぷりのトーストが担うことでしょう)。


 Exコマンドの一覧をここに書くことは、賢人が避ける場所へ飛び込むことよりも愚かであるように思われるので、興味のある方は「h ex-cmd-index」とExモードかコマンドラインモードで打ってみてください。リターンキーを押すことをお忘れなく。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る