Vi vs vim lub czy jest jakiś powód, dla którego chciałbym kiedykolwiek używać vi?


84

Wiem trochę o * nix edytory tekstu (obecnie migracja od nanodo vim), a po rozglądając się nieco na Unix i Linux SE, zauważyli, że vijest używana zamiast „vim” w sprawiedliwy liczby pytań. Wiem, że „vim” oznacza „Vi IMproved” i mając to na uwadze, zastanawiam się, dlaczego ktoś wolałby używać vi zamiast vim. Czy vi ma jakąkolwiek znaczącą przewagę nad vimem?

Edycja: Myślę, że moje pytanie jest źle interpretowane. Wiem, że vim jest w przeważającej części znacznie bardziej wydajny i kompletny niż vi. Chcę wiedzieć, czy są jakieś możliwe przypadki, w których vi ma przewagę nad vimem, takie jak mniejsze zużycie pamięci, rozpowszechnienie w systemach * nix itp.


25
Zaletą vijest to, że można oczekiwać, że będzie on dostępny w każdym systemie zgodnym z POSIX.
jordanm

1
W rzeczywistości standardowa instalacja Ubuntu obejmuje vii nie vim.. Ubuntu jest jedną z najbardziej przyjaznych dla użytkownika dystrybucji btw ;-)
amyassin 16.01.2013

10
@amyassin Jest to niepoprawne, obejmuje Ubuntu, podobnie jak większość dystrybucji Linuksa vim. vijest tylko dowiązaniem symbolicznym, które ostatecznie wskazuje vimna domyślną instalację.
jlliagre

2
Moja rada: używaj Vima, ale naucz się viużywać specyfikacji POSIX dlavi . W ten sposób masz przenośną wiedzę, a także znasz rozszerzenia Vima.
Wildcard,

1
@DDK Przegapiłeś „w końcu” w moim oświadczeniu. „ls -l / etc / alternatives / vi” -> „lrwxrwxrwx 1 root root 17 sty. 1 2016 / etc / alternatives / vi -> /usr/bin/vim.tiny”
jlliagre

Odpowiedzi:


61

vijest (także) standardowym edytorem POSIX . Istnieje wiele implementacji i vimprawdopodobnie jest najpopularniejsza przynajmniej w systemie Linux.

Podczas gdy wiele tradycyjnych systemów operacyjnych zgodnych z Uniksem zapewnia viimplementacje bardzo zbliżone do standardu, vimdodano wiele dodatkowych funkcji, które czynią go mieczem obosiecznym.

Oczywiście rozszerzenia te są zwykle zaprojektowane w celu ułatwienia procesu edycji i zapewnienia przydatnych funkcji i funkcjonalności. Kiedy jednak przyzwyczaisz się do niektórych z nich (nie kosmetycznych, takich jak kolorowanie składni, ale te, które zmieniają zachowanie redaktora), możesz łatwo zapomnieć o ich specyficzności; a zastosowanie innej implementacji, w tym opartej na oryginalnym kodzie BSD, może być bardzo frustrujące. Prawda jest również odwrotna.

Jest to dość podobne do problemu występującego w skryptach używających bashism innych niż POSIX w obliczu bardziej ortodoksyjnych implementacji powłoki, takich jak dashlub ksh.


29

Żadne vi nie ma żadnej znaczącej przewagi nad vimem, a jest na odwrót. Vim ma więcej zalet niż Vi. Możesz być zainteresowany: Dlaczego, och, DLACZEGO te #? @! orzechy używają vi?

Edytuj także czytaj: Czy nauka VIM jest warta wysiłku?


4
Tak. Nie używam żadnego IDE, ponieważ redaktorzy, których zmuszają do użycia, to po prostu nie Vim.
Keith,

1
@Keith Używam zarówno Xcode, jak i Eclipse i nadal mogę edytować tylko przy pomocy vi.
ott--

@Keith SlickEdit ma świetną emulację Vima, a IDEA zbliża się do tego. Ponadto Visual Studio ma ViEmu.
demonkoryu

1
IntellIJ posiada również przyjemną wtyczkę vim zastępującą standardowe zachowanie edytora.
JulienD

24

Po spędzeniu dużej części mojego życia (bez dzieciństwa) na wygodnej edycji z Vimem, spędziłem około miesiąca tylko używając vi. W ten sposób zdałem sobie sprawę, że byłem zależny od Vima w zakresie wszystkich moich potrzeb w zakresie modyfikacji tekstu. Przed podróżą z vi, ilekroć musiałem podmieniać jakiś tekst lub wykonywać podobną operację w dużej grupie plików, po prostu otwierałem pliki w Vimie i uruchamiałem :bufdopolecenie, i zawsze gdy musiałem wcinać lub formatować niektóre pliki, Otworzyłem je w Vimie i użyłem Vima =i gwpoleceń. Byłem zależny od Vima. Po uświadomieniu sobie, że vi nie ma tych poleceń, byłem zmuszony przeprowadzić masową transformację tekstu sedi dowiedziałem się wiele o innych programach, takich jak awkiindent. Chociaż ostatecznie wróciłem do korzystania z Vima, wiedza, którą zdobyłem dzięki mniej polecanemu edytorowi, była znacząca i okazała się niezwykle przydatna. Oprócz uczenia się o narzędziach poza edytorem tekstowym, poznałem także vi. Ilekroć pracuję nad nowym systemem lub serwerem, który nie ma Vima, czuję się znacznie bardziej komfortowo, używając vi niż przed moją miesięczną wycieczką.

Ponadto w zeszłym miesiącu zainstalowałem Linuksa na taniego tabletu WM8650 i zauważyłem zauważalną różnicę wydajności między Vimem a vi, więc zwykle używam vi na tablecie.


3
Uważam, że jest to powszechny problem w informatyce - narzędzia, które pomagają nam również ukrywać rzeczy, których lepiej byłoby się uczyć.
Danno

Faktycznie, obsługa edycji pliku w miejscu na wielu plikach nie może przenośnie być wykonane z Awk lub Sed albo . ( -iPrzełącznik na obu jest rozszerzeniem GNU.) Ale możesz używać ich przenośnie z czymś takimfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Wildcard

12

Trudno mi byłoby żyć bez vima, ale nie mogę znieść vi . Jednak nauczenie się tego pierwszego pozostawi przynajmniej pomysł, jak sobie z tym poradzić, kiedy to wszystko będzie dostępne.

Interfejs vima domyślnie jest właściwie bardzo zbliżony do vi. Jeśli pracuję na systemie z vimem, pierwszą rzeczą, którą robię, jest dodanie tych rzeczy do ~/.vimrc:

syntax enable
set nocp
set wildmenu

Jest kilka innych rzeczy, które wolę - teraz podsumowanie i numeracja itp. - Ale nieważne. „enable syntax enable” po prostu włącza podstawowe podświetlanie składni (nieco grubsze: filetype plugin onjest również fundamentalne); „nocp” wyłącza kompatybilność vi i właśnie to zaczyna odróżniać vima od ye olde vi (np. włącza, showmodeco czyni całe doświadczenie nieco bardziej ludzkim, ponieważ masz teraz pewne pojęcie, czy masz dowodzenie, czy ~ INSERT ~ tryb). „wildmenu” daje tylko poziome menu ukończenia podczas wykonywania niektórych czynności, co również ułatwia życie.

Funkcje edytowania tekstu w vimie nie mają sobie równych - oprócz emacsa, nigdy nie widziałem ani nie słyszałem o oprogramowaniu, które jest bliskie. Nie są łatwe do nauczenia, ale kiedy je znasz, są znacznie szybsze w użyciu niż menu myszy i znacznie bardziej dynamiczne niż proste alternatywne makra klawiszy w interfejsach opartych na menu myszy. Do programowania czasami używam vima razem z IDE, takim jak Eclipse, ale większość pracy wykonuję w vimie.

Jeśli pójdziesz tą ścieżką, Lol, zajrzyj do wtyczek autouzupełniania i taglist. I strzeżcie się ciemnej strony.


Zawsze set mouse=ateż dodaję .
ott--

Jeśli chodzi o komentarz do programowania, może się okazać, że eclim jest interesujący ...
ire_and_curses

@ire_and_curses: nie wypróbowałem. Zarówno Eclipse, jak i vim monitorują pliki źródłowe i pozwalają na ich zewnętrzną aktualizację, a przerzucanie z jednego pulpitu na drugi polega na przerzucaniu z jednego pulpitu na drugi. Wydaje się całkiem niezły pomysł.
goldilocks,

Chociaż nie sądzę, że ta odpowiedź powinna być wybrana (ponieważ jest stronnicza), to właśnie ten rodzaj perspektywy jest pomocny w zrozumieniu różnic. Dzięki za zajęcie stanowiska.
genorama

8

Zaletą jest to, że vi zwykle jest wstępnie instalowany w korporacyjnym systemie UNIX, takim jak AIX lub Solaris. Poza tym vim nie jest dostępny na nośniku instalacyjnym.


1

Zauważyłem, że tylko wybrać Visię VIM, gdy jestem kopiując i wklejając dokument tekstowy lub plik konfiguracyjny, który użyłem catkomendy. Jest tak, ponieważ kiedy próbuję, ctrl-ca następnie ctrl-vdo VIMotwartego dokumentu, zmusza wszystkie wiersze do umieszczenia komentarza przed nimi. Więc kiedy używać Vido ctrl-valbo pastedo Viotwartego dokumentu, to dokładnie to, co ja wkleja skopiowany z. Poza tym używam przez VIMcały dzień.

Cieszyć się!


5
Spróbuj:set paste
Patrick,

3
ustaw pastetoggle = <F2> w .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste )
Dave

1

Jak już wspomniano w poprzednich odpowiedziach, vi zawiera prawie każdy system UNIX.

Chciałem tylko dodać przykład. Arch Linux jest szczególnie popularną i lekką dystrybucją, której ani Instalator, ani dystrybucja podstawowa nie są domyślnie dostarczane z vimem, jednak obie są dostarczane z vi.

Nie jest to zaletą dla vi per se , ponieważ można po prostu zainstalować vima ręcznie, a instalacja wymaga niewiele edytora tekstu i nic, w przypadku gdy vim nie jest lepszy od vi w zamierzonym celu. Ale zrozumienie różnicy i to, że vi jest bardziej wszechobecny i lekki niż vim, daje mu pewne niszowe zalety.

Ponadto, żeby być kompleksowym, nikt jeszcze nie powiedział wprost, że vi jest bezpośrednim prekursorem vim. Vim został specjalnie zaprojektowany, aby być wszystkim, czym był vi i więcej.

Więc w bardzo bezpośredni sposób, vim jest lepszy od vi, ponieważ został zaprojektowany .


1

Jedynym powodem, aby używać vi zamiast vim, jest to, że nie masz innego wyboru.

Istnieje wiele, wiele powodów, dla których vim oznacza „vi ulepszono”!

Pożyczając z powiązanego postu Odpowiedziałem: -

  1. Wiele okien - poziomy, pionowy i zakładki.
  2. Podświetlanie wizualne.
  3. Pomoc online za pomocą polecenia: help.
  4. Zapisz makra w rejestrze, który możesz następnie uruchomić.
  5. Cofnij (i ponów) wiele razy, zamiast szaleńczego przełączania cofania starego vi.
  6. Historia wiersza poleceń, historia wyszukiwania.
  7. Cały język osadzony wraz z wieloma dostępnymi funkcjami, np. Getcwd ()
  8. Znacznie rozszerzone dopasowywanie wzorów.
  9. Uzupełnianie słów przez ctrl-P i ctrl-N.
  10. Wbudowany nawigator plików (trochę niezgrabny, ale może być użyteczny).
  11. Klawisz ESC tak naprawdę zamyka polecenia, przed którymi próbowałeś, no cóż, uciekać zamiast (szaleńczo) uruchamiać je tak jak vi.
  12. Możliwość uruchamiania poleceń na wszystkich buforach, argsach lub oknach poprzez bufdo, argdo i windo.

Prawdopodobnie mogłeś podać „wiele, wiele” powodów, o których wspomniałeś w odpowiedzi na unix.stackexchange.com/a/425597/85039 tutaj. To uczyniłoby tę odpowiedź nieco lepszą; w przeciwnym razie brzmi bardziej jak komentarz niż faktyczna odpowiedź
Sergiy Kolodyazhnyy

Punkt wzięty. Odpowiedź zaktualizowana, pożyczanie od pokrewnej odpowiedzi, którą udzieliłem wczoraj.
Paul T

1

Oto ćwiczenie z Vima Koansa :

Master Wq i Unix master

Stary mistrz Unix przyszedł do Master Wq. „Martwię się, Wq. Uczysz drogi Vima. vi jest święte, ale Vim nie jest; jego kod się rozrasta, cechy pamięci tłumu; jego pliki binarne są ogromne, a zachowanie niespójne. To nie jest droga Uniksa. Obawiam się, że wprowadzasz w błąd swoich uczniów. Co można zrobić?"

Mistrz Wq pokiwał głową. „Masz rację”, powiedział. „Vim jest zepsuty. Pozwól nam to naprawić. Powinniśmy zaczynać?"

Stary mistrz Unix zgodził się i otworzył powłokę. Wpisał:

$ vi vim.c

Zaczął kodować. Mistrz Wq obserwował przez chwilę, a następnie zapytał go: „Jakiej implementacji vi używasz? Nvi? Wigor? Elvis?

„Nie wiem”, powiedział mistrz Unix. „To nie ma znaczenia.”

Mistrz Wq pokiwał głową. Mistrz uniksowy siedział przez chwilę oszołomiony i niezapisany zamknął dokument.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.