Czy możliwe jest posiadanie nazw funkcji autouzupełniania vima, zmiennych itp. Podczas używania go do programowania?

Wiele IDE automatycznie uzupełnia nazwy funkcji, zmienne, nazwy metod itp. jako typ użytkownika. Najlepsze z nich uzupełniają nazwy zarówno na podstawie wbudowanej biblioteki języka, jak i tego, co zostało już zdefiniowane w innych plikach tego samego programu.

Na przykład, kiedy piszę Program w Pythonie:

hungy = True def eatFood(food): pass if hungry: eatF 

wiersz eatF automatycznie pokazywał eatFood() jako dostępna opcja autouzupełniania.

Czy Vim ma taką możliwość? Jeśli tak, jak mogę to włączyć?

Odpowiedź

W vimie jest wiele różnych odmian autouzupełniania. Jednym ze sposobów może być użycie SuperTab . Zapewnia to sposób używania uzupełniania tabulatorami mniej więcej w dowolnym momencie. Umożliwiłoby to naciśnięcie klawisza Tab po częściowym wpisaniu słowa w celu uzyskania listy uzupełnień. Na przykład wpisanie eatF, a następnie Tab , aby rozwinąć do eatFood.

Uwaga : wszystkie te zdjęcia odsyłają do przykładowych gifów w akcji.

mg src = „https://i.stack.imgur.com/dVuOT.png” alt = „supertab complementions” title = „Kliknij, aby zobaczyć gif”>

Vim ma doskonałe inne opcje. Przeczytaj :h ins-completion, aby zobaczyć różnorodność wbudowanych opcji uzupełniania. Używanie vim „s CtrlX Ctrl O w połączeniu z wtyczka obsługująca język Python, taka jak jedi , może nadać uzupełnienie. Jedi można skonfigurować tak, aby udostępniał dokumentację o uzupełnianiu omni (to robi CtrlX Ctrl O ). Następnie dokumentacja dla kandydatów do ukończenia pojawiłaby się w podzielonym oknie.

mg src = „https://i.stack.imgur.com/etSIu.png” alt = „ctrlxctrlo complete” title = „Kliknij, aby zobaczyć gif”>

Używanie podobnych wtyczek, ale różne opcje prowadzą do różnego rodzaju zachowań. Możliwe jest na przykład, że nie trzeba będzie pytać o autouzupełnianie (jeśli właśnie tego oczekujesz). Zamiast tego po wpisaniu pewnej liczby liter (powiedzmy 2 lub 3) słowa, wtyczka może spróbuj inteligentnie zaoferować możliwe uzupełnienia w menu.

mg src = „https://i.stack.imgur.com/gtNK0.png” alt = ” wprowadź opis obrazu tutaj „title =” Kliknij, aby zobaczyć gif „>

Krótka odpowiedź brzmi: tak! Ale proces konfiguracji może być nieco skomplikowany. Myślę o tym jako o kroku na długiej drodze do opanowania vima.

Komentarze

  • ' wypróbowałem je wszystkie i zawsze wracam do SuperTab, jest to ' najmniej uciążliwe.
  • Bardzo podoba mi się również wtyczka YouCompleteMe, ponieważ sugeruje ona w trakcie pisania i możesz wybrać lub zignorować sugestie. Tak, wizualnie trudno to zignorować, ale jest bardzo dyskretna w moim przepływie pracy, wymagane Zmniejsz liczbę naciśnięć klawiszy.
  • Ja ' zmieniłem animacje na ” po kliknięciu „, w tym sensie, że są one połączone z animacjami gif.
  • Nie mogę ' korzystać z YouCompleteMe na moim komputerze w pracy, ponieważ nie ' nie mam roota do zainstalowania zależności, SuperTab jest zdecydowanie najlepszym wyborem.
  • @mixedmath W moim przypadku superTab nie ' t działa.

Odpowiedź

Taka funkcjonalność – tj. przeszukiwanie bieżącego pliku ( i wszystkich otwartych plików) dla automatycznego uzupełniania, powinno być domyślnie włączone z Ctrl+P:

zrzut ekranu przedstawiający używane autouzupełnianie

Możesz przejść do n sugestii rozszerzenia za pomocą Ctrl+N, p rewelacyjna sugestia z Ctrl+P i wybierz go, wpisując dowolną literę (która zostanie dodana zaraz po sugestii).

Komentarze

  • Do redaktora (Jasper): Bardziej prawdopodobne jest, że chcę napisać jeszcze raz coś, co napisałem niedawno, a nie coś, co ' napiszę w przyszłości lub na początku plik. Dlatego ^P jest bardziej naturalnym IMHO. W przeciwnym razie dzięki za edycję (mam nadzieję, że kliknąłem właściwy przycisk i dostałeś +2).
  • Tak, mam te wyimaginowane punkty internetowe 🙂 Zawsze myślałem, że lista sugestii będzie posortowana alfabetycznie. ..
  • Kolejność pojawiania się @Jasper jest taka (przynajmniej dla mnie na pewno, zobacz też powyżej: world,word,wood, a nie na odwrót).Tak więc ^P jest ostatnim używanym uzupełnieniem, co jest bardzo przydatne (rzadko sięgam dalej niż 3 pozycje na liście, nawet w długim pliku).
  • protip : inoremap <C-Space> <C-N>

Odpowiedź

Vim obsługuje uzupełnianie natywnie . Możesz przeczytać o różnych różnych uzupełnieniach, które Vim obsługuje w :h ins-completion.

Ogólnie, do wszystkich celów, które znalazłem, wystarczające są uzupełnienia według moich upodobań jednak istnieją pewne wtyczki uzupełniania, które dodają więcej wartości niż to, co oferuje wstawianie uzupełnień. NeoComplete , YCM (YouCompleteMe) to kilka za to samo. Są bardziej zaawansowani w tym sensie, że starają się dokładniej łączyć różne typy uzupełnień, a także mają zaawansowane mechanizmy buforowania, dzięki czemu są szybsze. YCM współpracuje nawet z zewnętrznymi kompilatorami / narzędziami, aby zapewnić lepszą technologię IntelliSense.

Odpowiedź

Tak, skrypty automatycznego uzupełniania dla vim istnieje. „Najlepszy” wybór zależy od języka programowania. Jako przykładowy kod to Python, proponuję przyjrzeć się Jedi . Oprócz tego istnieje You complete me , który obsługuje również inne języki, ale czasami jest postrzegany jako zbyt duży. W przypadku innych języków możesz przeglądać długi zestaw skryptów vima .

Odpowiedź

W trybie wstawiania wpisz kilka pierwszych znaków słowa, a następnie naciśnij:

Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word. 

Jest to szczególnie przydatne przy wpisywaniu nazwy zmiennych w programie.

Opcja „Complete” kontroluje, gdzie wyszukiwane są słowa kluczowe (pliki włączające, pliki znaczników, bufory i inne).

Opcja „completeeopt” steruje sposobem zakończenia (na przykład wyświetlaniem menu).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *