Używanie Vima do kodowania aplikacji na dużą skalę

17

Zaczynam się uczyć Vima i podążam za wskazówkami zawartymi w stackexchange. Zaczynam go używać w niektórych projektach zabawek i jestem z tym spoko.
Ale zacząłem się zastanawiać, jak możesz być produktywny bez ciągłego otwierania innych plików, aby wiedzieć, jak się nazywa ta klasa, jakie makro zawiera inne pliki itp. Itp.

Jakie są wspólne porady, które możesz udzielić?

Matias
źródło
1
Na pewno będziesz musiał dodać kilka skryptów Vima, aby pomóc. Używam Vima do programowania i zawsze używam tagów, aby pomóc mi poruszać się po kodzie źródłowym. Jakiego języka używasz?
tehnyit 10.11.11

Odpowiedzi:

10

Jednym z aspektów doświadczonych programistów, którzy przechodzą z IDE do środowiska konsoli / xterm, jest znalezienie zamiennika dla indeksowania obiektów kodu źródłowego (nazwy funkcji, zmienne). Uważam, że ogólnym terminem używanym w Microsoft Visual Studio jest Intellisense lub coś w tym rodzaju.

W świecie Unix / Linux, takim jak vim, jedno narzędzie używane, jeśli ctagslub popularna wielojęzyczna implementacja Open Source, bujne ctagi . Nie jest vimspecyficzny i jest obsługiwany przez wiele edytorów tekstów Unix, Linux, MS Windows, Mac OS, w tym Emacs, CRiSP, vile i wiele innych klonów vi, nedit, gedit, JED, UltraEdit, BBEdit i DreamWeaver (niektóre z nich są za pośrednictwem wtyczek innych firm).

Poza tym, dobry projekt i przemyślany rozkład, organizacja większych projektów sprawia, że ​​projekt jest zarządzalny, ponieważ istnieje tylko 1-2 oczywiste potencjalne miejsca, w których można znaleźć dowolną część informacji (typedef lub classdefinicji itp.).

Używam również wielu instancji vima (często poprzez viewprzeglądanie plików źródłowych tylko do odczytu), a także ograniczonego użycia wielu buforów edycyjnych na instancję vima (głównie do przenoszenia lub refaktoryzacji kodu między plikami). Uważam, że używanie tylko kilku plików źródłowych otwartych na raz może pomóc na swój własny mały sposób, pozwalając mi skupić się na zadaniu pod ręką.

Mctylr
źródło
1
+1 za sugerowanie bujnych tagów !
Attila O.
1
Uważam, że samo zorganizowanie bardzo pomaga. Jeśli spojrzysz na artefakt w źródle i powiesz „Och, to musi być zdefiniowane w tym miejscu”, to wszystko stanie się znacznie prostsze. Plusem jest to, że rozpoczynanie sesji vim jest tak szybkie, że posiadanie pół tuzina otwartych na raz staje się całkiem normalną rzeczą
Zachary K
@ZacharyK Half tuzin? Zwykle mam pełny tuzin do końca dnia
Izkata,
zależy od dnia
Zachary K
7

Nie zamierzam brać udziału w debacie VIM vs. IDE. To chyba osobisty pref. Ale używam dużo VIM i dlatego uważam, że jest bardzo wydajny w użyciu VIM

Dwie części odpowiedzi:

Odp .: Większość rzeczy, które VIM pozwala na większość rzeczy, które możesz zrobić z IDE (nie próbuję umieścić każdej funkcji, ale tylko kilka nieoczywistych, które ograniczają wygląd vi)

  1. możesz przejść przez prototypy, jeśli masz ctagswłączone i to zrobiszctrl+{

  2. Możesz otworzyć wiele okien jednocześnie śpiewając polecenie: sp „nazwa pliku”. Oczywiście czasami po prostu otwieram wiele terminali, aby ułatwić sobie życie.

  3. Potężne podświetlanie składni. Domyślne, a także inne rzeczy. Ponadto, w przeciwieństwie do niektórych IDE, jeśli występuje niezgodność otwartych nawiasów, łańcuch lub nie pasują do zamkniętych, daje to bardzo wyraźne wskazanie. Dotyczy większości języków, a nie konkretnych.

  4. Możesz wykonać linię poleceń za pomocą polecenia ":!make"bez wychodzenia z okna.

  5. Przechodź znacznie szybciej w oparciu o słowo, w oparciu o wyszukiwanie (vi obsługuje regexp, jeśli jesteś dostępny), a możesz przechodzić { do } za pomocąESC %

  6. Możliwe jest wykonywanie pracy w GDB podczas debugowania krokowego i utrzymywania vi (w innym oknie do pracy na kodzie). Gdy zdecydujesz się zmienić plik, możesz zrobić to ponownie i załadować go ponownie w GDB.

B. Wiele rzeczy znajdziesz w VIM

  1. Wyszukiwanie i zamiana są zdecydowanie bardziej wydajne.

  2. Możesz stworzyć swój własny wygląd i styl (czarny + zielony w przeciwieństwie do białego + niebieskiego) i, co ważniejsze, własne, potężne polecenie.

  3. Wybierz blok pionowy. Spróbuj ctrl+vprzesunąć kursor w pionie. To naprawdę niewyobrażalna funkcja!

  4. Brzmi głośno - ale spróbuj wyciąć / skopiować blok i trzeba go pominąć 30 razy! Nie wymaga to więcej wysiłku niż zrobienie tego 1 raz. Spróbuj także powtórzyć (nie cofnąć) czynność jeden lub wiele razy.

  5. Automatyczne wcięcie, kontrola tabulatorów i automatyczny sposób konwertowania komentarzy w komentarze blokowe lub komentarze dotyczące określonej stylizacji.

  6. Skuteczny konflikt scalania z vimdiff.

  7. Najważniejsze w środowisku pracy opartym na konsoli jest to, że nigdy nie dotykaj myszy! więc jeśli jesteś szybki na klawiaturze - IDE nie są dobre.

  8. Pracuj jednocześnie na wielu komputerach i serwerach! Nie wydaje się to oczywiste, ale czasami podczas pracy na serwerze logujesz się bezpośrednio na wielu komputerach i robisz różne rzeczy.

Odpowie na pytanie, jak postępować w vi, jeśli te funkcje są poważnie wymagające. Zobacz tę stronę Vimcast . oczywiście jest ich wiele.

Ale tak, większość rzeczy opartych na konsoli jest staromodna i w żaden sposób nie mówię nic przeciwko IDE.

Dipan Mehta
źródło
Mała uwaga: vim ma :makewbudowane polecenie, nawet go nie potrzebujesz !(które dla tych, którzy nie używają vima, wykonuje polecenie na terminalu). Właśnie znalazłem ctrl-vkilka tygodni temu i teraz używam go stale, jest niezwykle przydatny.
Kevin
@Kevin - ok, nie wiedziałem o <code>: make </code>! To było ekscytujące wiedzieć. Jest to rodzaj romansu, jaki otrzymujesz dzięki VIM - nigdy nie można stworzyć pełnej listy funkcji, które VIM może na to pozwolić !! Zawsze Cię zaskakuje. Dzięki.
Dipan Mehta
Tak, jest świetnie. Zaletą :makejest to, że automatycznie przenosi Cię do pierwszego błędu i możesz nawigować po nim za pomocą cni cp, patrz :help make. Właściwie nie zdawałem sobie z tego sprawy, dopóki nie przejrzałem; Zwykle robię w innym oknie i pwd, wydaje się, że musisz być w tym samym pliku co Makefile, chociaż możesz umieścić go w katalogu src, aby przejść do katalogu głównego i tam zrobić.
Kevin
4

Moim zdaniem, Vim daje ci bardzo silny edytor z podstawowymi funkcjami, ale to do ciebie należy dopracowanie skryptów / dodatków, które najprawdopodobniej wykorzystasz w swoich projektach. Prawdopodobnie będą się różnić w zależności od tego, czy przeważnie edytujesz skrypty, dokumentację lub pliki, które należy skompilować.

Jako przykład mogę używać zencodingdo okazjonalnego edycji html / css, snipmatedla TextMate podobny fragmentów, a kilka Pythona związanych dodatków ( pyflakes, pep8, vimpdb, etc.) dla Pythona kodowania, czyli co robię najczęściej.

Są też inne dodatki, których nie używam często, ale wciąż uważam je za pomocne, jak Dpastei ConqueTerm.

Jednak dla mnie najbardziej przydatne funkcje Vima to wbudowane funkcje (cofanie w czasie, szybka nawigacja, filtry zasięgu itp.) - rzeczy, których nie mogłem znaleźć (a przynajmniej nie są tak łatwo dostępne) ) w IDE. Kiedy więc skonfigurujesz Vima tak, aby posiadał fragmenty IDE, których naprawdę potrzebujesz ( snipmate, ctags...), możesz czerpać korzyści ze środowiska IDE i środowiska konsoli.

Używam Vima tylko do konsoli, więc nie mogę powiedzieć, jak przydatne są te narzędzia w Gvimie.

Jednak pomimo całej dodatkowej dobroci wciąż biegam !grep ...lub ^Z + find ...co jakiś czas.

Attila O.
źródło
3

Całe moje programowanie wykonuję w vimie. Uważam, że jest to łatwiejsze niż jakiekolwiek IDE, którego użyłem. Możesz mieć otwartych wiele plików jednocześnie, nawet na tym samym ekranie (przeglądaj zakładki i okna). Zwykle pracuję w X, więc mam kilka (6) otwartych ekranów xterm: jeden dla plików c w vimie (kilka na kartach), drugi dla nagłówków w vimie (także tabulatory), i okna inne niż vim: budowanie, debugowanie , konfiguracja itp. Nawet gdy korzystam z czystej konsoli, mogę używać kart, okien i składania kodu, aby zobaczyć, czego potrzebuję, i mogę budować, a nawet przeglądać strony podręczne bez wychodzenia z vima, wystarczy znać właściwe polecenia. I jest ich tak wiele, jestem pewien, że nie opanowałem nawet połowy z nich. I trudno jest przeszukać wyszukiwanie Vima i zastąpić je.

Kevin
źródło
1

Wiele aplikacji na dużą skalę zostało (co najmniej dwie;) i, jak przypuszczam, wiele innych zostanie napisanych całkowicie w Vimie. IDE jako takie są wciąż dość nowoczesną innowacją , że tak powiem, .

Jednak brakuje trochę zwykłej wanilii vi (ouch) lub Vima. Znajomość Vima i myślenie na wiele sposobów pomaga trochę, a wtyczki bardzo pomagają , dla których www.vim.org jest nieskończonym źródłem. Niektóre specyficzne dla używanego języka, a niektóre ogólne (do komentowania, przeglądania plików, ...) szybko zamieniają je w bardzo szybkie środowisko programistyczne. W końcu (a niektórzy na pewno będą się kłócić) IDE to po prostu edytor z wtyczkami spakowanymi w ładniejszym interfejsie. W IDE też nie ma zbyt wielu elementów graficznych .

Wieża
źródło