web-dev-qa-db-ja.com

vi vs vim、または、私がviを使いたいと思う理由はありますか?

* NIXテキストエディタ(現在nanoからvimへの移行中)について少し知っています。UnixおよびLinux SEで少し調べたところ、かなりの数の質問で「vim」の代わりにviが使用されていることに気付きました。私は「vim」が「Vi IMproved」の略であることを知っており、それを念頭に置いて、なぜ誰かがvimではなくviを使用するのか疑問に思っています。 viはvimに比べて大きな利点がありますか?

編集:私の質問は誤解されていると思います。 vimは、viに比べて、ほとんどの場合、はるかに強力で機能的に完全であることを知っています。私が知りたいのは、メモリ使用量が少ない、* nixシステムでの普及率など、viがvimよりも有利なケースがあるかどうかです。

89
fouric

viは(また) POSIX標準エディター です。たくさんの実装があり、少なくともLinuxではvimが最も人気があるようです。

多くの伝統的なUnix準拠のOSは、標準に非常に近いvi実装を提供しますが、vimは、両刃の剣にする多くの追加機能を追加しました。

もちろん、これらの拡張機能は通常、編集プロセスを容易にし、有用な機能を提供するように設計されています。ただし、それらのいくつか(構文の色付けなどの表面的なものではなく、エディターの動作を変更するもの)に慣れると、それらが特定のものであることを簡単に忘れることができます。元のBSDコードに基づく実装を含め、別の実装を使用すると、非常にイライラすることがあります。反対も当てはまります。

これは、dashkshなどのよりオーソドックスなシェル実装に直面している非POSIX bashismを使用するスクリプトで発生する問題と非常に似ています。

63
jlliagre

どのviも、その逆ではなく、vimに比べて大きな利点はありません。 VimにはViよりも多くの利点があります。あなたは興味があるかもしれません: なぜ、ああ、なぜ、それらの#?@!ナッツヘッドはviを使用しますか?

編集も読む: 学習はVIM努力する価値があるか?

29
abhixec

私の人生の大部分(子供時代を除く)をVimで快適に編集して過ごした後、私は約1か月かけてviだけを使いました。そうすることで、私はすべてのテキスト変更のニーズをVimに依存していたことに気付きました。 viを使う前は、テキストを置き換えたり、ファイルの大きなグループで同様の操作を実行したりする必要があるときはいつでも、Vimでファイルを開いて:bufdoコマンド、そしていくつかのファイルをインデントまたはフォーマットする必要があるときはいつでも、それらをVimで開いてVimの=およびgwコマンド。私はVimに依存していました。 viにこれらのコマンドがないことに気付いた後、sedを使用して大量のテキスト変換を実行せざるを得なくなり、awkindentなどの他のプログラムについて多くのことを学びました。結局Vimを使用するように切り替えましたが、あまり機能のないエディターを使用して得た知識はかなりのものであり、非常に有用であることが判明しました。テキストエディター以外のツールについて学ぶだけでなく、viについてもよく理解しました。新しいシステムやVimがインストールされていないサーバーで作業しているときはいつでも、1か月にわたる遠足の前よりも、viを使用するほうがはるかに快適です。

また、先月、安価なWM8650タブレットにLinuxをインストールしましたが、Vimとviの間に顕著なパフォーマンスの違いがあることがわかったので、タブレットでviを使用する傾向があります。

24
user26112

Vimなしでは苦労しますが、viは我慢できません。ただし、前者を学習すれば、少なくとも、前者を利用できる場合は後者に対処する方法についてのアイデアが残ります。

デフォルトのvimインターフェースは、実際にはviにかなり近いです。 vimを使用するシステムで作業している場合、最初に行うことは、次のものを~/.vimrcに追加することです。

syntax enable
set nocp
set wildmenu

私が好む他のものがたくさんあります-ラップや番号付けなど-気にしないでください。 「構文を有効にする」は、基本的な構文の強調表示をオンにするだけです(やや強調:filetype plugin onも基本です)。 "nocp" viの互換性をオフにしますそして、これがvimを以前のviと区別し始めます(たとえば、これによりshowmodeが有効になり、エクスペリエンス全体がやや人間味になります。コマンドモードか〜INSERT〜モードかについて手がかりを持っています)。 "wildmenu"は、いくつかのことを行うときに水平補完メニューを提供するだけです。

Vimのテキスト編集機能は、他の追随を許しません-emacsを除いて、私はソフトウェアが近づくのを見たり聞いたりしたことがありません。覚えるのは簡単ではありませんが、一度知ってしまえば、マウスメニューを使用するよりもはるかに高速で、マウスメニューベースのインターフェイスの単純なキーマクロの代替よりもはるかに動的です。プログラミングでは、IDEと一緒にEclipseのようにvimを使用することがありますが、ほとんどの作業はvimで行います。

あなたがその道をたどったら、笑、オートコンプリートとタグリストのプラグインを調べてください。そして、ダークサイドに注意してください。

12
goldilocks

利点は、viが通常、AIXやSolarisなどのエンタープライズUNIXにプリインストールされていることです。さらに、vimはインストールメディアではアクセスできません。

9
dchirikov

これは Vim Koans からの抜粋です。

マスターWqとUnixマスター

古いUnixマスターがマスターWqにやって来ました。 「私は困っています、Wq。あなたはVimのやり方を教えます。 viは聖ですが、Vimはそうではありません。そのコードは無秩序に広がり、その機能は群衆メモリです。そのバイナリは広大で、その動作は一貫していません。これはUnixのやり方ではありません。学生を誤解させることを恐れています。何ができるでしょうか?」

マスターWQはうなずいた。 「あなたは正しい」と彼は言った。 「Vimは壊れています。修正しましょう。はじめましょう?"

古いUnixマスターが同意し、シェルを開きました。彼はタイプした:

$ vi vim.c

彼はコーディングを始めました。マスターWqはしばらく見てから、「viのどの実装を使用していますか? Nvi? Vim?エルビス?」

「わかりません」とUnixマスターは言いました。 「それは問題ではありません。」

マスターWQはうなずいた。 Unixマスターはしばらく気絶し、保存されていないドキュメントを閉じました。

3
modlin

以前の回答ですでに述べたように、viにはほとんどすべてのUNIXシステムが付属しています。

例を追加したかっただけです。 Arch Linuxは特に人気があり軽量なディストリビューションの1つであり、インストーラーもベースディストリビューションもデフォルトでvimに付属していませんが、どちらもviに付属しています。

これはviper seには利点がありません。vimを手動で簡単にインストールでき、テキストを必要とするインストールで実行する必要があることはほとんどないためです。エディター、およびvimが意図した目的でviより優れているものはありません。しかし、違いを理解し、viがvimよりユビキタスで軽量であることを理解すると、ニッチな利点がいくつか得られます。

また、包括的であるために、viがvimの直接の前駆体であることを明示的に言及した人はいません。 Vimは、Viが持つすべてのものになることを特に目指していました。

つまり、となるように設計されているため、vimはviより優れています。

2
StatGenGeek

Vimよりもviを使用する唯一の理由は、他に選択肢がない場合です。

Vimがviを表す理由はたくさんあります。

私が答えた関連する投稿から借ります:-

  1. 複数のウィンドウ-水平、垂直、タブ。
  2. 視覚的な強調表示。
  3. :helpコマンドによるオンラインヘルプ。
  4. マクロをレジスターに記録し、それを実行できます。
  5. 古いviのとんでもない取り消しのトグルではなく、複数回取り消し(およびやり直し)します。
  6. コマンドライン履歴、検索履歴。
  7. 使用可能な関数のホストとともに埋め込まれた言語全体(例:getcwd())
  8. 大幅に拡張されたパターンマッチング。
  9. Ctrl-Pおよびctrl-Nによる単語補完。
  10. 組み込みのファイルナビゲーター(少し不格好ですが、便利な場合があります)。
  11. ESCキーは、viのように(めちゃくちゃに)コマンドを実行する代わりに、エスケープしようとしたコマンドを実際に終了します。
  12. Bufdo、argdo、windoを介してすべてのバッファー、引数、またはウィンドウでコマンドを実行する機能。
1
Paul T

Viコマンドを使用したテキストドキュメントまたは構成ファイルをコピーして貼り付けるときに、onlyVIMではなくcatを選択していることに気付きました。これは、開いたドキュメントVIMctrl-c、次にctrl-vを挿入しようとすると、すべての行の前にコメントが付けられるためです。したがって、Viからctrl-vまたはpasteを使用してViの開いたドキュメントに挿入すると、コピーした内容が正確に貼り付けられます。それ以外は、VIMを終日使用しています。

楽しい!

1
Tony-Caffe