見出し画像

駆け出しVimmerがVimをざっくり説明してみた

お久しぶりです。

RUNTEQ在籍のハガユウキです。

今回は、駆け出しVimmerにキャリアチェンジした自分がVimをざっくり説明しようと思います。
Vim歴2日なので、間違っている箇所があるかもしれませんが、どうか温かい目で見守ってください。

※)この記事の対象者

以下の方に向けて記事を書いています。

・「Vimって何ですか?」と考えている方
・「VimとVSCodeの違いって何?」と思う方
・「Vimの”モード”って何?」を知りたい方
・「Vim使い始めたけど、キーバインドが多すぎてどれを使えばいいか分からない」と考えている方

熟練者の方がこの記事を読むと時間を無駄にしてしまうかもしれません。その点ご了承ください。また、macを使用して説明するのでWindowsをお使いの方は別の記事を参考にすることをオススメします。

0)何でこの記事を書こうと思ったの?

結論から言うと、多くの初学者が抱くVimへの”敷居の高さ”を解消するためにこの記事を書きました。
「Vim使いたいけど、難しそう。。」と感じている方や、「Vimについて、もっと知りたいけど、ネットや本を見ても難しくて理解できない」という方が多いのではないでしょうか。実は自分もその内の一人でした。RUNTEQのコミュニティを通してVimを知りましたが、とても難しく、「VSCodeのが良くね?」と考えていました。しかし、ある日、Vimでデバッグをしている動画を見たことで「やはり、GUI操作には限界がある。このままプログラミングを勉強しても、いずれ壁にぶち当たる。それならちゃんと一からCLIを勉強しよう。」と改心し、Linux、Vim、シェルスクリプトを勉強しました。そのおかげで、初心者に毛が生えたレベルですがVimを使いこなせるようになりました。この記事を通して一人でも多くのVimの疑問を解消できたら幸いです。

1)結局Vimって何なの?

Vimを一言で表すと、”高性能テキストエディタ”です。テキストエディタとはテキストファイルを作成・編集するためのツールです。代表的な例としては"Atom"や"VSCode"です。Vimとこれらのツールの違いは次の章で説明します。とりあえず、”Vimとは高性能テキストエディタであり、VSCode等の仲間である"ということを覚えておいてください。

2)VimとVSCodeの違いって何?

結論から言うと、”VimはCLIベースのテキストエディタであり、ターミナルエミュレータ上でキーボードを使って操作する。VSCodeはGUIベースのテキストエディタであり、お持ちのパソコンのディスプレイ上でマウスとキーボードを使って操作する。”です。
”ターミナルエミュレータ”とはシェルの入出力結果を返すソフトウェアであり、Macでは”ターミナル”と言われています。Vimはmacにデフォルトでインストールされており、ターミナルを起動後、"vim"と入力することでvimを立ち上げることができます。vimを立ち上げた後、":e ファイル名orディレクトリ名"でディレクトリやファイルをターミナル上で開くことができます。”:q”を入力することで元の画面に戻ることができます。

画像1

開きたいファイルやディレクトリが決まっているなら、"vim ファイル名orディレクトリor 相対パス or 絶対パス"と入力した方が楽です。(もし存在しないファイル名を入力した場合、新しいファイルが作成されます。そのファイルを":wq"で保存した場合、カレントディレクトリにファイルが保存されます。)
このコマンドを実行することで、vimを起動しつつファイルも同時に開くことができます。

画像2

ファイルを開いた後は、コードの編集をすることができます。

Vimの説明はこれまでにしておき、自分が感じたVimとVSCodeのメリット、デメリットをまとめます。

<Vim>
*メリット
・マウスを使わないのでコードの編集に集中できる。
・一つの画面でサーバーを起動したり、コードを書いたりできる。
・スタバでドヤれる。(どうしてもハッカー感がすごい出ちゃう。)

*デメリット
・ターミナルの操作に慣れていないとキツイ。
・Exコマンドやキーバインドを覚えなければいけない。
・Vimを使いこなす為に、シェルスクリプトやLinux等の勉強が必要になってしまう。単にテキストエディタを使ってプログラミングをすることが目的な方は、目的から大幅にズレてしまう。

<VSCode>
*メリット
・マウス操作なので、初心者や熟練者を問わず直観的に操作することができる。
・アプリを作っているとき、ファイルがどこにあるか分かりやすい。

*デメリット
・マウスとキーボードを使って操作をするのが面倒。
・gitコマンドの実行やサーバーを起動する際にターミナルにいちいち画面を切り替えるのが面倒。


まとめると、「あれ、Vimのがデメリット多くね?」となってしまったが、結局誰が使うかで利便性が全く違うのです。ローランドも言っていました。

30~40万円くらいのジャケットにユニクロのパンツ、タンクトップなどを着ている。

インナーは安い物を3着くらい買って着回し。

「結局服は、誰が着るか、俺が着るか。」

初心者の自分が使うと、どうしてもデメリットが多くなってしまいます。しかし、熟練者が使うことで圧倒的に素早く、効率良く作業を進めることができるのです。
個人的には、Vimに切り替えて良かったと思います。gitのコマンド打ったり、サーバーを起動するのに画面を切り替えるのめんどくさいなと感じていたので。笑

3)Vimの”モード”って何ですか?


(注)この章は読むのに時間がかかります。本当にVimを使いたいなと考えている人だけ読んでください。

Vimを使い倒すためには、まず"モード"を理解すべきだと思います。モードが何かを説明する前に、Vim上にあるさまざまなモードを以下に記します。

・ノーマルモード
・コマンドラインモード
・インサートモード
・ビジュアルモード
・検索モード

Vimの状態はモードという単位で分類されています。
Vimではこれらのモードを使い分けて、ファイルを編集します。
そのため、モードを理解しちゃえば、あとはキーバインドとExコマンドを覚えるだけでVimをある程度使いこなせます。多分です。
以下に各モードの特徴を説明します。

<ノーマルモード>
Vimの一番基本的なモードです。主に画面上の"カーソルを動かす”ために使います。"キーバインド"とはショートカットキーのようなものです。カーソル移動の主なキーバインドは以下の表1に記載します。

画像3

実はノーマルモードではカーソル移動の他に、”文字の削除(切り取り)”や”コピー&ペースト”を実行することができます。主なキーバインドを表2にまとめます。(yはヤンクの頭文字です。何でyが2回が連続しているかは分かりません。)

画像4

<コマンドラインモード>
ノーマルモードから”:”を入力することでコマンドモードに切り替えることが
できます。”:”の後ろにコマンドを入力します。(このコマンドのことをExコマンドと言うらしい。)  また、コマンドラインモードからノーマルモードに戻るためには"escキー"を押します。
このモードは主にファイルを保存したり、終了するときに使います。代表的なExコマンドは以下の通りです。

画像9

<インサートモード>
ノーマルモードからiを押すことでインサートモードに切り替えることができる。(iはインサートの頭文字が由来)
インサートモードに切り替えることで、文字の入力が可能になる。また、文字の削除も可能になる。(ノーマルモードでも文字の削除はできるけど。)
インサートモードからノーマルモードに切り替えるには"escキー"を使います。

<ビジュアルモード>
ノーマルモードから”v”を押すことでビジュアルモードに切り替えることができます。ビジュアルモードは主に複数の範囲をコピーしたり、削除する際に使います。ビジュアルモードからノーマルモードに切り替えるには"escキー"を使います。


画像6

ビジュアルモードの状態でカーソルを動かすと、カーソルが重なった行が反転します。その後"y"を押すことで複数行コピーできます。"y"ではなく"deleteキー”を押すことで複数行削除ができます。

説明し忘れてましたが、実は、ビジュアルモードは3種類あります。以下の表4にまとめます。

画像7

<検索モード>
ノーマルモードから"/"を入力することで検索モードに切り替えることができます。"/"の後ろに検索したい文字列を入力することで、その文字列がファイル中に含まれているかを検索します。もし見つかった場合、文字列間の移動は"n"で行います。戻る場合は"shift+n"です。
検索モードからノーマルモードに戻る場合は"escキー"を押します。

以上、モードの説明でした。

キーバインドは覚えるのが大変なので以下のサイトで学ぶことがオススメです。このサイト上にある迷路の問題はとても面白いです。

4)tmuxって何?

tmuxとは一つのターミナルの画面上に複数のウインドウ(ブラウザ上にあるタブのようなもの)を起動できるソフトウェアのことです。今回はインストールしたことを前提として話を進めます。tmuxを使うことで一つのターミナルの画面上でサーバーを起動したり、コードを編集したりすることができます。詳しいことは自分も理解していませんが、とりあえず、複数の作業を平行して一つの画面で行うことができるのです。

代表的なコマンドとキーバインドを表5と表6にまとめます。キーバインドに関しては人によって違うかもしれません。.tmux.confファイルがもし存在するならば、確認してみてください。(.tmux.confファイルでtmuxの設定ができます。)

画像8

画像10

5)最後に

拙い文章ですが最後まで読んでいただきありがとうございます。

勘違いしてほしくないことは、VimでもVSCodeでも作れるアプリケーションは同じです。Vimはアプリケーションを作るための手段であり、Vimを使っているからエライというわけではないのです。Vimを使うかはあくまで好みです。その点を留意してください。

私自身、まだまだ勉強中ですが、引き続きVimmerとして精進します。
もし、RUNTEQ生でVimをもっと知りたいという方は”Vimおじさん"という方がいるので、その人にお話を聞くとといいかもしれません!
RUNTEQ生ではなく、独学の方は以下の有料動画が参考になるのでオススメです。

以上です!

※)参考文献&動画

以下の記事と動画を勉強して、自分なりに要点を噛み砕いて、感じたことを説明してみました。しかし、もし著作権に触れている箇所や内容の間違いがございましたら、訂正または削除しますのでコメント欄にご意見下さい。


この記事が気に入ったらサポートをしてみませんか?