vi vs vim、または、viを使用したい理由はありますか?


84

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

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


25
良い点viは、すべてのPOSIX準拠のシステム上にあると期待できることです。
ヨルダン

1
実際には、Ubuntuの標準インストールには含まviれないvim。.. Ubuntuは;-)ところで、ほとんどのユーザーフレンドリーなディストリビューションの一つである
amyassin

10
@amyassinこれは正しくありません。Ubuntuは、ほとんどのLinuxディストリビューションと同様、includes vimです。vivim、デフォルトのインストールで最終的に指すシンボリックリンクです。
jlliagre

2
私のアドバイスは次のとおりです。Vim viを使用しますが、のPOSIX仕様をvi使用して学習します。そうすれば、Vimの拡張機能を知っているだけでなく、ポータブルな知識も得られます。
ワイルドカード

1
@DDKあなたは私のステートメントで「最終的に」見逃した。"LS -lの/ etc /代替/ VI" - > "lrwxrwxrwx 1ルートルート17 janv 1 2016の/ etc /代替/ VI - 。> /usr/bin/vim.tiny"
jlliagre

回答:


61

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

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

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

これは、のような、よりオーソドックスシェルの実装に直面している非POSIXのbashisms使用してスクリプトで発生した問題と非常によく似ているdashかをksh


29

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

編集も読んでください:VIMを学ぶことは努力する価値がありますか?


4
うん。IDEを使用しません。なぜなら、使用を強制されるエディターはVimではないからです。
キース

1
@Keith XcodeとEclipseの両方を使用していますが、viのみで編集を行うことができます。
-ott--

@Keith SlickEditには優れたVimエミュレーションがあり、IDEAがそれに近づいています。また、Visual StudioにはViEmuがあります。
-demonkoryu

1
IntellIJには、標準エディターの動作をオーバーライドする素晴らしいvimプラグインもあります。
JulienD

24

私の人生の大部分(幼少期を除く)をVimで快適に編集した後、私はviのみを使用して約1か月を費やしました。そうすることで、私はすべてのテキスト変更のニーズについてVimに依存していたことに気付きました。viで旅行する前に、大きなファイルグループでテキストを置換したり、同様の操作を実行したりする必要がある:bufdoときはいつでも、Vimでファイルを開いてコマンドを実行し、いくつかのファイルをインデントまたはフォーマットする必要があったときは、それらをVimで開き、Vimのコマンドを使用=gwます。私はVimに依存していました。これらのコマンドを持っていなかったのviを実現した後、私はとバルクテキスト変換を実行することを余儀なくされたsedとのような他のプログラムについて多くのことを学んだawkし、indent。最終的にVimの使用に切り替えましたが、あまり機能のないエディターを使用して得た知識はかなりのものであり、非常に有用であることが証明されました。テキストエディター以外のツールについて学ぶことに加えて、私はviにも精通しました。Vimを持たない新しいシステムまたはサーバーで作業しているときはいつでも、1か月の遠足前よりもviを使用する方がはるかに快適だと感じています。

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


3
これはITの一般的な問題であることがわかりました。このツールは、学習したほうがよいことを隠すことにも役立ちます。
だんの

実際、多くのファイルでのインプレースファイル編集の処理は、AwkまたはSed でも移植性のある方法で行うことはできません。(-i両方のスイッチはGNU拡張機能です。)しかし、次のようなもので移植可能に使用できますfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

vimなしで生活するのは苦労しますが、viは我慢できません。ただし、前者を学習することで、少なくともそれが利用可能になった場合に後者に対処する方法のアイデアが得られます。

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

syntax enable
set nocp
set wildmenu

私が好む他のものがたくさんあります-ナウラップやナンバリングなど-しかし、気にしません。「syntax enable」は、基本的な構文の強調表示を有効にします(多少強力です:filetype plugin on基本的です)。「nocp」はviの互換性オフにします。showmodeこれにより、vimとye olde viが区別されるようになります(たとえば、コマンドまたは〜INSERT〜モード)。「wildmenu」は、いくつかのことを行うときに水平方向の補完メニューを提供するだけであり、これにより人生も楽になります。

vim のテキスト編集機能は他の追随を許しません。emacs以外は、近づいてくるソフトウェアを目にしたことも聞いたこともありません。習得するのは簡単ではありませんが、一度理解すれば、マウスメニューよりもはるかに高速で、マウスメニューベースのインターフェイスの単純なキーマクロの選択肢よりもはるかに動的です。プログラミングでは、EclipseのようなIDEとともにvimを使用することがありますが、ほとんどの作業はvimで行います。

そのパスをとる場合は、笑、オートコンプリートとタグリストプラグインを調べてください。そして、ダークサイドに注意してください。


私もいつも付け加えset mouse=aます。
-ott--

プログラミングコメントについては、eclimが面白いと思うかもしれません...
ire_and_curses

@ire_and_curses:試していません。Eclipseとvimは両方ともソースファイルを監視し、外部から更新できるようにします。あるデスクトップから別のデスクトップに切り替えると、あるデスクトップから別のデスクトップに切り替わります。かなりカントーのようです。
goldilocks

私はこの答えが選ばれた答えだとは思いませんが(偏っているので)、違いを理解するのに役立つのはまさにタイプの視点です。役職に就いてくれてありがとう。
ジェネラマ

8

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


1

コマンドを使用したテキストドキュメントまたは設定ファイルをコピーして貼り付ける場合にのみ選択Viすることに気付きました。これは、開いているドキュメントを開こうとすると、すべての行の前にコメントが強制されるためです。そのため、開いたドキュメントに使用したり、開いたドキュメントに使用すると、コピーしたものがそのまま貼り付けられます。それ以外は、一日中使っています。VIMcatctrl-cctrl-vVIMVictrl-vpasteViVIM

楽しい!


5
試してください:set paste
パトリック

3
設定pastetoggle =の.vimrcに<F2>(vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
デイブ

1

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

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

これはvi 自体の利点ではありません。vimを手動で簡単にインストールでき、テキストエディターを必要とするインストールで達成する必要はほとんどなく、vimが目的よりもviより優れている場合は何もありません。しかし、違いを理解し、viはvimよりも遍在的で軽量であるため、ニッチの利点がいくつかあります。

また、包括的にするために、viがvimの直接の前駆体であると明確に述べている人はいません。Vimは、viがそうであったすべてのものであるように特別に設計されていました。

そのため、非常に直接的な方法で、vimはviよりも優れています


1

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を介して、すべてのバッファー、引数、またはウィンドウでコマンドを実行する機能。

おそらくunix.stackexchange.com/a/425597/85039の回答で述べた「多くの、多くの」理由をここに持ち込むことができたでしょう。それはこの答えをもう少し良くするでしょう。それ以外の場合は、実際の回答よりもコメントのように
見え

取られたポイント。回答が更新されました。昨日作成した関連する回答から借用しています。
ポールT

1

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

マスターWqおよびUnixマスター

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

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

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

$ vi vim.c

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

「わからない」とUnixマスターは言った。「問題ではありません。」

マスターWqはうなずいた。Unixのマスターはしばらく驚いて座り、保存されていない文書を閉じました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.