100 komend edytora Vim, które każdy administrator powinien znać

Od lat 70′ modalny edytor vi jest bardzo użytecznym narzędziem. Jego klon Vim w ostatnich latach był kilkukrotnie wybierany na najpopularniejszy edytor tekstowy wśród czytelników Linux Journal, wyprzedzając m.in. Emacsa.

W serwisie http://www.catswhocode.com ukazał się artykuł zawierający uporządkowaną w działy listę 100 komend tego edytora bardzo przydatnych dla użytkownika systemów uniksowych.
Artykuł został napisany w języku angielskim, ale odnalezienie się w nim nie powinno być specjalnie trudne.

żadnych reklam, sama wiedza.

Zarejestruj się na BEZPŁATNY NEWSLETTER i raz w tygodniu otrzymuj najważniejsze wiadmości
ze świata IT, nowych technologii i kryptowalut.

Bez reklam.

  1. Awatar joi
    joi

    wystarczy jedno: :q!

    😛

    1. Awatar nat
  2. Awatar agent_J
    agent_J

    Niewiarygodne, ale wymyślili już edytory, w których żeby cokolwiek napisać wystarczy po prostu wklepać to na klawiaturze.

    1. Awatar Moro
      Moro

      No tak ale dla programistow i tak najwygoniejszy jest vim albo emacs. Klikanie myszka jest strasznie nie efektywne. Sam sie przesiadlem z VIMa rok temu i wydajnosci pisania kodu wzrosla mysle przynajmniej o 50%. Myszka poprostu zabija produktywnosc. Wydaje mi sie ze potega VIM jest zauwazalna tylko w systemach unixowych. Bez dobrego shella vim i emacs to poprostu zwykle edytory.

      1. Awatar uzytkownik
        uzytkownik

        W emacsie wystarczy "wklepać to na klawiaturze". IMHO największą słabością vima jest to, że ma tryby pracy (co nie znaczy, że nie ma trochę innych zalet).

        1. Awatar Huub900
          Huub900

          Dla mnie tryby pracy to akurat wielka zaleta Vima. Dzięki temu mogę trzymać ręce cały czas w tym samym miejscu nad klawiaturą i nie muszę wyłamywać sobie palców jak przy Emacsowych skrótach. Żeby tak jeszcze przenieść "ESC" gdzieś pod kciuk…

        2. Awatar mcv
          mcv

          Dla mnie tryby pracy to też zaleta. Dla tych co muszą po Windowsowemu jest binarka evim.

        3. Awatar pi00
          pi00

          @Huub900, ja mam tak:

          imap jj

        4. Awatar pi00
          pi00

          imap jj <Esc>

        5. Awatar krzy
          krzy

          IMHO największą słabością vima jest to, że ma tryby pracy (co nie znaczy, że nie ma trochę innych zalet).

          Ależ każdy inny edytor też ma tryby pracy! W edytorach wywodzących się od WordStara oraz emacsie przejście do trybu komend następuje po wybraniu kombinacji Ctrl+litera. Główny problem z vi(m) polega na tym, że jego tryby pracy są postawione na głowie: edytor domyślnie jest w trybie komend, a nie w trybie edycji, jak ma to reszta świata. Ma to uzasadnienie historyczne: edytor powstał w czasach gdy klawiatury nie miały strzałek i stąd aby przemieszczać się po tekście trzeba było być w trybie komend.

          Drugi problem polega na kompletnie nieintuicyjnym przypisaniu klawiszy do komend. Oczywiście ma to swój sens (stosowane kombinacje są ewidentnie zoptymalizowane pod kątem szybkości dla pisania bezwzrokowego na klawiaturze QWERTY), ale znacznie utrudnia opanowanie edytora.

          Reasumując: wydajność posługiwania się vi(m)em jest bardzo wysoka, natomiast w moim przypadku nie równoważy ona nadmiernie skomplikowanej obsługi. Dlatego sosobiście po zapoznaniu się z jego możliwościami postanowiłem pozostać przy stosowanych wcześniej rozwiązaniach.

        6. Awatar abc
          abc

          To tak jak z kierownicą kubicy… Możesz 'pościgać się' normalnym samochodem o intuicyjnej obsłudze albo wsiąść do czegoś cięższego w opanowaniu ale znacznie wydajniejszego.

        7. Awatar bies
          bies

          ,,Nieintuicyjnym przypisaniu klawiszy do komend'' — że co proszę? dw — delete word, yi( — yank inside (, e – (goto) end, zc — fold close (polecam help vima w którym wyjaśnione jest dlaczego z to fold), itd. Dodatkowo inne proste zasady, np. wielka litera oznacza linię: v — vertical mark, V — vertical line mark, a — append, A — append line. Możliwość powtórzenia dowolnego polecenia przez proste podanie liczby powtórzeń: 5p — 5 x paste.

          Pisanie bezwzrokowe na QWERTY: cóż, zatem w Twoim przypadku ,,zapoznanie się z jego możliwościami'' oznacza ,,poznanie jak poruszać się po tekście bez strzałek'' — bo tylko to ma coś wspólnego z bezwzrokowym pisaniu na QWERTY. Nie przesadzaj z tą nauką — nadmiar wiedzy może poważnie zaszkodzić…

        8. Awatar bies
          bies

          Tfu, nie ,,vertical'' a ,,visual'' oczywiście.

        9. Awatar krzy
          krzy

          Tak, a szczególnie intuicyjne jest poruszanie się po tekście przy użyciu klawiszy hjkl. Przy czym dziwnym trafem pozycja spoczynkowa palców prawej dłoni przy pisaniu bezwzrokowym to klawisze jkl; . Przełączniki na tryb pisania — albo pod palcem w pozycji spoczynkowej (a), albo tuż obok (oi). (d)elete i (s)ubst też na pozycji spoczynkowej lewej ręki (asdf). Równie dziwnym zbiegiem okoliczności rzadziej używane funkcje są wyrzucone na cyfry albo klawisze znaków specjalnych. Poza tym, dlaczego ludzie którzy używają klawiatury Dvoraka muszą przemapować sobie komendy w vimie, żeby w ogóle dało się pracować (Google: vim Dvorak)?

          Chylę czoła przed autorem, bo widac, że starał się tak wykombinować sekwencje sterujące aby ich wpisywanie było jak najbardziej wydajne, ale proszę mi nie wciskać kitu, że są one oczywiste. Bo nie są i nigdy nie miały być. Oczywiste to są polecenia w WordStarze i pochodnych.

        10. Awatar krzy
          krzy

          P.S. Wychowałem się na Turbo Pascalu 5.0 🙂

        11. Awatar bies
          bies

          Tak, tak. Wszystko co potrzebne jest blisko pozycji spoczynkowej. Szczególnie przejście na początek i koniec wiersza (^$). I nie ma to wcale nic wspólnego z wyrażeniami regularnymi. Wiesz, pozycja spoczynkowa ma to do siebie, że niemal wszystkie litery są w pobliżu więc argumenty uznaję za nieco naciągane.

          Z resztą nie zgadzam się, że mniej potrzebne funkcje zostały wyniesione poza litery. *#{@= używam znacznie częściej niż s czy nawet d.

          Co do Dvoraka, nie wiem. Nie używam.

        12. Awatar bies
          bies

          Ale co do intuicyjności poleceń Vima to tak naprawdę nie chodzi o pojedyncze polecenia. Ale to to, że znając podstawowe cegiełki możesz napisać: gg=G“ i zrozumieć to polecenie jako mini-skrypt formatujący. Nie potrzeba ,,uczyć się na pamięć'' całego zaklęcia. Nie ma fafdziesiątego Ctrl-X Ctrl-A e,7 które formatuje cały plik. Tylko logiczne: przejdź na początek, sformatuj do końca, wróć do poprzedniej pozycji.

          PS. Nie pamiętam już którego TP widziałem najpierw, ale chyba już 5.5 bo przypominam sobie obiekty. Albo nawet 7.0. A pierwszym edytorem jakiego używałem był edit i edytor qbasica.

        13. Awatar bies
          bies

          Hehe, właśnie doczytałem, że edit i edytor qbasica to jedno i to samo. To nawet sensowne, wyglądały tak podobnie… 😉

      2. Awatar agent_J
        agent_J

        Chyba Visual Studio a nie edytor z czasów, gdy komputer z ekranem to był luksus 😉

        1. Awatar krzychos7
          krzychos7

          Ech… tak ta magia okienek. Też do niedawna sądziłem że po co używać czegoś co wygląda jak sprzed epoki skoro są zaawansowane rozwiązania. Jednakże jak się przekonałem to że coś jest w trybie tekstowym nie znaczy że jest mniej zaawansowane i rozbudowane od ciężkich wielkich edytorów graficznych. Okazuje się że nie raz wręcz przeciwnie. Visual Studio ma tą zaletę iż zbytnio nie trzeba uczyć się jego obsługi. Jednakże wydajność długiej i zaawansowanej pracy takim narzędziem jest marna. Wystarczy poświęcić trochę czasu na naukę i nabrać wprawy a bez myszki i grafiki praca stanie nawet kilku krotnie wydajniejsza, zarówno od strony mniej obciążonego komputera jak i mniej obciążonego człowieka.

        2. Awatar bies
          bies

          Wiesz co, jak to to będzie miało chociaż 1/3 możliwości Eclipse'a to przestanę się smiać (co nie znaczy, że zacznę używać).

        3. Awatar vampire
          vampire

          Kazde narzedzie jest dobre do czegos innego.

          Eclipse jest b. fajny i czesto go uzywac w duzych projektach. Jednak jak czasami musze cos zmienic w kodzie, co wymaga uzywania masowo grepa po polikach .cpp i .hpp, to otwieranie ich w emacs jest po prostu szybsze (oraz wyszukiwanie po wzorcach regularnych!).

          Refractor w Eclipse niestety jest dosc w powijakach…

        4. Awatar xd
          xd

          @bies

          Eclipse? Od VS to zwykły KWrite jest lepszy 🙂

          // wyjaśnienie dla agent_J: KWrite to taki odpowiednik notepada z windows, tyle że projektowany z myślą o XXI wieku, a nie windowsie 3.11 //

        5. Awatar mcv
          mcv

          Te, a w Eclipse da się zaznaczyć pionowo blok np. nawiasów (pionową kolumnę) i wyciąć? Tudzież wstawić gdzie indziej potem?

        6. Awatar agent_J
          agent_J

          @xd: Wiem co to kwrite. Linuxa używam na codzień (od RedHat 6.0). Windowsa używam od v3.0.

          Do programowania w pracy używam Notepad++, ponieważ jest bardzo szybki oraz posiada fajną wtyczkę TextFX 😉 Korzystam głównie ze skrótów na klawiaturze, ale jakoś wolę np. wcisnąć Ctrl+S czy Shift+Tab niż klepać magiczne komendy.

          Visual Studio ma bardzo dobry debugger, czy ktoś zna debugger tak funkcjonalny i prosty w obsłudze ? Do pisania aplikacji pod .NET próbowałem używać MonoDevelopa, ale w Visualu jakoś pisało mi się wygodniej.

          //OT:@mcv: to ty się mnie dawno temu o SpiderOSa pytałeś ? 😉

        7. Awatar syllepsa
          syllepsa

          @vampire: Nowy Eclipse posiada możliwość przeszukiwania kodu po wyrażeniach regularnych.

          Nie wiem jak wygląda sprawa z kodem C++, ale dla Javy refactoring działa wyśmienicie.

          Pozdrawiam

          Mariusz

        8. Awatar ja
          ja

          @agent_J:

          Dzięki wielkie. Notepad++ to jest to czego szukałem… super podświetla składnie. Do tego Mingw i… Hello, World! 😉

        9. Awatar bies
          bies

          mcv: collumns4eclipse (tia, wiem że to śmieszne, że tak podstawowa funkcjonalność jest we wtyczce). Prawdę powiedziawszy nawet nie wiem czy to działa, i tak do edycji zazwyczaj używam Vima. A Eclipse tylko ze względu na wtyczki integrujące z różnymi systemami.

        10. Awatar mcv
          mcv

          // OT: agent_J całkiem możliwe. A to Ty wtedy byłeś? ;^D

        11. Awatar rorio
          rorio

          @bies i inne dzieci eclipse:

          to, że czegoś nigdy na oczy nie widzieliście, że coś nie ma okienek i ślicznego interfejsu nie znaczy, że nie jest potężne. Eclipse nie ma nawet ułamka możliwości vima. Może by tak czasem zamknąć X'y? Co to do cholery znaczy 'integracja z innymi systemami'??? vim działa nawet na moim ekspresie do kawy! Chcesz wtyczek? Masz. Emacs ma wtyczki do WSZYSTKIEGO. Przeszukiwanie kodu regexpami… Myślicie, że to nowość tak? Boże, moja teoria na temat ludzi kodujących w javie wydaje się potwierdzać: wy po prostu niczego innego nie znacie! javakids.

        12. Awatar bies
          bies

          Jestem ,,starszy'' od Eclipse o dobre pare lat. Ergo nie mogę być ,,dzieckiem'' Eclipse.

        13. Awatar rorio
          rorio

          Możesz.

      3. Awatar 0xhiryuu
        0xhiryuu

        Jestem programista i jakos najwygodniejszy dla mnie vim nie jest. Wole aptane.

        1. Awatar jellonek
          jellonek

          programista? czy moze webdeveloperem?

  3. Awatar Huub900
    Huub900

    Dlaczego podczas tłumaczenia tytułu "programmer" zmienił się na "administrator"?

    1. Awatar jellonek
      jellonek

      programista uzywa emacsa (z ktorego sesji nie wychodzi tygodniami)

      administrator kocha vi – ktorego znajdzie w kazdym systemie (nawet pod winda, choc tu trzeba go recznie doinstalowac).

      1. Awatar mcv
        mcv

        Vi niekoniecznie, on nawet składni nie podświetla. Bardziej Vim. 😉

        1. Awatar jellonek
          jellonek

          administratorowi poswietlanie jest malo przydatne, szczegolnie na czarnobialych terminalach 😉

          btw. vima nie masz w standardzie np. pod aiksem, hapeuksem, tudziez innym solarisem – vi masz.

        2. Awatar krzy
          krzy

          W rzeczy samej. Znajomość vi jest na wielu systemach niezbędna aby móc uruchomić system na tyle, żeby dało się ściągnąć lepszy edytor 🙂

        3. Awatar trasz
          trasz

          AFAIK vima nie ma w standardzie na niczym poza Linuksem.

      2. Awatar przemoc
        przemoc

        Czy za takim podziałem vima i emacsa między administratorów i programistów stoją jakieś konkretne przesłanki? Pytam zupełnie poważnie, bo vim, co najwyżej czasem wspomagany odpowiednimi pluginami, wydaje się wystarczający do wszystkiego co jest związane z wydajną edycją, także kodów źródłowych pisanych w różnych językach.

        Do czytania stron internetowych, jeżeli robię to już z konsoli, mam lynx/links/elinks (z naciskiem na ostatni, BTW dziś wyszła nowa wersja 0.12pre1) i analogicznie jest z innymi czynnościami nieedycyjnymi, więc uprzedzam ewentualne takie argumenty, które i tak są słabe moim zdaniem. Broń Boże, żadnych flame'ów, mam na myśli jedynie rzeczowe argumenty obrazujące przewagę emacsa.

        Prawdziwi programiści i tak używają motyli 🙂

        http://xkcd.com/378/

        1. Awatar bies
          bies

          Co do vi, po prostu na każdej maszynie podobnej do Uniksa masz jakieś vi. A Emacsa to zazwyczaj trzeba sobie zainstalować. Ale (nie będąc administratorem) też wolę Vima (nie vi) od Emacsa.

        2. Awatar vampire
          vampire

          ja jednak wole emacs (zarowno do celow administracyjnych jak i programowania).

          Wole duzo skrotow klawiszowych niz polecenia. Poza tym tryb edycji i polecen mnie drazni. Do tego emacs mial wieksza funkcjonalnosc kilka lat temu, a pozniej to juz kwestia przyzwyczajenia.

        3. Awatar jellonek
          jellonek

          przemoc: vi (i vim) poprostu lepiej sie nadaje do szybkiej pracy, tj. do otwarcia pliku raz na jakis czas celem zmienienia kilku rzeczy w kilku liniach (do zmiany jednej okreslonej wartosci w pliku lepiej nadaje sie sed 😉 )

          .

          ps. prawdziwy programista kod fortranowy zapisze w kazdym jezyku 😉

  4. Awatar bies
    bies

    Źle napisany artykuł, zamiast wyjaśnienia co oznaczają poszczególne polecenia (litery w trybie poleceń) dostajemy listę zaklęć (ggVGg? – Rot13, a dlaczego nie ggvGVg? lub ggg?G).

  5. Awatar rorio
    rorio

    :q emacs

    1. Awatar rorio
      rorio

      I dla równowagi: "Emacs to fajny system operacyjny, szkoda tylko, że nie ma dobrego edytora". ed rox.

      1. Awatar mcv
        mcv

        Emacs to rekurencyjny akronim od Emacs Makes Any Computer Slow. 😉

        Ed man! man ed. A standard text editor.

      2. Awatar Moarc
        Moarc

        Nie ma dobrego edytora, bo zawiera tryb emulacji vima, a vim nie jest dobrym edytorem :p

  6. Awatar dnkt
    dnkt

    Używałem Vima tak coś koło pięciu lat, miałem zamapowany zamiast i w dalszym ciągu co jakiś czas go uruchamiam, ale pisać większych programów bym w nim nie chciał.

    Dla mnie przegrywa z dość prostym Eclipsowym edytorem – nie ma tej łatwości używania. Podobnie Emacs (choć z nim moja przygoda była krótka – standardowe kombinacje klawiszy mnie odrzuciły).

    Nie piszę tego żeby kogoś obrazić, chcę tylko zasugerować, że dwa sztandarowe edytory dawane jako przykład początkującym nie są – moim zdaniem – sympatyczne w obsłudze (w szczególności "out of the box"). Co więcej, nie trafiłem jeszcze na edytor, który byłby mały, łatwy i wygodny w obsłudze, a jednocześnie potężny pod względem możliwości (ale przyznaję, że dawno przestałem szukać).

    1. Awatar dnkt
      dnkt

      ech, zamapowany Escape zamiast Caps Lock.

    2. Awatar bies
      bies

      Ani Vim ani Emacs nie są dla początkujących. Początkujący mogą sobie używać, za przeproszeniem, KWrite (albo innego GEdita).

      1. Awatar mcv
        mcv

        No, albo evima. Domyślnie w trybie edycji i ma podmapowane std. Windowsowe skróty typu C-c, C-v, itp., zaznaczanie też jest na Windowsowy sposób (Shift+ruch strzałek). 🙂 A zawsze można przyszpanować przed , dopóki guru sam nie siądzie przy edytorze. 😉

      2. Awatar dnkt
        dnkt

        Sugerowanie komuś, żeby sobie poużywał "tej takiej śmiesznej zabawki, której żaden poważny użytkownik by przecież nie użył" (nie cytuje Twoich słów) może mieć akurat odwrotny skutek 🙂

        1. Awatar bies
          bies

          Dlatego lepiej nie sugerować w ogóle. Jakiś flejm od czasu do czasu dla rozrywki — proszę bardzo. Ale sugerować komuś edytor? Po co? Jeśli edytor jest potrzebnym narzędziem to prędzej czy później dana osoba sama sobie znajdzie coś odpowiedniego.

          A na siłę zaczynać od edytora przy którym trzeba najpierw poświęcić tydzień czasu na naukę podstaw — bez sensu.

        2. Awatar http://claimid.com/i
          http://claimid.com/i

          Z tym tygodniem bym nie przesadzal. Po 3 godzinach mozna juz wszystkie niezbedne operacje wykonywac w miare plynnie. Najwiekszy problem na poczatku jest z tym, zeby pamietac o zmianie trybu na insert przed rozpoczeciem pisania 🙂

        3. Awatar agent_J
          agent_J

          To czemu buractwo na uczelniach próbuje "uszczęśliwiać" każdego vi na siłę ?

        4. Awatar jellonek
          jellonek

          bo znajdziesz go pod kazdym systemem operacyjnym.

          problemem jest to ze "buractwo" nadal uczy pascala/basica…

        5. Awatar mcv
          mcv

          Bo ma ubaw gdy po uruchomieniu każe „studenctwu” wyjść z edytora. ;D

        6. Awatar Alinoe
          Alinoe

          Jak uzyskać ciąg losowych znaków, posadzić nowicjusza przed vi(m)em i kazać mu wyjść :p

          Btw używam vima do zadań administracyjnych, po pierwsze podoba mi się że ma podświetlanie składni nawet w plikach konfiguracyjnych a po drugie robiąc coś jako root w konsoli najwygodniej mi się go używa ( kiedyś próbowałem przesiąść się na emacsa i zdenerwowało mnie kilka rzeczy, pierwsza do pierdoła ale naprawdę wygodnij wpisać mi vim nazwa_pliku niż emacs nazwa pliku niby 2 litery różnicy denerwowało mnie to jak cholera, po ciągle zapominałem tych skrótów klawiszowych w vimie te komendy to może nie szczyt marzeń ale 😡 :w :q :q! itp nie trudno zapamiętać ) a do programowania używam Eclipsa ( + CDT + Qt do pisania w c++ ) niestety o ile Eclips jest dobry do Javy to jednak do c++ już nie jest ideałem, namiastka refactor, w dodatku z Qt4 nie działa debugger musze oddzielnie włącząć insighta w dodatku to lekki muł z niego ( niestety napisany w Javie ) ale niestety nie znam żadnej dobrej alternatywy dla niego do c++

        7. Awatar bies
          bies

          Hehe, ja mam:

          1) /usr/bin/vi -> /usr/bin/vim

          2) alias :e=vi

          Jakoś najwygodniej jest mi napisać :e plik.

        8. Awatar agent_J
          agent_J

          A ja mam:

          rm -f /bin/vi*

          rm -f /usr/bin/vi*

        9. Awatar jellonek
          jellonek

          bies: sensowny alias 🙂

          agent_J: przenies sie moze na forum onetu, czy innej jamymastasza…

        10. Awatar j00t
          j00t

          a ja mam:

          alias :q=exit

          alias v="vim -p"

          no i koniecznie Escape pod CapsLockiem

  7. Awatar ris
    ris

    Dla mnie vi, jest wypełnieniem luki w edytorach jakie miałem okazje używać. Zawsze wydawało się mi, że nie tak to wszystko miało wyglądać, ergonomia leży. Używałem ultraedit, visual studio, eclipse i wiele innych. Jakie dostrzegłem zalety vi? Nie ważne na jakiej pracuje klawiaturze, zawsze jest tak samo. Jak odkryłem plugin www.viemu.com to już postawiłem na vi. Vi jest dobre dla osób, które przy codziennej edycji plików dostrzegają różne braki edytorów jakie używają.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *