ViとVimについて調べましたが、まだ混乱しています。 [閉じる]

ViとVimについて調べましたが、まだ混乱しています。 [閉じる]

についての私の最初の記事unix.stackexchange.com。私が求めているものを調べずに飛び込むことはありませんので、この投稿のタイトルに基づいて反応しないでください。

Vi私はそのトピックについてかなり多くの研究をしましたVim。複数のフォーラムだけでなくこれこれまたはこれスレッドストーリー、ウィムスーパーセット寸法、便利な利点がたくさん追加されました。

混乱 #1
しかし、今は(このオペレーティングシステムをよりよく学びたいので)、深いLinux講座を聞いていますが、Linux Foundationインストラクターはこう述べています。

通常、ディストリビューションにインストールされたプログラムは次のとおりです。ウィム寸法エイリアスで連結するだけです。

私がオンにしてもこれは合理的なようです。または精力私の端末でまったく同じ同じソフトウェア名、バージョン、作成者などでスタート画面が起動します。

混乱 #2
しかし、どのvimそしてどの6/usr/bin/ディレクトリ内の他のファイルを印刷します。

だから一方では、多くの人がこう言っているので、私は本当に混乱しています。ウィムスーパーセット寸法ところで、反面に私が今やっている授業では両方とも言いましたよ。ウィム、および開くまたは精力、実は、ほぼ(同じソフトウェアのように見えますが、動作が異なるため)がこれを証明します。

混乱 #3
だから、

  1. 人々はなぜ話すのですか?寸法そしてウィム2つの異なるプログラムです。ウィムスーパーセット寸法?少なくともCentOS 7では、同じようなスタート画面とバージョン番号があるからです。

  2. または多分寸法エイリアスですウィム特に現在使用しているCentOS 7では、通常(他のオペレーティングシステムでは)2つの異なるプログラムですか?しかし、繰り返しますが、彼らは2つの異なるバイナリです。まったく同じ本当に混乱したスタート画面です。

  3. 違いがなければ、次のように.javaソースファイルを開くと強調表示されるのはなぜですか?精力そして - いいえ、私が開くと

この投稿が多少混乱している場合は申し訳ありません。しかし、それがまさに私を混乱させることであり、私が収集して観察したすべての情報はまさにこれだからです。

それらは同じようですが(講師が主張している)、互いに異なると聞いて(他のフォーラムで)実際に動作し(このJavaファイルの場合)、表示されます(どの)他。

それでは、これから何を理解する必要がありますか?

修正する:

要求どおりに実行vi --versionvim --version、以下を出力します。

vi --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:43:23)
Included patches: 1-207, 209-629
Modified by <[email protected]>
Compiled by <[email protected]>
Small version without GUI.  Features included (+) or not (-):

vim --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:44:08)
Included patches: 1-207, 209-629
Modified by <[email protected]>
Compiled by <[email protected]>
Small version without GUI.  Features included (+) or not (-):

答え1

もともとviは1976年にBill Joyによって作成されました。 vi エディタは今後何度も再実装され、vi という名前は「オリジナル vi のコマンドとキーバインディングを大まかに実装するすべてのプログラム」を意味します。 viが「aspirin」や「escalator」という言葉などの商標を失ったと言うことができます。

Vimはもともとviよりも多くの機能を実装していますが、まだ広く「vi」と互換性があるため、viの親セットと見なされます。

viコンピュータにコマンドとコマンドの両方が存在するのは、vimプログラムの一部の使用が「vi」と同じように動作するためです。プログラムがvi小さいので、すぐに起動します。 Vimはいくつかの編集コマンドを少し異なる方法で行うことができますが、これは間違っていると見なされる可能性があります。これはviコマンドをスクリプト化するときに特に重要です。他のプログラムやスクリプトでそれを使用する場合は、出力が「正しい」ことが必要です。

2つのプログラムを1つにまとめたBashシェルにも同じデザインが適用されます。 asが呼び出されると、shBashは元のバージョンをエミュレートします/bin/sh。つまり、機能を制限し、asが呼び出されたときといくつかの点でわずかに異なる動作をしますbash

同じスタート画面に一致するバージョン番号が表示されるのは、両方のプログラムが同じソースから来て一緒に開発されたためです。同じソースコードを共有することもできます。

答え2

VimはBill Joyの元のviから出てきました。しかし、今日のvim開発はviよりはるかに強力であるため、多くのディストリビューション(CentOSを含む)では、より強力なvimを使用して元のvi動作をエミュレートしています。

質問/混乱に答えるには:

  1. viを開くと、vimと同じスタート画面が開きます(自分をvimと呼びます)。なぜなら、vimは実際にはもともとviではなく実行中のvimの単純なバージョンだからです。

  2. /usr/bin/vi/usr/bin/vimどちらも実際にvimソースコードでコンパイルされていますが、機能(オプション)が異なるため、異なるバイナリです。

  3. 使用時に構文強調機能は使用できませんがvi file.javavim file.java別のオプションでコンパイルしたためです。/usr/bin/vim --versionとの出力を注意深く見ると、前者は/usr/bin/vi --version.+syntaxのような関数を表示し、後者は-syntax

これがなぜ混乱しているのか理解し、役に立つことを願っています。

答え3

vi --version合計出力からvim --version

vi --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:43:23)
Included patches: 1-207, 209-629
Modified by <[email protected]>
Compiled by <[email protected]>
Small version without GUI.  Features included (+) or not (-):


vim --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:44:08)
Included patches: 1-207, 209-629
Modified by <[email protected]>
Compiled by <[email protected]>
Small version without GUI.  Features included (+) or not (-):

...私は次の結論を下しました。

2020年12月15日16:43:23に、RedHatのパッケージビルダーは、使用している時間帯に関係なくvim 7.4ソースコードを解凍し、複数のパッチを適用し、一連のコンパイル時構成設定を使用してバイナリビルドを開始しました。viユーザーフレンドリーな機能を無効にしても、できるだけコンパクトでクラシックとできるだけ互換性があるように設計されています。結果のバイナリの名前は/usr/bin/viRPMパッケージにパッケージ化されますvim-minimal

注:結果のバイナリの名前はですが、vi間違いなくまだVimです。viデフォルトでは互換モードになっています。

その後、16:44:88に同じソースコードとパッチを使用しますが、別のコンパイル時構成設定を使用して別のパッケージビルド操作が開始されます。これはより多くのディスク領域を消費し、あるvi点で従来の構成とは若干異なる場合がありますが、より現代的で機能豊富な構成を構築するように構成されています。このコンパイルによって生成されたバイナリには名前が付けられて/usr/bin/vimいますvim-enhanced

(このバージョンが示すように、パッケージバージョンではSmall version without GUIありませんvim-X11。3番目のビルド実行と別のRPMパッケージになります。)


元のバージョンはvi1970年代にBill Joyによって書かれ、1978年にBSD Unixの一部としてリリースされ、その後さまざまな商用Unixにライセンスが付与されました。 1983年、コードベースの所有権はUNIX System Vの一部としてAT&Tに移転されました。したがって、2002年のライセンス規則が緩和されるまで、AT&Tソースコードのライセンスを持つ個人と会社のみがそれを配布することができましたviviしかし、ライセンスに必要な高価なバージョンはありません。

vim改善されたクローンの一つです。 1991年に大衆に発売され、その後広範なクロスプラットフォーム開発を経ています。これはオリジナルよりもユニークになり、viおそらく最も広く使用されているレプリカですvi

RedHatのVimパッケージングは​​、単一のソースコードパッケージから生成されたバイナリファイルを複数のRPMバイナリパッケージ(、および)に分割しますvim-common。その中には、他のパッケージがVimに機能を追加する構文やファイル形式の定義、または他のファイルを配置できるいくつかのディレクトリが定義されています。パッケージによって異なり、含まれるファイルまたは必須ファイルが含まれます。オンラインヘルプファイルも利用できますが、必ずしも必要ではありません。vim-filesystemvim-minimalvim-enhancedvim-X11vim-filesystemvim-commonvim-filesystemvim-enhancedvim-X11vim-commonvim-minimal

vim-minimal[/usr]/bin/viバイナリ、 /usr/bin/ex設定ファイル、および対応するマニュアルページを提供します。/usr/bin/rvi/usr/bin/[r]view/etc/virc

vim-enhancedより近代的なコンパイル時構成のデフォルト値を提供します/usr/bin/vimが、それでも端末ベースのUIのみがあります。完全なX11 GUIとマウスのサポート(と呼ばれるバイナリを含む)を持つVimバージョンを提供するために明示的にPerlとvim-commonvim-X11/usr/bin/gvimvim-enhanced

RedHatインストーラで「最小インストール」を選択した場合にも含めることができますが、vim-minimalまたはは完全にオプションです。vim-enhancedvim-X11

プロセスの詳細については、.src.rpmこれらのバイナリRPMをすべてビルドする適切なパッケージをダウンロードし、それらを空のディレクトリに抽出してから、ルートディレクトリでファイルを調べることをお勧めしvim.specます。このファイルには、各Vimバージョンの正確な設定オプションが含まれています。

伝統文化に興味があるならviex-vi.sourceforge.netにあります。。しかし、ほとんどの最新のLinuxディストリビューション(組み込みプラットフォームをターゲットにしていない、または絶対最小サイズに制限されていない)は、おそらくVimをレガシーですvi

関連情報