* NIXテキストエディタ(現在nano
からvim
への移行中)について少し知っています。UnixおよびLinux SEで少し調べたところ、かなりの数の質問で「vim」の代わりにvi
が使用されていることに気付きました。私は「vim」が「Vi IMproved」の略であることを知っており、それを念頭に置いて、なぜ誰かがvimではなくviを使用するのか疑問に思っています。 viはvimに比べて大きな利点がありますか?
編集:私の質問は誤解されていると思います。 vimは、viに比べて、ほとんどの場合、はるかに強力で機能的に完全であることを知っています。私が知りたいのは、メモリ使用量が少ない、* nixシステムでの普及率など、viがvimよりも有利なケースがあるかどうかです。
vi
は(また) POSIX標準エディター です。たくさんの実装があり、少なくともLinuxではvim
が最も人気があるようです。
多くの伝統的なUnix準拠のOSは、標準に非常に近いvi
実装を提供しますが、vim
は、両刃の剣にする多くの追加機能を追加しました。
もちろん、これらの拡張機能は通常、編集プロセスを容易にし、有用な機能を提供するように設計されています。ただし、それらのいくつか(構文の色付けなどの表面的なものではなく、エディターの動作を変更するもの)に慣れると、それらが特定のものであることを簡単に忘れることができます。元のBSDコードに基づく実装を含め、別の実装を使用すると、非常にイライラすることがあります。反対も当てはまります。
これは、dash
やksh
などのよりオーソドックスなシェル実装に直面している非POSIX bashismを使用するスクリプトで発生する問題と非常に似ています。
どのviも、その逆ではなく、vimに比べて大きな利点はありません。 VimにはViよりも多くの利点があります。あなたは興味があるかもしれません: なぜ、ああ、なぜ、それらの#?@!ナッツヘッドはviを使用しますか?
編集も読む: 学習はVIM努力する価値があるか?
私の人生の大部分(子供時代を除く)をVimで快適に編集して過ごした後、私は約1か月かけてviだけを使いました。そうすることで、私はすべてのテキスト変更のニーズをVimに依存していたことに気付きました。 viを使う前は、テキストを置き換えたり、ファイルの大きなグループで同様の操作を実行したりする必要があるときはいつでも、Vimでファイルを開いて:bufdo
コマンド、そしていくつかのファイルをインデントまたはフォーマットする必要があるときはいつでも、それらをVimで開いてVimの=
およびgw
コマンド。私はVimに依存していました。 viにこれらのコマンドがないことに気付いた後、sed
を使用して大量のテキスト変換を実行せざるを得なくなり、awk
やindent
などの他のプログラムについて多くのことを学びました。結局Vimを使用するように切り替えましたが、あまり機能のないエディターを使用して得た知識はかなりのものであり、非常に有用であることが判明しました。テキストエディター以外のツールについて学ぶだけでなく、viについてもよく理解しました。新しいシステムやVimがインストールされていないサーバーで作業しているときはいつでも、1か月にわたる遠足の前よりも、viを使用するほうがはるかに快適です。
また、先月、安価なWM8650タブレットにLinuxをインストールしましたが、Vimとviの間に顕著なパフォーマンスの違いがあることがわかったので、タブレットでviを使用する傾向があります。
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で行います。
あなたがその道をたどったら、笑、オートコンプリートとタグリストのプラグインを調べてください。そして、ダークサイドに注意してください。
利点は、viが通常、AIXやSolarisなどのエンタープライズUNIXにプリインストールされていることです。さらに、vimはインストールメディアではアクセスできません。
これは Vim Koans からの抜粋です。
マスターWqとUnixマスター
古いUnixマスターがマスターWqにやって来ました。 「私は困っています、Wq。あなたはVimのやり方を教えます。 viは聖ですが、Vimはそうではありません。そのコードは無秩序に広がり、その機能は群衆メモリです。そのバイナリは広大で、その動作は一貫していません。これはUnixのやり方ではありません。学生を誤解させることを恐れています。何ができるでしょうか?」
マスターWQはうなずいた。 「あなたは正しい」と彼は言った。 「Vimは壊れています。修正しましょう。はじめましょう?"
古いUnixマスターが同意し、シェルを開きました。彼はタイプした:
$ vi vim.c
彼はコーディングを始めました。マスターWqはしばらく見てから、「viのどの実装を使用していますか? Nvi? Vim?エルビス?」
「わかりません」とUnixマスターは言いました。 「それは問題ではありません。」
マスターWQはうなずいた。 Unixマスターはしばらく気絶し、保存されていないドキュメントを閉じました。
以前の回答ですでに述べたように、viにはほとんどすべてのUNIXシステムが付属しています。
例を追加したかっただけです。 Arch Linuxは特に人気があり軽量なディストリビューションの1つであり、インストーラーもベースディストリビューションもデフォルトでvimに付属していませんが、どちらもviに付属しています。
これはviper seには利点がありません。vimを手動で簡単にインストールでき、テキストを必要とするインストールで実行する必要があることはほとんどないためです。エディター、およびvimが意図した目的でviより優れているものはありません。しかし、違いを理解し、viがvimよりユビキタスで軽量であることを理解すると、ニッチな利点がいくつか得られます。
また、包括的であるために、viがvimの直接の前駆体であることを明示的に言及した人はいません。 Vimは、Viが持つすべてのものになることを特に目指していました。
つまり、となるように設計されているため、vimはviより優れています。
Vimよりもviを使用する唯一の理由は、他に選択肢がない場合です。
Vimがviを表す理由はたくさんあります。
私が答えた関連する投稿から借ります:-
Vi
コマンドを使用したテキストドキュメントまたは構成ファイルをコピーして貼り付けるときに、onlyVIM
ではなくcat
を選択していることに気付きました。これは、開いたドキュメントVIM
にctrl-c
、次にctrl-v
を挿入しようとすると、すべての行の前にコメントが付けられるためです。したがって、Vi
からctrl-v
またはpaste
を使用してVi
の開いたドキュメントに挿入すると、コピーした内容が正確に貼り付けられます。それ以外は、VIM
を終日使用しています。
楽しい!