Jakie są najczęściej używane polecenia / naciśnięcia klawiszy Vima?

112

Jestem programistą Ruby próbującym przełączyć się z Textmate na MacVim i mam problem z przebrnięciem przez gigantyczne listy rzeczy, które możesz zrobić w VIM i wszystkich ich naciśnięciach. Mam dość słuchania „Możesz użyć„ I ”do wstawiania tekstu,„ a ”do dołączania tekstu po znaku lub„ A ”do dołączania tekstu na końcu wiersza lub…” Nie mogę sobie wyobrazić każdy używa wszystkich 20 różnych naciśnięć klawiszy do nawigacji po tekście, około 10 klawiszy do rozpoczęcia dodawania tekstu i 18 sposobów wizualnego wybierania wewnętrznego bloku. A może ty !?

Moją idealną ściągawką byłoby 30-40 najczęściej używanych naciśnięć klawiszy lub poleceń, których każdy używa do codziennego pisania kodu, wraz z absolutnie niezbędnymi wtyczkami, których rubiniści używają codziennie, i 10 najczęściej używanymi poleceniami dla nich. W teorii, że kiedyś muszę zacząć i staje jak biegły w VIM jak jestem w TextMate, wtedy mogę zacząć uczyć tysiące innych komend VIM, które uczynią mnie bardziej wydajne.

A może w ogóle uczę się VIM w niewłaściwy sposób?

Clinton
źródło
9
Obowiązkowe odniesienie do cafepress.com/geekcheat.11507711 .
geekozaur
1
Zmieniono tag, aby usunąć „ruby” i dodać „skróty klawiaturowe”. Wydaje się bardziej odpowiednie.
"Czy w ogóle uczę się Vima w niewłaściwy sposób?" - nie, po prostu musisz zacząć od podstaw i pamiętaj, że za rok nadal będziesz uczyć się więcej poleceń. Może kiedyś naprawdę użyjesz wszystkich poleceń! Ale nikt nie używa ich wszystkich od pierwszego dnia.
Cascabel

Odpowiedzi:

306

Oto porada, którą kiedyś napisałem, z poleceniami, których używam regularnie:

Bibliografia

Generał

  • Prawie wszystkie polecenia mogą być poprzedzone liczbą powtórzeń. na przykład. 5dd usuń 5 linii
  • <Esc> pozwala wyjść z dowolnego trybu i wrócić do trybu poleceń
  • Polecenia poprzedzone znakiem : są wykonywane w linii poleceń u dołu ekranu
  • : pomoc pomoc przy każdym poleceniu

Nawigacja

  • Ruch kursora: ← hjk l →
  • Słowami:
    • w następne słowo (przez interpunkcję); W następne słowo (spacjami)
    • b tylne słowo (przez interpunkcję); B wstecz słowo (spacjami)
    • e słowo końcowe (przez interpunkcję); E końcowe słowo (spacjami)
  • Przez linię:
    • 0 początek linii; ^ pierwsza nie biała spacja
    • $ koniec wiersza
  • Według akapitu:
    • { poprzednia pusta linia; } następny pusty wiersz
  • Według pliku:
    • gg początek pliku; G koniec pliku
    • 123G przejdź do określonego numeru linii
  • Według znacznika:
    • mx set mark x ; 'x idź do znaku x
    • ”. przejdź do pozycji ostatniej edycji
    • '' wróć do ostatniego punktu przed skokiem
  • Przewijanie:
    • ^ F do przodu na pełnym ekranie; ^ B pełny ekran do tyłu
    • ^ D w dół pół ekranu; ^ U góry pół ekranu
    • ^ E przewiń jeden wiersz w górę; ^ Y przewiń jedną linię w dół
    • zz środkowa linia kursora

Redagowanie

  • U cofanie; ^ R ponów
  • . powtórz ostatnie polecenie edycji

Wstawianie

Wszystkie polecenia wstawiania są zakończone, <Esc>aby powrócić do trybu poleceń.

  • i wstawić tekst w kursorem; I wstawić tekst na początku linii
  • Dołącz tekst po kursorem; Tekst Dołącz po końcu linii
  • o otwórz nową linię poniżej; O otwórz nową linię powyżej

Wymiana pieniędzy

  • r zamień pojedynczy znak; R zamień wiele znaków
  • s zmienić pojedynczy znak
  • cw zmień słowo; C zmień na koniec wiersza; cc zmień całą linię
  • c<motion> zmienia tekst w kierunku ruchu
  • ci ( zmień w nawiasach ( więcej przykładów patrz wybór obiektów tekstowych )

Usuwanie

  • x usuń znak
  • dw usuń słowo; D usuń do końca wiersza; dd usuń całą linię
  • d<motion> usuwa się w kierunku ruchu

Wytnij i wklej

  • yy skopiuj linię do bufora wklejania; dd wytnij linię do bufora wklejania
  • p wklej bufor pod linią kursora; P pasty buforu powyżej linii kursora
  • xp zamień dwa znaki ( x, aby usunąć jeden znak, a następnie p, aby umieścić go z powrotem za pozycją kursora)

Bloki

  • v wizualny strumień blokowy; V wizualna linia blokowa; ^ V kolumna bloków wizualnych
    • większość poleceń ruchu rozszerza blok do nowej pozycji kursora
    • o przenosi kursor na drugi koniec bloku
  • d lub x wytnij blok do bufora wklejania
  • y skopiuj blok do bufora wklejania
  • > blok wcięć; < niewcięty blok
  • gv ponownie zaznacz ostatni blok wizualny

Światowy

  • :% s / foo / bar / g zamień wszystkie wystąpienia „foo” na „bar”
    • % to zakres wskazujący każdą linię w pliku
    • / g to flaga, która zmienia wszystkie wystąpienia w wierszu zamiast tylko pierwszego

Badawczy

  • / szukaj w przód; ? szukaj wstecz
  • * szukaj w przód słowa pod kursorem; # wyszukaj słowo pod kursorem wstecz
  • n następny mecz w tym samym kierunku; N następny mecz w przeciwnym kierunku
  • fx do następnego znaku x ; Fx wstecz do poprzedniego znaku x
  • ; przejdź ponownie do tego samego znaku w tym samym kierunku; , przejdź ponownie do tego samego znaku w przeciwnym kierunku

Pliki

  • : w zapisz plik na dysk
  • : wname zapisz plik na dysk jakoname
  • ZZ zapisz plik na dysk i zakończ
  • : n edytuj nowy plik; : n! edytować nowy plik bez zapisywania bieżących zmian
  • : q zakończ edycję pliku; : q! zakończ edycję bez zapisywania zmian
  • : e ponownie edytuj ten sam plik (jeśli został zmieniony poza vimem)
  • : e. eksplorator katalogów

Windows

  • ^ W nowym oknie
  • ^ Wj do następnego okna; ^ Wk do poprzedniego okna
  • ^ W_ maksymalizuj bieżące okno; ^ W = spraw, aby wszystkie okna miały taki sam rozmiar
  • ^ W + zwiększ rozmiar okna; ^ W- zmniejsz rozmiar okna

Nawigacja źródłowa

  • % przeskakuje do pasującego nawiasu / nawiasu / nawiasu klamrowego lub bloku języka, jeśli załadowany jest moduł języka
  • gd przejdź do definicji lokalnego symbolu pod kursorem; ^ O wróć do poprzedniej pozycji
  • ^] skok do definicji symbolu globalnego (wymagany tagsplik); ^ T powrót do poprzedniej pozycji (zachowany dowolny stos pozycji)
  • ^ N (w trybie wstawiania) automatyczne uzupełnianie słów

Pokaż zmiany lokalne

Vim ma kilka funkcji, które ułatwiają wyróżnianie linii, które zostały zmienione w stosunku do wersji podstawowej w kontroli źródła. Stworzyłem mały skrypt Vima, który to ułatwia: http://github.com/ghewgill/vim-scmdiff

Greg Hewgill
źródło
1
+1 Względnie minimalne, chociaż muszę przyznać, że nie używam żadnych poleceń okna ani nie korzystam z niczego innego niż klawisze strzałek / pageup / pagedown / home / end i gg / G. Aha, a do nawigacji po numerach linii możesz również użyć: 123 (tryb poleceń).
2
Niezła ściągawka. Dodałbym ^ w ^ w, aby przechodzić między oknami ,: x zamiast ZZ dla spójności, tx do przodu przed znakiem i Tx do tyłu.
romainl
Należy zauważyć, że to tylko podstawy tego, czego używam. Stworzyłem tę listę jako narzędzie do uczenia innych ludzi o vimie. Rzadziej używam wielu innych poleceń, a także skonfigurowałem różne aliasy i makra, które pomagają mi efektywniej korzystać z Vima.
Greg Hewgill
2
Jeśli chcesz uniknąć Escklucza (i RSI?), Możesz użyć ^[. ^cdziała też (ale nie rozwija skrótów). Źródło: vim.wikia.com/wiki/Avoid_the_escape_key
Lian,
22

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

To najwspanialsza rzecz w nauce VIM.

Justin Thomas
źródło
Nigdy wcześniej tego nie widziałem, bardzo fajne odniesienie po tym, jak wiesz, co robią polecenia.
amccormack
3
Część „graficzna” jest jednak bezużyteczna, jeśli nie masz klawiatury QWERTY.
romainl
5
Zdumiewa mnie, że umieszczenie linku (który został już wysłany na śmierć przy okazji) przyciąga tyle uwagi, podczas gdy inne zamieszczane plakaty nie ...
Lieven Keersmaekers
Wyraźny zwycięzca w postach na vimie: stackoverflow.com/questions/1218390/ ...
Justin Thomas
4

Czy przeglądałeś wbudowany samouczek Vima? Jeśli nie, upuść do wiersza poleceń i wpisz vimtutor. To świetny sposób, aby nauczyć się początkowych poleceń.

Vim ma niesamowitą elastyczność i moc, a jeśli jesteś jak większość użytkowników vima, nauczysz się wielu nowych poleceń i zapomnisz starych, a następnie nauczysz się ich ponownie. Wbudowana pomoc jest dobra i warta okresowego przeglądania, aby nauczyć się nowych rzeczy.

W Internecie jest kilka dobrych często zadawanych pytań i arkuszy do ściągnięcia dla vima. Polecam wyszukiwanie vim + faqi vim + cheatsheet. Cheat-Sheets.org # vim jest dobrym źródłem, podobnie jak wiki Vim Tips .

Blaszany Człowiek
źródło
Właśnie się o tym dowiedziałem i na szczęście jest zainstalowany na komputerze Mac. Wypróbuj teraz (o 1 w nocy…)
Clinton
Używam Vima od dłuższego czasu i jest to jedna z pierwszych rzeczy, które instaluję na komputerze. MacVim na Mac OS jest bardzo fajny. Zwykle kompiluję vim ze źródeł na większości Linux-ów, z których korzystam, po prostu dlatego, że większość dystrybucji nie jest aktualna lub nie ma ustawionej poprawnie obsługi języka. Wciąż aktualny wersja mojego ~/.vimrc, ~/.gvimrci ~/.vimkatalog w tar-ball do kiedy trzeba ustawić coś. Skopiowanie tego i wyodrębnienie plików pozwala mi uruchomić Vima ze wszystkimi moimi zwykłymi poleceniami i schematami kolorów w ciągu kilku minut na Windows, Mac i Linux.
Tin Man
3

Co większość ludzi zrobić, to zacząć się z gołymi podstaw, jak może i, yw, yy, i p. Możesz nadal używać klawiszy strzałek do poruszania się, wybierania tekstu myszą, korzystania z menu itp. Następnie, gdy coś Cię spowalnia, spoglądasz w szybszy sposób, aby to zrobić, i stopniowo dodajesz coraz więcej poleceń. Możesz przez chwilę uczyć się jednego nowego polecenia dziennie, a potem spadnie ono do jednego na tydzień. Za miesiąc poczujesz się całkiem produktywny. Po roku będziesz miał całkiem solidny repertuar, a po 2-3 latach nie będziesz nawet świadomie myśleć, co piszą Twoje palce, a dziwnie będzie wyglądać, jeśli będziesz musiał to komuś przeliterować. Nauczyłem się vi w 1993 roku i nadal otrzymuję 2 lub 3 nowe polecenia rocznie.

Karl Bielefeldt
źródło
3

Ściągawka @Greg Hewgill jest bardzo dobra. Zacząłem przechodzić z TextMate kilka miesięcy temu. Teraz jestem tak samo produktywny jak w przypadku TM i ciągle jestem zdumiony mocą Vima.

Oto jak się przełączyłem . Może ci się to przyda.

Grosso modo, myślę, że radykalna zmiana nie jest dobrym pomysłem. Vim jest zupełnie inny i najlepiej iść stopniowo.

Odpowiadając na Twoje pytanie dodatkowe, tak, używam całego dnia, iaIAoOaby wejść w tryb wstawiania. Z początku wydaje się to dziwne, ale po jakimś czasie nie myślisz o tym.

Niektóre polecenia niezwykle przydatne do wszelkich zadań związanych z programowaniem:

  • ri Rdo zamiany znaków
  • <C-a>oraz <C-x>zwiększać i zmniejszać liczby
  • citaby zmienić treść znacznika HTML i jego odmiany ( cat, dit, dat, ci(, itd.)
  • <C-x><C-o>(mapowane do ,,) dla omnicompletion
  • wizualny wybór bloku za pomocą <C-v>
  • i tak dalej…

Kiedy już przyzwyczaisz się do Vima, naprawdę trudno jest nie trafić olub xcały czas edytować tekst w innym edytorze lub polu tekstowym.

romainl
źródło
2

Nie mogę sobie wyobrazić, że każdy używa wszystkich 20 różnych naciśnięć klawiszy do poruszania się po tekście, około 10 klawiszy do rozpoczęcia dodawania tekstu i 18 sposobów wizualnego wybierania wewnętrznego bloku. A może ty !?

Ja robię.

Teoretycznie, gdy już to osiągnę i zacznę tak biegle posługiwać się VIM, jak w Textmate, mogę zacząć uczyć się tysięcy innych poleceń VIM, które uczynią mnie bardziej wydajnym.

To jest właściwy sposób, aby to zrobić. Zacznij od podstawowych poleceń, a następnie wybierz te, które zwiększają produktywność. Lubię śledzić ten blog, aby uzyskać wskazówki, jak poprawić moją produktywność dzięki vimowi.

Jeff
źródło
2

tuxfiles.org posiada całkiem niezłą ściągawkę. Myślę, że nauka poleceń ma kilka punktów:

  • Regularnie czytaj ściągawkę. Nie martw się o używanie ich wszystkich lub zapamiętywanie wszystkich kluczy, po prostu wiedz, że polecenie istnieje. Wyszukaj polecenie i użyj go, gdy stwierdzisz, że robisz coś powtarzalnego.
  • Jeśli zauważysz, że robisz coś regularnie (na przykład usuwanie całej linii po określonym znaku d$), przejdź do szybkiego wyszukiwania w Google, aby sprawdzić, czy możesz znaleźć odpowiednie polecenie.
  • Zapisz polecenia, które uważasz za przydatne, i przechowuj tę listę w miejscu, w którym możesz ją zobaczyć podczas pisania kodu. Sprzeciwiłbym się drukowaniu czegoś i zamiast tego zachęcałbym do używania notatek typu „wyślij to” tylko dla kilku poleceń naraz.
  • Jeśli to możliwe, zobacz, jak inni programiści używają vima i zapytaj ich, jakich poleceń używają, gdy widzisz, że robią coś interesującego.

Oprócz tych wskazówek należy zrozumieć kilka podstawowych pojęć.

  • vim użyje tego samego znaku do reprezentowania tej samej funkcji. Na przykład, aby usunąć wiersz po użyciu znaku d$. Aby podświetlić linię po użyciu określonego znaku v$. Zwróć więc uwagę, że $oznacza to , że będziesz robić coś do końca wiersza, w którym aktualnie znajduje się kursor.
  • ujest cofnięta i ctrl+rjest ponowna.
  • umieszczenie liczby przed poleceniem spowoduje jego wielokrotne wykonanie. 3ddusunie linię, na której znajduje się kursor, i dwie następujące po niej, podobnie 3yyskopiuje linię, na której znajduje się kursor, i dwie następujące po niej.
  • zrozumieć, w jaki sposób poruszać się bufory używać :lsdo listy buforów, i :bn, :bpaby przełączać pomiędzy nimi.
  • przeczytaj samouczek znajdujący się w:help Jest to prawdopodobnie najlepszy sposób na „nauczenie się lin” oraz resztę poleceń, których nauczysz się podczas używania.
amccormack
źródło
2

Umieść to w swoim .bashrc, aby otworzyć vima z ostatnio edytowanym plikiem w ostatniej edytowanej linii

alias vil="vim  +\"'\"0"
modesto
źródło
1

Przejdź do Wydajnej edycji z vimem i dowiedz się, czego potrzebujesz, aby zacząć. Nie wszystko na tej stronie jest niezbędne, więc wybierz wszystko, co chcesz.

Stamtąd używaj vim do wszystkiego. „hjkl”, „y” i „p” zaprowadzą Cię daleko, nawet jeśli nie jest to najbardziej efektywny sposób. Kiedy napotkasz zadanie, dla którego nie znasz magicznego klucza, aby wykonać to skutecznie (lub w ogóle), i stwierdzisz, że robisz to więcej niż kilka razy, poszukaj go. Stopniowo stanie się drugą naturą.

Uważałem, że vim zniechęca wiele miesięcy temu (kiedy nie miał na końcu „m”), ale stabilne używanie go zajęło tylko około tygodnia. Nadal uważam, że jest to najszybszy edytor, w którym można robić rzeczy.

mikestew
źródło
Link do „Efektywnego edytowania w vimie” jest teraz martwy. Myślę, że alternatywę można znaleźć na robertames.com/files/vim-editing.html
Damian Powell