vimについて

# 目次
1. [vimとは](#vimとは)
2. [なぜvimなのか（vimの歴史）](#なぜvimなのかvimの歴史)
3. [参考](#参考)

## はじめに
この記事はvimの操作については触れていません。そもそもvimとはなんなのかについてまとめています。

## vimとは
vimとは「テキストエディタ」の一つです。
そもそも「テキストエディタ」とは「文字情報の入力・編集・保存を可能とするソフトウェア」のことで、メモ帳やVSCodeやAtomなどがあります。

しかし、vimは一般的なテキストエディタであるVSCodeやAtomなどと比べて大きく異なる特徴として、vimはCLI（Command Line Interface）であるということです。GUI(Graphical User Interface)はマウスで操作できるのに対し、CLIではコマンドラインで操作できます。つまり、キーボードだけで操作が完結でき、開発の速度を上げることにつながります。
## なぜvimなのか（vimの歴史）
vimはリリースから30年以上たった今でも多くの開発者に利用されています。[stackoverflow](https://survey.stackoverflow.co/2024/technology/#1-integrated-development-environment)が65,000人の開発者に調査した結果によると、vimは統合開発環境のランキングで５位となっています。ソフトウェアエンジニアの[Nikola Đuza](https://pragmaticpineapple.com/)氏は自身のブログでVimがなぜ開発者に広く普及したかをVimの歴史とともに語っています。

### vimの歴史~パンチカード~
初期のプログラミングは、パンチカードをコンピューターに挿入することで行われていました。これらを挿入する順序が非常に重要でした。例えば、この写真は4.5メガバイトのデータを62,500枚のパンチカードに積み重ねたものです。これを落としてしまい、再度並べ直さなければならないことを想像してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3720763/0abe5b7f-0a93-71fb-eead-cdb62bbfb14f.png)
### vimの歴史~ラインエディタ~
コンピュータの処理能力とストレージが向上し、最終的に、人々はパンチカードから離れ、「ラインエディタ」の時代が到来しました。その代表的な例の一つが[edエディタ](#ed使ってみた)です。LinuxやMacOSを使用している場合はターミナルからedエディタを使用することができます。（後で簡単な例を書きます。）
edの後に登場したのが、em(the “editor for mortals”)“凡人のためのエディタ”でした。emはedと同様のことができましたが、より「わかりやすく」、一般の人々のために作られていました。emのコードを基に、Bill Joyはexを開発しました。exは「拡張されたed(extended ed)」を意味します。exが重要だったのは、前のモードに加えて、ビジュアルモードを持っていたからです。このモードでは、ファイル全体を画面に表示することができます。
「どうしてもっと早くそれを考えなかったのだろう？」と思うかもしれませんが、当時のコンピュータでそのような表示を実現するのはかなり難しかったため、一部の人々はそれをリソースを大量に消費するものと見なしていました。しかし、その時点で、利点が反対意見を上回り、編集中のファイルを画面に開いて表示することが今日の標準となったのです。
こうして、ビジュアルモードが誕生し、その後、実行可能なviがオペレーティングシステムに導入されましたが、vi/vimで「:」を入力することでexコマンドにアクセスすることができます。exは1976年にリリースされ、viの実行ファイルは1979年にリリースされました。
### vimの歴史~vimの誕生~
数年後、多くのviクローンが登場し、その中の1つが「Vi Improved」で、これはBram Moolenaarによって作られました。これは、ターミナルでvimを開こうとすると表示される名前です。さまざまなviクローンの中で、vimは際立つことができました。BramはSTEVIEというviのクローンを使用し、多くのviコマンドが欠けていることに気づきました。彼は新しい機能をいくつか追加し、viとの互換性を持たせ、「Vi Imitation」という名前でリリースしました（後に「Vi Improved」に変更されました）。vimという名前は1993年のバージョン2.0で登場し、現在までその名前が使われています。vimは多くの優れた機能を備えており、viとの互換性もありました。これらの機能と互換性が、多くの人々を引き付け、使用されるようになったのです。
### vimの歴史~hjkl~
Vimで移動するための基本的なコマンド、h、j、k、lを見てみると、これらはすべて古いviの時代に由来しています。下の写真は当時のBill Joyのキーボードです。移動するためのカーソルキーはなく、ESCキーは今日のTABキーの位置にありました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3720763/5d93f8a7-1ac1-718c-87c9-dc9d57d181cb.png)

### ed使ってみた
適当なディレクトリにedでファイルを作ってみましょう。
Pでプロンプト＊(環境によって異なります。)を表示、aでインサートモードに入り、wで保存しqで終了することができました。
```
$ls -a
.	..
$ed
P
*a
This is insert mode.
Multiple lines of input are possible.
This is a test file.
This file was created by ed.
.
*w test
109
*q
$cat test
This is insert mode.
Multiple lines of input are possible.
This is a test file.
This file was created by ed.
```
exやviはedを基に作られたのでviのコマンドラインモードと操作方法は似ています。

テキストインターフェースが無い分vimよりも使いにくそうですが、シェルで操作している時に、短いファイルを編集する時には使うことができると思いました。ただし、１行ずつの編集となることには注意したいです。

## まとめ
今回はvimとは何かについてその歴史を遡ってしらべてみました。
vimの開発者でBram Moolenaar氏は2023年にこの世を去りましたが、以前はほかのOSSと違い全てのコミットがBram氏によって行われていました。Bram氏について調べてみるのもおもしろいかもしれません。

## 参考
- [How Did Vim Become So Popular](https://pragmaticpineapple.com/how-did-vim-become-so-popular/)
- [stackoverflow](https://survey.stackoverflow.co/2024/)
- [Vimって何？プログラミング言語？テキストエディタ？【Vimの基礎を解説】](https://www.engilaboo.com/what-is-vim/)
- [追悼 Bram Moolenaar](https://gihyo.jp/article/2023/11/memorial-to-bram-moolenaar)