Wiem trochę o edytorach tekstu * NIX (obecnie migracja z nano
do vim
) i po dokładnym przyjrzeniu się Unixowi & Linux SE, zauważyłem, że używany jest vi
zamiast „vim” w wielu pytaniach. 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ąś znaczącą przewagę nad vimem?
Edycja: Myślę, że moje pytanie jest błędnie interpretowane. Wiem, że vim jest w przeważającej części znacznie potężniejszy i bardziej funkcjonalny niż vi. Chcę wiedzieć, czy są jakieś możliwe przypadki, w których vi ma przewagę nad vimem, takie jak mniejsze użycie pamięci, rozpowszechnienie w systemach * nix itp.
Komentarze
Odpowiedź
vi
to (również) standardowy edytor POSIX . Istnieje wiele implementacji, a vim
jest prawdopodobnie najpopularniejszym.
Podczas gdy wiele tradycyjnych systemów operacyjnych zgodnych z Uniksem zapewnia vi
implementacje bardzo zbliżone do standardu, vim
dodał wiele dodatkowych funkcji, dzięki którym jest to miecz obosieczny.
Oczywiście te rozszerzenia są zwykle aby ułatwić proces edycji i zapewnić przydatne funkcje i funkcje. Jednak gdy już się przyzwyczaisz do niektórych z nich (nie kosmetycznych, takich jak kolorowanie składni, ale tych, które zmieniają zachowanie edytora) możesz łatwo zapomnieć, że są specyficzne i używasz innej implementacji, w tym opartej na oryginalnym BSD kod może być bardzo frustrujący. Jest też odwrotnie.
Jest to dość podobne do problemu, który występuje w przypadku skryptów używających bashizmów innych niż POSIX, w obliczu bardziej ortodoksyjnych implementacji powłoki, takich jak dash
lub ksh
.
Odpowiedź
Żaden vi nie ma każda znacząca przewaga nad vimem jest raczej na odwrót. Vim ma więcej zalet niż Vi. Możesz być zainteresowany: Dlaczego, och DLACZEGO, robisz te #? @! wariaci używają vi?
Edytuj także przeczytaj: Czy nauka VIM jest warta wysiłku?
Komentarze
- Tak. Nie ' nie używam żadnego IDE, ponieważ edytory, do których zmuszają Cię, to po prostu nie ' t Vim.
- @Keith Używam zarówno Xcode, jak i Eclipse i ' nadal mogę edytować tylko z vi.
- @Keith SlickEdit ma świetną emulację Vima i IDEA ' s zbliża się do tego. Ponadto Visual Studio ma ViEmu.
- IntellIJ ma również fajną wtyczkę vim nadpisującą zachowanie standardowego edytora '.
Odpowiedź
Po spędzeniu dużej części mojego życia (nie licząc dzieciństwa) na wygodnym edytowaniu w Vimie, spędziłem około miesiąca używając tylko vi. Robiąc to, zdałem sobie sprawę, że byłem zależny od Vima we wszystkich moich potrzebach modyfikacji tekstu. Przed podróżą z vi, ilekroć musiałem podmienić jakiś tekst lub wykonać podobną operację w dużej grupie plików, po prostu otwierałem pliki w Vimie i uruchamiałem polecenie :bufdo
i za każdym razem, gdy musiałem wciskać lub formatować niektóre pliki, otwierałem je w Vimie i używałem poleceń Vima „s =
i gw
, Byłem zależny od Vima.Kiedy zdałem sobie sprawę, że vi nie ma tych poleceń, byłem zmuszony do masowego przekształcania tekstu za pomocą sed
i dowiedziałem się wiele o innych programach, takich jak awk
i indent
. Chociaż w końcu wróciłem do używania Vima, wiedza, którą zdobyłem używając mniej polecanego edytora, była znaczna i okazała się niezwykle przydatna. Oprócz poznania narzędzi spoza edytora tekstu, zapoznałem się również lepiej z vi. Ilekroć pracuję na nowym systemie lub serwerze, 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 tani tablet WM8650 i stwierdziliśmy, że istnieje zauważalna różnica w wydajności między Vimem a vi, więc zwykle używam vi na tablecie.
Komentarze
- Uważam, że jest to częsty problem w branży IT – narzędzia, które pomagają nam, mogą również zaciemniać rzeczy, które ' lepiej się uczą.
- Właściwie radzenie sobie Lokalna edycja wielu plików może ' t przenośnie być wykonana za pomocą Awk lub Sed albo . (
-i
na obu jest rozszerzeniem GNU.) Ale możesz ich używać przenośnie z czymś takim jakfor f in *; do printf '%s\n' '%!sed -e '\''some sed command'\' x | ex "$f"; done
Odpowiedz
Trudno byłoby mi żyć bez vima, ale nie znoszę vi . Jednak nauczenie się pierwszego da ci przynajmniej pomysł, jak sobie radzić z późniejszym, kiedy to jest wszystko, co jest dostępne.
Domyślnie interfejs vima jest bardzo zbliżony do vi. „Pracuję na systemie z vimem, pierwszą rzeczą, którą robię, jest dodanie tych rzeczy do ~/.vimrc
:
syntax enable set nocp set wildmenu
Jest jeszcze kilka innych rzeczy, które wolę – włączone teraz zawijanie i numerowanie itp. – ale nieważne. „Syntax enable” po prostu włącza podstawowe podświetlanie składni (nieco mocniejsze: filetype plugin on
jest fundamentalna); „nocp” wyłącza zgodność z vi i to właśnie zaczyna odróżniać vima od starego vi (np. , włącza showmode
, co sprawia, że całe doświadczenie jest nieco bardziej ludzkie, ponieważ masz teraz pojęcie o tym, czy jesteś w trybie komend, czy w trybie ~ INSERT ~). „wildmenu” daje ci tylko poziome menu uzupełniania podczas robienia pewnych rzeczy, co też ułatwia życie.
Funkcje edycji tekstu w vimie nie mają sobie równych – poza emacsem, nigdy nie widziałem ani nie słyszałem o oprogramowaniu, które byłoby blisko. Nie są łatwe do nauczenia, ale kiedy już je poznasz, są znacznie szybsze w użyciu niż menu myszy i znacznie bardziej dynamiczne niż proste alternatywy makr klawiszy w interfejsach opartych na menu myszy. Do programowania czasami używam vima wraz z IDE, takim jak Eclipse, ale większość pracy wykonuję w vimie.
Jeśli wybierzesz tę ścieżkę, lol, spójrz na wtyczki autouzupełniania i listy tagów. I uważaj na ciemną stronę.
Komentarze
- Zawsze dodaję też
set mouse=a
. - Jeśli chodzi o programowanie komentarz, może Cię zainteresować eclim …
- @ire_and_curses: Haven ' t spróbował tego. Zarówno Eclipse, jak i vim monitorują pliki źródłowe i pozwalają na ich zewnętrzną aktualizację, a przechodzenie z jednego pulpitu na drugi jest przeskakiwaniem z jednego pulpitu na drugi. Wydaje się, że to całkiem niezły pomysł.
- Chociaż nie ' uważam, że ta odpowiedź powinna być wybraną odpowiedzią (ponieważ ' s tendencyjne), to ' jest dokładnie takim typem perspektywy, który jest pomocny w zrozumieniu różnic. Dziękujemy za zajęcie stanowiska.
Odpowiedź
Zaletą jest to, że vi jest zwykle preinstalowany w korporacyjnym UNIXie, takim jak AIX lub Solaris. Poza tym vim nie jest dostępny na nośnikach instalacyjnych.
Odpowiedź
To jest fragment z Vim Koans :
Master Wq i mistrz Unix
Stary mistrz Unix przyszedł do Master Wq. „Jestem zmartwiony, Wq. Uczysz drogi Vima. vi jest święta, ale Vim nie; jego kod się rozrasta, jego cechy tłumią pamięć; jej pliki binarne są rozległe, a zachowanie niespójne. To nie jest sposób Uniksa. Obawiam się, że zwodzisz swoich uczniów. Co można zrobić? ”
Mistrz Wq skinął głową. – Masz rację – powiedział. „Vim jest zepsuty. Pozwól nam to naprawić. Zaczniemy? ”
Stary mistrz Unix zgodził się i otworzył powłokę. Wpisał:
$ vi vim.c
Zaczął programować. Mistrz Wq obserwował przez chwilę, a następnie zapytał go: „Jakiej implementacji vi używasz? Nvi? Krzepkość? Elvis? ”
„ Nie wiem ”, powiedział mistrz Unix. „To nie ma znaczenia”.
Mistrz Wq skinął głową. Mistrz uniksowy siedział przez chwilę oszołomiony i zamknął niezapisany dokument.
Komentarze
- hahah … to jest dla mnie zabawne …. głębokie, ale zabawne.Dzięki za udostępnienie.
Odpowiedź
Jak już wspominaliśmy w poprzednich odpowiedziach, vi jest dostarczany z prawie każdym systemem UNIX tam.
Chciałem tylko dodać przykład. Arch Linux jest szczególnie popularną i lekką dystrybucją, której ani instalator, ani podstawowa dystrybucja nie są domyślnie dostarczane z vimem, jednak obie są dostarczane z vi.
Nie jest to zaletą dla vi per se , ponieważ możesz po prostu zainstalować vima ręcznie, a niewiele trzeba zrobić w instalacji, która wymaga edytora tekstu, i nic, gdzie vim jest lepszy od vi w zamierzonym celu. Ale zrozumienie różnicy i tego vi jest bardziej wszechobecny i lżejszy niż vim, co daje mu pewne niszowe zalety.
Ponadto, aby być wszechstronnym, nikt nie wspomniał jeszcze wprost, że vi jest bezpośrednim prekursorem vima. Vim został zaprojektowany specjalnie, aby być wszystkim że vi był i nie tylko.
Zatem w bardzo bezpośredni sposób vim jest lepszy od vi, ponieważ został zaprojektowany tak, aby był .
Odpowiedz
Jedynym powodem używania vi zamiast vima jest brak innego wyboru.
Jest wiele, wiele powodów, dla których vim oznacza r „vi ulepszone”!
Pożyczając z pokrewnego postu odpowiedziałem: –
- Wiele okien – poziome, pionowe & .
- Podświetlanie wizualne.
- Pomoc online poprzez polecenie: help.
- Zapisz makra do rejestru, który możesz następnie wykonać.
- Cofnij (i ponów) wiele razy, zamiast szalonego przełączania cofania w starym vi.
- Historia wiersza poleceń, historia wyszukiwania.
- Cały język osadzony wraz z wieloma dostępne funkcje, np. getcwd ()
- Znacznie rozszerzone dopasowanie wzorców.
- Uzupełnianie słów przez ctrl-P & ctrl-N.
- Wbudowany nawigator plików (trochę niezgrabny, ale może być przydatny).
- Klawisz ESC faktycznie zamyka polecenia, z których próbowałeś uciec zamiast (szalenie) je uruchamiać tak jak vi.
- Możliwość uruchamiania poleceń na wszystkich buforach, argumentach lub oknach przez bufdo, argdo & windo.
Komentarze
- Prawdopodobnie mogłeś przytoczyć ” wiele, wiele ” powodów, o których wspomniałeś w unix.stackexchange.com/a/425597/85039 odpowiedz tutaj. To ' sprawi, że ta odpowiedź będzie trochę lepsza; w przeciwnym razie bardziej przypomina komentarz niż rzeczywistą odpowiedź.
- Punkt zajęty. Odpowiedź zaktualizowana, zapożyczona z powiązanej odpowiedzi, którą wykonałem wczoraj.
Odpowiedź
Zauważyłem, że tylko wybierz Vi
zamiast VIM
kiedy Kopiuję i wklejam dokument tekstowy lub plik konfiguracyjny, którego użyłem polecenia cat
. Dzieje się tak, ponieważ gdy próbuję ctrl-c
, a następnie ctrl-v
do VIM
otwartego dokumentu, wymusza na wszystkich wierszach komentarz przed nimi. Więc kiedy używam Vi
do ctrl-v
lub paste
w Vi
otwarty dokument, wkleja dokładnie to, z czego skopiowałem. Poza tym używam VIM
przez cały dzień.
Baw się!
Komentarze
- Spróbuj
:set paste
- set pastetoggle = < F2 > in .vimrc ( vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste)
vi
jest to, że można się spodziewać, że będzie on dostępny w każdym systemie zgodnym z POSIX.vi
a nievim
.. Ubuntu jest jedną z najbardziej przyjaznych dla użytkownika dystrybucji btw 😉vim
.vi
to tylko dowiązanie symboliczne, które ostatecznie prowadzi dovim
w domyślnej instalacji.vi
używając specyfikacji POSIX dlavi
. W ten sposób masz przenośną wiedzę, a także znasz rozszerzenia Vima.