Najbardziej przydatne funkcje VIM, które nie są standardowe w IDE [zamknięte]

30

Zastanawiam się, czy powinienem zacząć używać VIM zamiast IDE. Jakie są najbardziej przydatne funkcje VIM, które nie są standardowe w IDE?

Casebash
źródło
3
Z którego IDE korzystasz? Wiele IDE ma wtyczki VIM, więc możesz je edytować tak, jakbyś używał VIM.
Brian R. Bondy,
2
@Brian: Z pewnością nie emulowali wszystkich zaawansowanych funkcji?
Casebash,
1
Prawdopodobnie nie wszystkie oprócz tych, których użyłem, są świetne dla VS. Jest ich co najmniej 2. viemu.com i github.com/jaredpar/VsVim
Brian R. Bondy
2
@Brian R Bondy: Żaden z nich nawet nie jest w stanie opisać wszystkich funkcji Vima.
Drapią się
2
Lub możesz być naprawdę rozsądny i emacszamiast tego zacząć używać . ;-)
Orbling

Odpowiedzi:

32

Nie uważam, że to koniecznie zaawansowane funkcje VIM, które czynią go tak potężnym. Faktem jest, że nigdy nie musisz odrywać rąk od klawiatury, aby cokolwiek zrobić. Znalezienie czegoś w wielkim pliku jest tak proste, jak kilka naciśnięć klawiszy. Otwieranie i zamykanie wielu plików w tym samym oknie jest również niezwykle szybkie.

Choć na początku może nie wydawać się intuicyjny, warto poświęcić mu czas. Nawet jeśli nie używasz go jako standardowego IDE (na ogół używam Visual Studio lub Eclipse, na przykład), znajdziesz siebie za pomocą VIM do szybkiego otwierania i edycji plików, ponieważ staje się on znacznie szybszy niż oczekiwanie na IDE do obciążenie.

Zainwestuj czas, aby nauczyć się dobrze korzystać z VIM, a nigdy tego nie pożałujesz. Powiedziałbym, że jest to porównywalne z nauką pisania na klawiaturze.

Bryan Hales
źródło
3
Ta odpowiedź jest prawdopodobnie najbardziej przydatną funkcją dla Vima, jest także jedną z niewielu. Wszystko, co zostało zaprogramowane dla Vima, można łatwo zastosować do IDE, w końcu to tylko przetwarzanie tekstu ...
Tamara Wijsman
4
+1 Chociaż jestem wielbicielem emacsa, ten sam argument ma zastosowanie. Nowoczesne IDE są zdecydowanie zbyt „graficzne” dla edytorów tekstu .
Orbling
22

Dla mnie to :globalpolecenie jest zabójczą aplikacją. Będzie wykonywać dowolne polecenia vim w dowolnym wierszu, który pasuje (lub nie pasuje) do wyrażenia regularnego.

Oto kilka przykładów:

Domyślnym zachowaniem jest wypisanie każdej pasującej linii, więc:

:g/TODO:/

wyświetli listę każdego wiersza zawierającego tekst „DO ZROBIENIA:”

zmień „Mickey” na „Minnie” w dowolnym wierszu, który zawiera również słowo „Mysz”

:g/Mouse/ s/Mickey/Minnie/

Polecenia mogą mieć własny zakres, więc spowoduje to usunięcie z każdego wiersza za pomocą „TODO:” do następnego pustego wiersza:

: g / DO ZROBIENIA: /., / ^ $ / d

Użyj: g! aby wykonać w każdym wierszu, który NIE pasuje do wyrażenia regularnego, np. zastąpić „emacs” słowem „vim”, z wyjątkiem wierszy zawierających słowo „do bani”:

:g!/sucks/ s/emacs/vim/
Dave Kirby
źródło
Świetne sztuczki z globalnym dowództwem! Nigdy nie myślałem o takim użyciu.
Xavier T.
Eclipse obsługuje wyszukiwanie wyrażeń regularnych plików, zarówno pojedynczych plików, projektów lub między projektami w tym samym obszarze roboczym. Regex replace jest również w pewnym stopniu obsługiwany, ale wierzę, że vim ma znacznie potężniejszą funkcję regex.
Thomas Owens
16

Uważam, że możliwość usuwania wszystkiego pomiędzy zestawem sparowanych symboli jest niezwykle przydatna. Na przykład dość często chcę zamienić ciąg znaków w kodzie. Tak więc, di"gdy kursor znajduje się w bloku, usunie ciąg znaków, zachowując ""nienaruszony, i umieści kursor pomiędzy dwoma znakami cudzysłowu. da"robi to samo, ale usuwa również znaki cudzysłowu.

Chinmay Kanchi
źródło
12
Jeszcze lepiej, ci"usuwa i umieszcza kursor w trybie wstawiania, dzięki czemu można od razu rozpocząć pisanie.
Konrad Rudolph,
9

„Uzupełnianie słów kluczowych w trybie wstawiania”. Ctrl-P i Ctrl-N w trybie wstawiania, aby przeszukać tekst i spróbować uzupełnić dowolną wpisaną nazwę zmiennej. Nigdy nie widziałem tego w żadnym innym IDE i naprawdę mi tego brakuje. Uzupełnianie kodu w IDE po prostu nie jest takie samo.

Lang Sharpe
źródło
2
Jeśli chcesz, możesz także poprawnie uzupełnić kod, używając omni-complete. ^X^Oomni-dopełnia w trybie wstawiania, jeśli masz włączone. Ale masz rację, uznaję, że używam uzupełniania słów kluczowych o wiele więcej niż dookólnych.
Chinmay Kanchi,
@Chinmay: Myślę, że masz znaczenie „właściwego” wstecz. Prawidłowe uzupełnienie kodu uzupełnia wszystko przy użyciu zasady lokalizacji, nawet jeśli piszesz tekst zamiast kodu.
ninjalj
SlickEdit ma podobną funkcję; i jest bardzo podobny do IDE
user281377
8
Całkowicie się nie zgadzam. Współczesne środowiska IDE (Visual Studio, Eclipse,…) mają swego rodzaju uzupełnianie kodu, które łatwo konkuruje (i faktycznie przewyższa!) Ctrl-N . Jeśli nie widziałeś tego w IDE, spójrz ponownie na bieżące wersje. I Omni-Complete niestety nie działa poprawnie.
Konrad Rudolph,
8

Kolejną cechą, która uważam za niezwykle przydatną, jest możliwość zmiany wcięcia. :15,30>>wcina dwukrotnie wszystkie wiersze od 15-30 (włącznie), natomiast dwukrotnie :15,30<<wcina te same wiersze.

Chinmay Kanchi
źródło
Chociaż uwielbiam tę funkcję, prawie każde IDE ma wcięcia blokowe (i dedent).
Sean McMillan,
Uważam, że =jest tak samo, jeśli nie bardziej, użyteczny niż <<i >>.
greyfade
6

polecenie dd (usuń bieżący wiersz). Tak często go używam.

Również możliwość wpisania czegoś takiego jak 3dd i usunięcia kolejnych 3 wierszy jest cudowna. Nigdy nie widziałem tego w innym edytorze = D

Alex Hart
źródło
Netbeans prawie to ma, ^ X bez zaznaczenia przecina bieżącą linię.
Alan Pearce
@Alan: Nie, NetBeans ma jVi :)
dr Hannibal Lecter
^ K usuwa linię, a ^ u3 ^ k usuwa 3 linie w emacsie. Shift-Delete robi to samo w Visual Studio.
Raoul,
Alan: dd również wycina bieżącą linię w tym sensie, że można ją wstawić za pomocą p później
281377
3
@Raoul, wiemy, że istnieje seria emaców n 3-klawiszowych kombinacji, które replikują każde polecenie vima - wciąż 3dd to poezja.
cbrandolino,
6

cPoleceń. Na przykład, ci"aby zmienić wewnątrz cudzysłowów. cwzmienić słowo. Wiele przydatnych sztuczek.

Daenyth
źródło
5

.Poleceń. Powtarza ostatnie polecenie.

Adam Jaskiewicz
źródło
+1 do tego i do wszystkich innych funkcji związanych z makrami.
P Shved
3

Esc ! }będzie wpakować aktualny paragraf się do filtra linii poleceń jak fmtlub wcczy whichi wyników powrót do edytora.

Jé Queue
źródło
3

Szybki dostęp do wiersza poleceń. CTRL + Z lub: wqa dostarczy mi wiersz poleceń w czasie krótszym niż 1 sekunda bez mojej ręki opuszczającej klawiaturę.

luispedro
źródło
1
+1 Ta ostatnia
chwila
... lub :!/bin/bash. Używam :!dość często.
greyfade
Zwykle używam:sh
David Brown
3

Tego mogę użyć, hjklaby przesunąć kursor bez wychodzenia z klawiatury. Mam większość programów (takich jak czytniki plików PDF), które pozwalają zmieniać skróty klawiszowe, ustawiać używanie klawiszy ruchu Vima do przewijania itp.

Anto
źródło
1

Trudno jest odpowiedzieć na to pytanie, ze względu na niejasność pytania i nieco na fakt, że IDE różnią się, a wiele z nich oferuje funkcje, których inni nie mają (oraz fakt, że mam tylko kilka z nich).

Jednak moim zdaniem odróżnia Vima od innych redaktorów (tak, nawet Emacsa w tym przypadku) jest to, że jest naprawdę świetnym edytorem . Z biegiem czasu korzystałem z wielu edytorów i mogę szczerze powiedzieć, że bardzo niewielu ma tak kompletny zestaw funkcji do manipulowania tekstem, jak Vim.

Mój styl manipulowania tekstem obejmuje na przykład bardzo często używanie (linia / zaznaczenie kilku linii) powielania i przesuwanie (linia / zaznaczanie kilku linii) w górę iw dół, dla których już dawno zdefiniowałem szybkie skróty. Brakuje mi tych funkcji w większości IDE (chociaż słyszałem, że ReSharper dla VS ma coś podobnego).

Wieża
źródło
1

Czy wiesz, że istnieje wtyczka vi do zaćmienia ? Kosztuje 15 euro (20ish US $), ale jest tego warte. Nigdy więcej ddpośrodku dokumentu i brak wszystkich drobnych przydatnych rzeczy.

Może trochę nie na temat, ale pomyślałem, że warto na to zwrócić uwagę.

lorenzog
źródło
0

W zależności od tego, w jakim języku programujesz, trzymaj się ideu lub uzyskaj ide, który oferuje najwięcej refaktoryzacji, jakie możesz znaleźć, uzyskaj resharper dla visual studio, jeśli robisz c #, intellij dla java lub asystę wizualną dla visual studio, maksymalnie refaktoryzacji w zaćmieniu lub fasoli sieciowej.

Powinniśmy przejść od manipulacji tekstem do manipulowania kodem, narzędzia refaktoryzacyjne dają taką możliwość. Jeśli vim daje ci wszystkie funkcje w porządku, ja na pewno nie chcę już zajmować się edytorem tekstu

Harald Scheirich
źródło
3
To prawie nonsens. Tak, refaktoryzacja jest ważnym narzędziem, ale kod nie pisze się sam. Dobry edytor tekstów przyczynia się znacznie bardziej do wydajności programisty niż dobre narzędzie do refaktoryzacji.
Chinmay Kanchi,
-1

Wybierz kolumnę tabeli

Nie wydaje się, aby znajdowało się to w popularnych IDE, a jeśli tak, to trzymaj je dobrze ukryte. Jest to naprawdę przydatne do testowania wyrażenia regularnego względem kolumny w pliku danych CSV.

sal
źródło
-3

Większość IDE nie pozwala na podzielenie ekranu. Podoba mi się ta funkcja w VIM.

projecktzero
źródło
5
Większość IDE nie? Myślę, że większość tak robi, przynajmniej te, których użyłem.
Anto
Czy możesz podać jakieś przykłady?
projecktzero
1
Większość ekranów obsługi IDE dzieli się inaczej niż Vim / Emacs. Zwykle robią to za pomocą zakładek. Jest to trudniejsze / niemożliwe do manipulowania za pomocą klawiatury (porównaj 50 otwartych plików w Emacsie i 50 otwartych w Eclipse, a szybko zobaczysz wygraną Emacsa).
jsternberg
Większość IDE, które mają podzielony ekran, nie zapewniają łatwych metod nawigacji / dostosowywania a-la<C-w>
Wayne Werner