Czy istnieją przypadki, w których vi jest jedyną opcją?

22

Czy istnieją scenariusze, w których vijedyną opcją do utworzenia, edycji lub modyfikacji pliku w środowisku Ubuntu?

Moje pytanie polega w zasadzie na tym, aby naprawdę wiedzieć, czy istnieje taki przypadek, w którym musiałbym go użyć, viponieważ byłaby to jedyna dostępna opcja w konkretnym przypadku w ekosystemie Ubuntu.

Dało szczególny exist przypadek, w którym jakoś nie miałyby dostęp do innych opcji, jak nano, picolub po prostu wysyłania informacji za pomocą narzędzi takich jak cat, sed, teei więcej?

Zakładam, że jest to po stronie serwera lub chmury, ponieważ na pulpicie jest wiele innych opcji, ale od każdego, kto często korzysta z terminala, pytam:

Czy jest taki przypadek?

Luis Alvarado
źródło
8
@Tim Właściwie visudomożna używać dowolnego edytora. Ponieważ jego domyślna konfiguracja w Ubuntu uwzględnia zmienne środowiskowe EDITORi VISUAL, możesz uruchomić sudo env VISUAL=emacs visudoemacsa lub nawet gksudo env VISUAL=gedit visudoedytor graficzny, taki jak Gedit. ( sudo -Hlub sudo -imoże być użyty zamiast gksudo.) Sugeruję ten envsposób, ponieważ VISUAL=emacs sudo visudonie działa ( sudoresetuje większość środowiska) i sudo -EH może być uważany za niewskazany.
Eliah Kagan
3
vi jest jedyną opcją ... gdy vi jest jedynym zainstalowanym edytorem, który znasz i nie chcesz tracić czasu na instalowanie innego. vi jest najlepszą opcją, gdy vi jest edytorem, który znasz / lubisz najlepiej spośród dostępnych i nie chcesz tracić czasu na instalację takiego, który ci się bardziej podoba. NIGDY nie ma przypadku, w którym tylko jedno narzędzie może rozwiązać problem; mogą się zdarzyć ograniczenia wyboru. I niektórzy ludzie faktycznie lubią vi. (Nie ja. Jestem
bigotką
3
cat? sed? Naprawdę? vinaprawdę nie jest tak skomplikowane, a jeśli naprawdę nie możesz się tym martwić, musisz tylko zapamiętać dwa tryby (tryb normalny i tryb wstawiania). Przesuwasz kursor za pomocą strzałek (lub HJKL, jeśli nie jest dostępny), naciśnij „i”, aby rozpocząć edycję (tryb wstawiania). Po zakończeniu naciśnij „Esc”, aby wrócić do trybu normalnego. Wpisz „: wq”, aby zapisać i wyjść (Write + Quit).
sleblanc
2
po prostu zrób to i naucz się vi :) To nie jest tak trudne, jak się wydaje, a kiedy się zorientujesz, nigdy nie będziesz tracić czasu na szukanie innych edytorów na nowym systemie, z którego korzystasz.
JamesRyan

Odpowiedzi:

32

W ekosystemie Ubuntu nie sądzę, aby ten przypadek mógł istnieć , podobnie jak viprzynajmniej vim-malutki, który już jest „prawdziwy vim” daleki od „prawdziwego vi”.

W kontekście systemów wbudowanych o ograniczonych zasobach , które zwykle nie są Ubuntu, możesz mieć taki, viktóry może być łączem do busybox. I nie zostało już miejsca. Zatem vijest jedyną opcją.

Poza tym myślę, że sytuacje, w których vijedyna opcja nie są dzisiaj tak powszechne , nawet poza światem Linuksa .

Ale mogą łatwo wystąpić sytuacje, w których vijest to jedyna opcja, którą możesz zaplanować , jedyna opcja, która na pewno będzie istnieć w jakiejś przyszłej sytuacji - która najprawdopodobniej wydarzy się w nadmiernie schłodzonej serwerowni klienta.

Wyobraź sobie, że dzwoni do ciebie klient:

Klient: Muszę naprawić tę konfigurację! Teraz!! Nie wiem jak, ale mogę powiedzieć, gdzie jest plik konfiguracyjny. Możesz mi pomóc!?!

Ty: Ok, na jakim systemie to działa?

Klient: Och, jest na serwerze foo, ahh ... działa ... nie pamiętam, coś z „ix” na końcu , lub mayeb z „ux” ...

Nie ma problemu, do tej pory wiesz, że będzie vi!

Volker Siegel
źródło
1
Osobiście pracowałem nad wieloma systemami osadzonymi, które zawierały tylko vi jako edytor tekstowy. Wierzę, że buildroot i yocto mają je jako jedyny edytor przy użyciu minimalnych opcji konfiguracji. Wprawdzie nie jest to problem na Ubuntu, ale jeśli jesteś wbudowanym programistą, może to być prawdziwy problem. Jednak zawsze możesz, jak powiedział OP, używać narzędzi opartych na rurach, takich jak sed, sort, grep itp., Jednak może to być bardzo bolesne.
Rzeczywistość
Sprawa busybox jest naprawdę dobra. Irytujące jest to, że nie wydaje mi się, że jest to pełne vi (przynajmniej nie było to dziesięć lat temu i mam nadzieję , że nie rozdęli go, nawet jeśli jest to denerwujące).
hyde
1
busybox vito 4k linii curl -s https://gitorious.org/busybox/busybox/raw/1c7a58dfb82ea04c525e0c19f94f2d800dee99e3:editors/vi.c | wc;;)
Volker Siegel
17

Vi nigdy nie jest jedyną opcją; zawsze możesz użyć edzamiast tego.

zła
źródło
8
Na przykład w Arch Linux ednie jest częścią base.
muru
@muru FWIW też vimnie jest.
Sparhawk
4
@Sparhawk viis.
muru
@muru Ah tak, oczywiście. Myliłem się.
Sparhawk
edjest tylko częścią standard^instalacji. Jeśli wykonasz minimalinstalację, ednie zostanie uwzględniona.
Oli
13

Jest jeden przypadek, w którym potrzebujesz viedytora, załóżmy:

  • nie ma interfejsu graficznego
  • masz dziwny nieznany *nixsystem
  • twój terminal wygląda następująco:

wprowadź opis zdjęcia tutaj

  • masz dość takich facetów:

wprowadź opis zdjęcia tutaj

Jak widać, nie ma klawiatury numerycznej . Ze starym vi(i mam na myśli oryginalne tradycyjnyvi , nie vim, vim.tinyalbo vim.basic) można edytować plik z tej klawiatury. Bez klawiszy strzałek ? Tak, gdy jesteś w trybie poleceń został przeniesiony za pomocą pliku z h, j, ki l, jak profesjonalista. hzostał, jbył na dole, kbył na górze i lmiał rację.

chaos
źródło
5
Myślę, że ta odpowiedź nie jest wcale taka zła (klawiatury podobne do maszyn do pisania nie są niczym niezwykłym), ale w rzeczywistości nie oznacza to, że potrzebujesz vi. Wszystkie starsze edytory tekstu mają kombinacje klawiszy „kopii zapasowych”, które pozwalają pracować bez klawiszy strzałek itp., Choć uważam, że vito jedyny edytor, w którym nie można pominąć klawiszy strzałek.
leftaroundabout
Trochę nie na temat: nie rozumiem, dlaczego potrzebujesz klawiatury numerycznej dla dowolnego edytora tekstu, a klawisze strzałek są w Vimie bezużyteczne. : P
Klamka
1
Hej, nie dyskontuj starych dobrych ed! Nie potrzeba tych „wizualnych” sztuczek w takim systemie! Po prostu spróbuj użyć vima na terminalu papierowym i zobacz, jak zarządzasz ... A tak na poważnie, wiedza i edtak jest przydatna, jest to przyzwoita opcja, gdy trzeba edytować skrypt.
hyde
jak przełączyć się do trybu poleceń za pomocą tej klawiatury (nie widzę ucieczki; czy była na to kolejna kombinacja klawiszy?)
Foon
@Foon Jest klawisz Escape =) To tam, gdzie normalnie powinna być karta. Po lewej stronie klawisza Q.
chaos
6

Faktem jest, że w wielu dystrybucjach edytory takie jak nanoi picopo prostu nie są standardowe, podczas gdy inne pakiety, a mianowicie vim-tinysą. Zobacz tutaj listę pakietów ubuntu-minimal, vim-tinyjest jedynym edytorem . Zgodnie z tą odpowiedzią wydaje się, że dotyczy to również serwera Ubuntu. Wiem, że dotyczy to również podstawowego Debiana, Fedory.

Biorąc to pod uwagę, biorąc pod uwagę, że jeśli masz nanow swoim systemie, nie widziałem jeszcze przypadku, w którym MUSISZ użyć vi, ale grając odpowiedź @ Volker, jeśli pracujesz dla klienta i nie masz dostęp do roota? apt-get install nanonie zrobi ci wiele dobrego (jeśli ma nawet dostęp do zewnętrznego internetu!).

Mitch
źródło
4

Istnieje wiele przypadków, w których vi(i przez to oczywiście mam na myśli, vim.tinyponieważ to właśnie wysyłamy) może być jedynym interaktywnym edytorem. Jeśli zignorujemy motyle i promienie kosmiczne, wydają się to najbardziej prawdopodobne sytuacje, w których może się to zdarzyć:

  • Używasz tylko ubuntu-minimalpodstawowego meta-pakietu. To zależy, vim-tiny ale nie ma innych redaktorów. Nie mogę obecnie znaleźć sposobu na zainstalowanie Ubuntu bez standard^zadania, ale możesz je usunąć po instalacji za pomocą:

    sudo apt-get remove $(apt-cache show standard^ | awk '/Package: / {print $2}')
    

    Mam osobiste doświadczenie, w którym dostałem obraz systemu bez standard^zainstalowanego zadania. Gdybym nie miał dostępu do sieci, vibyłaby to moja jedyna opcja.

  • Chroot środowisku, które tylko odwzorowanym viprzez

  • Ręcznie nukuj wszystkie pozostałe edytory (i wyłączając środki do ich ponownej instalacji)

  • Ręczne łamanie powłoki w celu zatrzymania znanych edytorów, z wyjątkiem viuruchamiania.

Naprawdę minimalna instalacja będzie najbardziej prawdopodobnym powodem, ale obecnie są one dość rzadkie. Niektóre firmy VPS i firmy hostingowe w chmurze ich używają (aby zaoszczędzić miejsce na dysku tak samo jak cokolwiek innego), ale sugerowałbym, że zdecydowanie nie są one normą.

Oli
źródło
Niesamowita odpowiedź jak zawsze. Uważam to za bardzo kompetentne.
Luis Alvarado,
2

W przypadkach, w których nie możesz zainstalować emacsa lub w przypadkach, w których musisz zmodyfikować plik konfiguracyjny, aby umożliwić ci instalację emacsa. :-p

Craig
źródło
Lub w przypadkach, gdy chcesz użyć lepszego edytora, który jest lepszy niż emacs. ( cue flamewar ): P
Klamka
3
Z pewnością, jeśli używasz Ubuntu to już mają system operacyjny, więc Emacs byłby zbędny: v
evilsoup
Hej, niezły przyjacielu. :-p
Craig
2

Wiele (większość?) Instalacji Busy-Box ma tylko vi.

Nie jest specyficzny dla Ubuntu, ale dotyczy wielu wbudowanych urządzeń.

Zmyślone imię
źródło
2

Zawsze jest kot, głowa, ogon ... więc nie jestem pewien, czy istnieje system, w którym nie masz żadnej alternatywy, ale możliwe jest znalezienie systemów, w których nie ma lepszej alternatywy, nawet jeśli wolisz emacsa.

Moim przykładem był system, którym kiedyś administrowałem, który był albo tak wolny (lub linia była powolna i stratna), że podczas nawigacji za pomocą klawiszy kursora często nagle przełączał się na wstawianie i wstrzykiwanie śmieci do edytowanego pliku i używanie HJKL do poruszania się była jedyną niezawodną opcją.

Edheldil
źródło
1
I oczywiście dobre stare motyle !
leftaroundabout
2

Oto przypadek, w którym vim jest jedyną opcją w ekosystemie Ubuntu: Ubuntu Snappynie jest dostarczany z żadnym edytorem tekstowym innym niż vim-tiny. Być może w przyszłości będzie taki, ale nie w latach 2015-16. Jeśli zamierzasz używać Ubuntu Snappy na konsoli szeregowej lub ssh, lepiej przygotuj się do użycia vim.

Sergiy Kolodyazhnyy
źródło
0

Raz wpadłem w sytuację, w której działał tylko tryb liniowy vi. Ma to coś wspólnego z naprawdę zepsutymi definicjami terminali. Zasadniczo tylko vi w trybie liniowym (zachowuje się jak normalny vi, jeśli udajesz, że masz terminal 1-liniowy), ex i ed działały, ponieważ jedyną definicją terminala było „głupie”.

Jozuego
źródło