Vi vs vim, ya da vi'yi kullanmak istememin bir nedeni var mı?


84

* NIX metin editörlerini (şu andan itibaren nanogeçiş yapıyor vim) hakkında biraz bilgim var ve Unix ve Linux SE'de biraz etrafa baktıktan sonra, çok visayıda soruda 'vim' yerine kullanıldığını fark ettim . “Vim” in “Vi IM kanıtlanmış” anlamına geldiğini biliyorum ve bunun akılda tutulması neden birinin vim yerine neden vi'yı kullanacağını merak ediyorum. Vi'nin vim'e göre önemli bir üstünlüğü var mı?

Düzenleme: Sorumun yanlış yorumlandığını düşünüyorum. Vim'in, çoğunlukla, vi'den daha önemli ve daha güçlü ve özellik tamamlayıcı olduğunu biliyorum. Bilmek istediğim şey, vi'nin daha az bellek kullanımı, * nix sistemlerinde yaygınlık, vb. Gibi vim'e göre avantaj sağladığı olası durumlar varsa.


25
Güzel olan şey vi, her POSIX uyumlu sistemde olmasını beklemeniz olabilir.
Ürdün

1
Aslında, Ubuntu standart kurulum içerir vive vim
içermez

10
@amyassin Bu yanlıştır, Ubuntu, çoğu Linux dağıtımında olduğu gibi vim. visadece vimvarsayılan kurulumda işaret eden sembolik bir bağlantıdır .
jlliagre,

2
Tavsiyem: Vim kullanın, ancak vibunun için POSIX özelliklerinivi kullanmayı öğrenin . Bu şekilde Vim eklentilerini tanımanın yanı sıra taşınabilir bilginiz de vardır.
Joker

1
@DDK "En sonunda" ifademi kaçırdın. "ls -l / etc / alternatifler / vi" -> "lrwxrwxrwx 1 kök kökü 17 janv. 1 2016 / etc / alternative / vi -> /usr/bin/vim.tiny"
jlliagre

Yanıtlar:


61

vi(ayrıca) bir POSIX standart editörüdür . Çok sayıda uygulama var ve vimmuhtemelen en azından Linux'ta en popüler olanı.

Pek çok geleneksel Unix uyumlu işletim sistemi vistandarda çok yakın uygulamalar sunarken , vimonu iki ucu keskin bir kılıç yapan birçok ekstra özellik ekledi.

Elbette, bu uzantılar genellikle düzenleme işlemini kolaylaştırmak ve kullanışlı özellikler ve işlevler sağlamak için tasarlanmıştır. Ancak, bazılarına alışınca (sözdizimi renklendirmesi gibi kozmetik olanlar değil, editörün davranışını değiştirenler) alışkın olduklarını kolayca unutabilirsiniz; ve orijinal BSD koduna dayalı olanlar da dahil olmak üzere farklı bir uygulama kullanmak çok sinir bozucu olabilir. Bunun tersi de geçerlidir.

Bu, POSIX dışındaki temelleri kullanan betiklerde dashveya ile daha fazla ortodoks kabuk uygulamasına maruz kalan duruma oldukça benzer ksh.


29

Hiçbir vi tam tersi yerine vim üzerinde önemli bir avantaja sahip değildir. Vim'in Vi'den daha fazla avantajı var. İlginizi çekebilir: Neden, oh NEDEN, bu #? @! İlahiler vi kullanıyor mu?

Düzenleme ayrıca şunları da okuyun: VIM'i öğrenmeye değer mi?


4
Evet. IDE kullanmıyorum çünkü kullanmaya zorladıkları editörler Vim değil.
Keith

1
@Keith Hem Xcode hem de Eclipse kullanıyorum ve hala vi ile düzenleme yapıyorum.
ott

@Keith SlickEdit'in harika bir Vim emülasyonu var ve IDEA's yaklaşıyor. Ayrıca, Visual Studio ViEmu'ya sahiptir.
demonkoryu

1
IntellIJ ayrıca standart editörün davranışını geçersiz kılan hoş bir vim eklentisine sahiptir.
JulienD

24

Vim ile rahatça kurgu yaparak hayatımın büyük bir bölümünü (çocukluk dönemi dahil değil) geçirdikten sonra, sadece vi kullanarak yaklaşık bir ay geçirdim. Bunu yaparken, tüm metin değişiklik ihtiyaçlarım için Vim'e bağımlı olduğumu fark ettim. Vi ile olan yolculuğumdan önce, ne zaman bir metni değiştirmek ya da büyük bir dosya grubunda benzer bir işlem yapmak zorunda kalsam, sadece Vim'deki dosyaları açıp bir :bufdokomut çalıştırdım ve ne zaman bazı dosyaları girintilemek ya da biçimlendirmek zorunda kaldım, Ben Vim bunları açmak ve Vim en kullanmak =ve gwkomutları. Vim'a bağımlıydım. Bu komutlar yoktu vi anlayarak sonra birlikte toplu metin dönüşümleri gerçekleştirmek zorunda kaldı sedve bu şekilde diğer programlar hakkında çok şey öğrendim awkveindent. Sonunda Vim'i kullanmaya geri dönmeme rağmen, daha az özellikli bir editör kullanarak edindiğim bilgiler önemliydi ve çok faydalı olduğunu kanıtladı. Bir metin editörü dışındaki araçlar hakkında bilgi edinmenin yanı sıra, vi ile daha iyi tanıştım. Ne zaman yeni bir sistemde veya Vim'e sahip olmayan bir sunucu üzerinde çalışıyorsam, bir ay süren gezimden önce vi'yi kullanmaktan çok daha rahat hissediyorum.

Ayrıca, geçen ay Linux'u ucuz bir WM8650 tablete yükledim ve orada Vim ve vi arasında gözle görülür bir performans farkı olduğunu gördüm, bu yüzden tablette vi kullanma eğilimindeyim.


3
Bunun IT’de sıkça rastlanan bir sorun olduğunu biliyorum - öğrenmeden daha iyi olacağımız şeyleri gizlememize yardımcı olacak araçlar.
danno

Aslında, birçok dosya üzerinde taşıma yerinde dosya düzenleme portably awk veya Sed ile yapılamaz ya . (Her -iikisindeki anahtar bir GNU uzantısıdır.) Ancak bunları taşınabilir bir şekilde kullanabilirsinizfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

Vim olmadan yaşamaya zorlanırdım ama yaşayamam vi . Bununla birlikte, ilkini öğrenmek, en azından, mümkün olan her şey olduğunda, daha sonra nasıl başa çıkılacağına dair bir fikir verecektir.

Varsayılan olarak vim arayüzü aslında vi'ye oldukça yakındır. Eğer vim ile bir sistem üzerinde çalışıyorsam ilk yaptığım şey şu şeyleri eklemek ~/.vimrc:

syntax enable
set nocp
set wildmenu

Tercih ettiğim bir sürü şey daha var - şu an boşver ve numaralan, vb. - ama boşver. "sözdizimi etkinleştirme" yalnızca temel sözdizimi vurgulamasını açar (biraz daha keskin: filetype plugin onçok önemlidir); "nocp" , vi uyumluluğunu kapatır ve bu, vim'i sizden vi'den ayırmaya başlar (örneğin, showmodetüm tecrübeyi biraz daha insan yapan bir şey yapar, çünkü artık komuta sahibi olup olmadığınıza dair bir ipucu var). modu). "wildmenu", bazı şeyleri yaparken size hayatı kolaylaştıran yatay bir tamamlama menüsü sunar.

Metin düzenleme vim tesisleri hiçbiri ikinci - emacs'dan başka, ne gördüm ne yakın geliyor yazılım parçası duymadım. Öğrenmeleri kolay değildir, ancak bir kez onları tanıdığınızda, fare menülerinden çok daha hızlıdır ve fare menüsü tabanlı arayüzlerde basit temel makro alternatiflerinden çok daha dinamiktir. Programlama için bazen Eclipse benzeri bir IDE'nin yanında vim kullanıyorum, ancak işin çoğunu vim'de yapıyorum.

Bu yolu kullanırsanız, lol, otomatik tamamlama ve etiket listesi eklentileri bakın. Ve karanlık tarafa dikkat et.


Ben de daima eklerim set mouse=a.
ott

Programlama yorumunu ilgili olarak, bulduğun eclim ilginç ...
ire_and_curses

@ire_and_curses: denemedim Eclipse ve vim her ikisi de kaynak dosyaları izler ve harici olarak güncellenmelerine izin verir ve bir masaüstünden diğerine saygısızlık bir masaüstünden diğerine çevrilir. Oldukça fikir tho gibi görünüyor.
goldilocks

Her ne kadar bu cevabın seçilen cevap olması gerektiğini düşünmeme rağmen (önyargılı olduğu için), bu tam olarak farklılıkları anlamada yardımcı olan perspektif türü. Bir pozisyon aldığın için teşekkürler.
geneorama

8

Avantaj, vi'nin genellikle AIX veya Solaris gibi UNIX kurumlarında önceden kurulmuş olmasıdır. Bunun yanında vim, kurulum medyasında erişilebilir değildir.


1

Ben fark etmiş sadece seçim Viüzerinde VIMben kopyalama ve kullandığım bir metin belgesi veya yapılandırma dosyası yapıştırarak am zaman catkomutu. Ben çalıştığımda Bunun nedeni ctrl-cve sonra ctrl-viçine VIMaçılan belgede, bunlardan bir açıklama Infront sahip tüm satırları zorlar. Kullandığım Yani Vietmek ctrl-vveya pasteiçine Viaçılan belgede, ben kopyalanmış tam olarak ne yapıştırır. Bunun dışında VIMbütün gün kullanıyorum .

Keyfini çıkarın!


5
Deneyin:set paste
Patrick

3
pastetoggle = <F2> 'yi .vimrc olarak ayarlayın ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave

1

Önceki cevapların daha önce de belirttiği gibi, vi hemen hemen her UNIX sistemiyle birlikte geliyor.

Sadece bir örnek eklemek istedim. Arch Linux, ne Yükleyici ne de temel dağıtım varsayılan olarak vim ile birlikte gelen, ancak her ikisi de vi ile gelen, özellikle popüler ve hafif bir dağıtımdır.

Bu, kendi başına bir avantaj değildir , çünkü basitçe vim'i manuel olarak yükleyebilirsiniz ve bir metin editörü gerektiren kurulumda yapmanız gereken çok az şey vardır ve vim'in istenen amaç için vi'den daha üstün olduğu hiçbir şey yoktur. Ancak farkı anlamak ve vi'nin her yerde bulunup daha hafif ve vim'den daha hafif olması ona bazı avantajlar sağlar.

Ayrıca, sadece kapsamlı olmak için, hiç kimse, vi'nin doğrudan vim için doğrudan bir öncül olduğunu açıkça dile getirmedi. Vim özellikle vi'nin olduğu her şey ve daha fazlası için özel olarak tasarlandı.

Dolayısıyla, çok doğrudan bir şekilde, vim vi'den daha üstündür, çünkü öyle olması için tasarlanmıştır .


1

Vi over vim over kullanmak için tek neden, başka seçeneğiniz olmadığı zamandır.

Vim'in "vi gelişmiş" anlamına gelmesinin birçok, birçok nedeni var!

İlgili bir yazıdan ödünç aldım.

  1. Çoklu pencereler - yatay, dikey ve sekmeler.
  2. Görsel vurgulama
  3. Yardım yardımı ile çevrimiçi yardım:.
  4. Makroları daha sonra gerçekleştirebileceğiniz bir kayıt defterine kaydedin.
  5. Eski vi'nin delisi geçişi geri almak yerine geri alma (ve yeniden yapma).
  6. Komut satırı geçmişi, arama geçmişi.
  7. Bir dizi mevcut fonksiyonla birlikte gömülü bir dil, örneğin getcwd ()
  8. Çok genişletilmiş desen eşleştirmesi.
  9. Ctrl-P ve ctrl-N ile sözcük tamamlama.
  10. Yerleşik bir dosya gezgini (biraz tuhaf, ancak yararlı olabilir).
  11. ESC anahtarı aslında (delice) çalıştırmak yerine vi'den olduğu gibi kaçmak istediğiniz komutlardan çıkar.
  12. Bufdo, argdo ve windo aracılığıyla tüm tamponlara, arglara veya pencerelere komutları çalıştırabilme.

Muhtemelen burada unix.stackexchange.com/a/425597/85039 numaralı cevapta bahsettiğiniz "çok, çok" nedenleri de getirmiş olabilirsiniz . Bu cevap biraz daha iyi olur; Aksi takdirde gerçek bir cevaptan çok bir yorum gibi gözüküyor
Sergiy Kolodyazhnyy

Alınan nokta. Cevap güncellendi, ilgili cevaplardan dün ödünç aldım.
Paul T

1

Bu, Vim Koans'ın gayretidir :

Usta Wq ve Unix ustası

Eski bir Unix ustası Usta Wq'ye geldi. “Ben sıkıntılıyım Wq. Vim'in yolunu öğretiyorsun. vi kutsaldır fakat Vim değildir; kodu genişler, özellikleri hafızada kalır; ikili dosyaları büyüktür, davranışları tutarsızdır. Bu Unix'in yolu değil. Korkarım öğrencileri yanlış yönlendiriyorsun. Ne yapılabilir?"

Usta Wq başını salladı. “Haklısın” dedi. “Vim bozuldu. Düzeltelim. Başlayalım mı?"

Eski Unix ustası kabul etti ve bir kabuk açtı. O yazdı:

$ vi vim.c

Kodlamaya başladı. Usta Wq bir süre izledim ve sonra “vi'nin hangi uygulamasını kullanıyorsunuz? NVI? Vim? Elvis?”

"Bilmiyorum" dedi Unix ustası. Önemli değil.

Usta Wq başını salladı. Unix ustası bir an için sersemlemiş ve belgesini kaydedilmemiş şekilde kapatmıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.