テクノロジーの変化のスピードは、業界を特徴づける特徴であるように思われることがよくあります。最近の AI の進歩の容赦ない進歩ほど、その認識を際立たせるものはありません。しかし、テクノロジーの一部が変化する一方で、他の多くのものは変わりません。たとえば、vi などです。
viは、コンピュータに実際のグラフィカルインターフェイスがまだ存在していなかった時代にビル・ジョイによって作成されたプログラミングテキストエディタです。
1976年に最初のマイクロプロセッサである Intel 4004 の登場からわずか 5 年後です。コンピューター用語で言えば、古代エジプトの象形文字について話しているのと同じようなものかもしれません。それほど古いのです。
しかし、挿入モードとコマンドモードを分離するという基本的な設計は、現代の後継機種でも変更されていません。
ヴィム そして
ネオさんの実際、キーストロークを最小限に抑えてプログラマーの生産性を最大化するという vi の精神は、ほとんど歪みなく長年にわたって継承されてきました。1976 年には、ほとんどのコンピューターにマウスさえありませんでした。2024 年には、vi の後継ユーザーのほとんどは、プログラミング時にマウスさえ必要としません。
信じられない!ビル・ジョイがviを初めて世に出してから約半世紀が経った今、2024年に同じ風変わりなテキスト編集スタイルでモダンなウェブアプリを作れるなんて。 なぜ 私は Neovim を使用していますが、確かに特別な気分になります。
もう一つの特別な理由は、viがテキストを操作するターンをキーベースのストリートファイター形式にしていることだ。もちろん、パンチやキックの基本ボタンを覚えるだけでも楽しいが、このゲームは、それを実行した瞬間にまったく新しい次元を開く。
あなたの最初の波動拳 — ジョイスティックで半円を描いてからパンチを繰り出す火の玉の動きです。次は、すべての特別な動きと、それらをつなげてコンボにするテクニックを学びましょう。
Neovimで「ciq」を引っ張るとこんな感じです。これは「Change Inside Quotes」の略です。例えば、次のようなコード行の途中にいるとします。「puts ‘Hello World'”。カーソルを “Hello” の後ろに置いた状態で “ciq” を実行すると、引用符内のテキスト (“Hello World”) がすべて選択され、それが削除されて、カーソルが開始引用符の直後に配置され、新しいテキストを入力できるようになります。これはかなり魔法のようです。
そして、そこから先はずっと続きます。「dab」は「括弧の周りの削除」に使えます。これは、Rubyの行末にあるメソッドに使用されているすべてのパラメータを削除したいときに便利です。または、「vii」は「(視覚的に)内部を選択」に使えます。 [the current level of] 「インデント」を使用すると、メソッドの本体全体が強調表示され、貼り付け、コピー、または切り取りで上書きできるようになります。または、「yiw」のみを使用すると、単語内のどこにあっても、カーソルが置かれている現在の単語がコピーされ、クリップボードにコピーされます。
Neovim(および他のvi系)には、このような組み合わせが驚くほどたくさんあります。しかし、あなたはおそらくこう思っているでしょう。「そんなことを全部覚えられる人がいるだろうか?」ここでviの本当のすばらしさについてお話しします。それは単なるエディタではなく、 言語 編集用です。vi テキスト操作の基本的な文法を学習し、いくつかのアクション、スコープ、オブジェクトを学習すると、これらすべてを可能な限り任意の組み合わせで連結できるようになります。
構造は次のとおりです。 [Action] [Scope] [Object]上の例では、変更、選択、削除、コピーという 4 つのアクションをすでに説明しました。また、主なスコープは inside と around の 2 つだけです。さらに、引用符、括弧、インデント、単語という 4 つの異なるオブジェクトについても説明しました。これが言語です。
yaq = Copy (yank) Around Quotes
diw = Delete Inside Word
vab = Select (visually) Around Brackets
だんだん意味がわかってきましたか? では、コンボにもう 1 つの動き、つまりカウントを追加してみましょう。次のようにすることもできます。
3cw = Change Three Words
4dd = Delete Four Lines
10j = Jump Ten Lines
vi コマンド モードの学習にはこれ以外にも多くのことがありますが、私にとっては、これが魔法の場所です。テキスト操作の言語。アクション スコープ オブジェクト文法。それがクリックすると、コンボの連鎖が始まり、ドーパミンが流れ始めます。
これらのコンボをいくつかつなげて、その下にあるテキストが根本的に操作されるのを見るのは、独特の満足感があります。他のエディターでこれを行うのは面倒だったことは明らかです。それが、vi のパワームーブのゲームのような楽しさです。
もちろん、これらすべてにはまだかなりの学習曲線が伴います。テキスト操作に加えて、
基本的なナビゲーションキーストローク 学ぶには時間がかかりますが、まずは上で説明した基本的な文法から始めるべきだと思います。そこが楽しいところであり、やみつきになるところです。
Neovimはどのオペレーティングシステムでも実行できますが、次のような最新の高速ターミナルを使用するとよりうまく動作します。
アラクリッティ またはKitty。私は個人的にAlacrittyとNeovimをマルチペインターミナル拡張機能と一緒に使用しています
ゼリジパッケージ全体は、
オマクブ冒険心が Linux への旅にまで及ぶなら、Neovim は最適です。ただし、Neovim を楽しむために Linux を実行する必要はまったくありません。Mac でも Windows でも素晴らしいです。
ということで、以上です。これが、Neovim を導入して素晴らしい経験をしたという私の証言です。確かに、フラストレーションがなかったわけではありません (独自のスニペットを作成する方法を理解するなど)。また、愛用していた TextMate エディタを諦めたことに悲しみがなかったわけではありませんが、私は自信を持ってこう言えます。
2月からこのスタックを実行した後、今ではここが我が家のように感じます。コンボを叩き込み、波動拳を操る家。そして最高です。
今後50年以上も君臨し続けられますように!