私は熱心な Vim ユーザーで、最近、Vim の仕組みに興味を持ちました。
通常のテキスト エディターを変換して Vi/m 機能を持たせるための基本を説明するチュートリアルがあるかどうかは誰にもわかりませんか? プログラミング言語は問題ではありません。私はかなりの経験豊富なプログラマーです。
これまでに次のリソースを見つけました。
私は熱心な Vim ユーザーで、最近、Vim の仕組みに興味を持ちました。
通常のテキスト エディターを変換して Vi/m 機能を持たせるための基本を説明するチュートリアルがあるかどうかは誰にもわかりませんか? プログラミング言語は問題ではありません。私はかなりの経験豊富なプログラマーです。
これまでに次のリソースを見つけました。
まず、VI/VIMは実際には2つの部分であることを知っておく必要があると思います。1つはと呼ばれるビジュアルエディターvi
で、もう1つはと呼ばれるワンライナーエディターed
です。
(エディター)の上に構築されているため、実際にはビジュアルvi
エディターと呼ばれます。これはexモードの視覚的な部分であり、テキストを表示および編集できるため、visualからviという名前が付けられます。ed
exモードは、実際にはエディターの複製/表現ですed
。ターミナルで起動ed
し、デフォルトのViexコマンドを使用するだけです。ビジュアル、置換、挿入モードはによって使用されますvi
。たとえば、実際に同じことを実行しているコマンドがいくつかあります。たとえば、次のようになります。
:100 // Go to line 100, ex mode (ed)
100G // Go to line 100, normal mode(vi)
:.,5d // Delete 5 lines, ex mode (ed)
5dd // Delete 5 lines, normal mode (vi)
等々...
詳細については、優れた本 『オライリーからviとVimのエディターを学ぶ』を読むことをお勧めします。
ちょっとしたインスピレーションとして、さまざまな IDE での Vi エミュレーションの実装を見てみるとよいでしょう。
経験豊富な Vi ユーザーとして、Vi を他の (ビジュアル) エディタとは異なる主な 2 つの重要な側面があることを知っているでしょう。 - 入力モードEscと:それらを切り替える一般的な方法 - 複数のキーを押すと指図
多くの人が Vi キーボード マッピングのサブセットを既存のエディタに追加するのを見てきました。いくつかのものを適切にマッピングすることは可能ですが、エミュレーションを取得するには、おそらく既存のエディタのキーボード処理をかなり広範囲に置き換える必要があります。
もちろん、キーボード マッピングは十分に文書化されているため、実装するのはそれほど難しくありません。
次はコマンドモードの実装です。これを実装するために変更するエディターによって異なりますが、下部にある永続的なウィジェット/コントロールにフォーカスを変更することを想像します。そのコントロールに焦点を当てると、入力を簡単に処理し、Return キーが押されたときにコマンドを解析して処理できます。
コマンド モードの基本的な構文は ed/sed エディターから継承されているため、その実装 (または論文) を調べることができます。
全体として、vi に非常によく似た表面的な実装を取得することは、大規模な作業ではありません。しかし、それを本当にうまくやることは別の問題です。優れた Vim ( http://www.vim.org/ ) の使用を真剣に検討することをお勧めします。