Używanie Vima do programowania Go

jako programista spędzasz dużo czasu na używaniu edytorów tekstu, IDE itp. do kodowania. Ważne jest więc, co i jak go używasz. Niedawno przeniosłem się na vim dla GO development i całkowicie go kocham. Początkowo używałem VSCode z rozszerzeniem Go, a następnie przez jakiś czas korzystałem z Golanda. Visual Studio Code i GoLand są całkowicie niesamowite, uwielbiałem ich używać. Zdecydowanie potrzeba trochę czasu, aby nauczyć się za pomocą Vima, ale warto się tego nauczyć. To całkowicie od Ciebie zależy, co działa lepiej dla ciebie. Nie używaj Vima tylko dlatego, że inni go używają. Jestem bardzo początkującym Vimem i rzeczy, które zamierzam wyjaśnić w tym, nauczyłem się po tym, jak zacząłem go używać. Byłbym bardzo zadowolony, jeśli jesteś długim użytkownikiem Vima i masz dobre rady / sugestie. Możesz umieścić je w sekcji komentarzy tego postu. Jeśli jesteś początkujący, umieszczę kilka dobrych zasobów do nauki Vima na dole tego postu.

uwaga: ten post jest pierwotnie opublikowany na https://jogendra.dev.

dlaczego ludzie używają Vima?

  • vim ma gwarancję istnienia na wszystkich systemach uniksowych (zasadniczo jest dostępny na każdej większej platformie). Jest wszędzie i jest taki sam na wszystkich platformach. Vim obsługuje wszystkie formaty plików i języki programowania, nie ma potrzeby pobierania różnych identyfikatorów dla różnych języków programowania.
  • nawigacja bez myszy. Palce bardzo rzadko muszą opuszczać wiersz Główny, co oznacza, że będziesz mógł edytować tekst bardzo, bardzo szybko. Możesz wykonać mapowanie kluczy zgodnie ze swoją wygodą. Brak konieczności przełączania się między klawiaturą a myszą jest zdecydowanie miły w Vimie.
  • Vim jest bardzo lekki i szybki. Vim może z łatwością obsługiwać duże pliki, ale Visual Studio lub inne IDE nie poradziły sobie z nimi płynnie. Spróbuj otworzyć duży plik (~20MB) za pomocą ulubionego edytora tekstu non-vim i vim, na pewno poznasz różnicę. Istnieje duża moc w sposobie, w jaki vim obsługuje pliki (bufory), podziały (okna) i układy (karty), moc, której nie można uzyskać w innych edytorach.
  • vim i Vim jak edytory tekstu (emacs, nano, itp) czują się i wyglądają tak natywnie, bez rozpraszania uwagi. Nie muszę przełączać się między terminalem a edytorem / IDE. To po prostu wszystko w jednym miejscu. Bardzo łatwo jest być produktywnym w Vimie przy niewielkim wysiłku.
  • Vim jest bardzo przydatny, gdy trzeba dokonać szybkich zmian konfiguracyjnych lub innych na zdalnym komputerze/serwerze. Nawet na własnym komputerze nie otworzysz ciężkiego edytora tekstu dla małych zmian.
  • Vim jest wysoce konfigurowalny. Możesz po prostu użyć ~/.vimrc, aby zastąpić domyślne konfiguracje i spersonalizować swoje. Wtyczki Vim zapewniają wszystko, czego potrzebujesz w edytorze tekstu. Autouzupełnianie, podświetlanie składni lub dowolna inna funkcja, którą nazwałeś i która jest dostępna, potrzebujesz tylko odpowiedniej wtyczki.
  • używanie Vima jest zabawne. Początkowo jest to trochę trudne do użycia, ale staje się zabawne, gdy się do tego przyzwyczaisz.

chodźmy!

w tym poście zbadamy konfigurację Vima jako pełnoprawnego IDE dla rozwoju Go. Wtyczki, których będziemy używać to:

  • vim-go: Wtyczka programistyczna Go dla Vima. Ma wszystko, czego potrzebujesz do rozwoju Go.
  • NERDTree-Eksplorator systemu plików dla Vima. Umożliwia wizualne przeglądanie złożonych hierarchii katalogów, szybkie otwieranie plików do odczytu lub edycji i wykonywanie podstawowych operacji na systemie plików.

🔌 Vim-Go

vim-Go jest najpopularniejszą i najczęściej używaną wtyczką Vima do programowania Go. Oferuje prawie wszystkie funkcje, których możesz potrzebować. Niektóre z nich to:

  • Skompiluj pakiet za pomocą :GoBuild, zainstaluj go za pomocą :GoInstall lub Przetestuj za pomocą :GoTest.
  • szybko wykonaj bieżące pliki za pomocą :GoRun.
  • podświetlanie i składanie składni.
  • Obsługa autouzupełniania poprzez gopls.
  • Uruchom gofmt i goimports przy zapisie. Oznacza to, że nie musisz się martwić o importowanie pakietów i formatowanie kodu, vim-go zrobi to za Ciebie przy zapisywaniu pliku.
  • przejdź do symbolu / deklaracji za pomocą :GoDef i wyszukaj dokumentację za pomocą :GoDoclub :GoDocBrowser.
  • Sprawdź pokrycie kodu, wykonaj linkowanie kodu itp.

możesz sprawdzić wszystkie funkcje oferowane przez vim-przejdź tutaj.

instalacja vim-go

Vim 8 dodała natywną obsługę pakietów, co oznacza, że możesz ładować wtyczki, po prostu klonując ich zawartość do katalogu ~/.vim. Aby zainstalować vim-go, możesz po prostu uruchomić polecenie:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
wejdź w tryb pełnoekranowy Wyjdź z trybu pełnoekranowego

będziesz także musiał zainstalować wszystkie niezbędne pliki binarne. vim-go ułatwia instalację wszystkich z nich, dostarczając polecenie :GoInstallBinaries, które spowoduje go get wszystkie wymagane pliki binarne.

lub możesz umieścić wtyczkę w swoim ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
wejdź w tryb pełnoekranowy Wyjdź z trybu pełnoekranowego

teraz zapisz .vimrc i zainstaluj wtyczkę, uruchamiając vim +PlugInstall. Zainstaluje wtyczkę vim-go ze wszystkimi niezbędnymi plikami binarnymi.

dodałem następujące dyrektywy związane z vim-go do mojego .vimrc , aby był bardziej użyteczny:

możesz odwiedzić oficjalne samouczki dla własnych dostosowań. Kompletne dokumentacje vim-go są dostępne w edytorze vim, możesz po prostu uruchomić :help vim-go, aby je sprawdzić. W ten sposób mój vim szuka programu Go Po zainstalowaniu i skonfigurowaniu vim-go:

piękna?

Automatyczne uzupełnianie

naprawdę trudno jest kodować bez automatycznego uzupełniania i nie będąc w stanie przejść do definicji. Vim-go może użyć gopls do zakończenia itp. Zakończenie jest domyślnie włączone przez omnifunc. Gdy jesteś w trybie INSERT, możesz wywołać zakończenie za pomocą Ctrl-x Ctrl-p. Jeśli znajdziesz pasujące nazwy, otworzy się menu podręczne, które można nawigować za pomocą klawiszy Ctrl-n i Ctrl-p.
aby sprawdzić, czy vim-go ftplugin/go.vim został poprawnie skonfigurowany pod kątem automatycznego uzupełniania, możesz uruchomić:

:verbose setlocal omnifunc?
wejdź w tryb pełnoekranowy Wyjdź z trybu pełnoekranowego

poniżej powinna pojawić się wiadomość:

jeśli chcesz, aby monit o autouzupełnianie pojawiał się automatycznie po naciśnięciu kropki (.), możesz dodać następujący wiersz do swojego .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
wejdź w tryb pełnoekranowy Wyjdź z trybu pełnoekranowego

teraz pisanie powinno oferować sugestie auto wraz z podglądami dokumentacji. Powinno wyglądać mniej więcej tak:

oprócz uzupełniania vim-go, istnieje kilka dobrych wtyczek, których możesz użyć do automatycznego uzupełniania i innych funkcji LSP. Niektóre z nich to:

  • coc.nvim (Conquer of Completion): Silnik Intellisense dla Vim8 & Neovim, pełna obsługa protokołu serwera językowego jako VSCode.
  • LanguageClient-neovim: minimalny klient protokołu serwera językowego napisany w Rust.
  • YouCompleteMe: silnik uzupełniania kodu. Posiada kilka silników kompletacyjnych.

Language Server Protocol (LSP) i gopl

Language Server Protocol jest używany między narzędziem (klient) i dostawcą smartness języka (serwer) do integracji funkcji, takich jak auto-complete, przejdź do definicji, Znajdź wszystkie odniesienia i podobne do narzędzia. Celem protokołu jest umożliwienie implementacji i dystrybucji obsługi języka programowania niezależnie od danego edytora lub IDE. Protokół Language Server został pierwotnie opracowany dla Microsoft Visual Studio Code i jest obecnie otwartym standardem. Microsoft współpracował z Red Hat i Codenvy w celu ujednolicenia specyfikacji protokołu.

przed LSP były różne IDE dla różnych języków (wciąż jest ich wiele). Każdy IDE miał specyficzną integrację języka (podświetlanie składni, automatyczne uzupełnianie, przechodzenie do definicji itp.). Sytuacja ta jest często określana jako problem M × N, gdzie liczba integracji jest iloczynem edytorów M i języków N. Protokół serwera językowego zmienia ten problem M × N na problem m + n. Najlepsze w LSP jest to, że jest całkowicie niezależny od IDE. W rezultacie możemy zobaczyć, że Visual Studio działa dla tak wielu różnych języków za pośrednictwem rozszerzeń. Rozszerzenia te wykorzystują LSP.

możesz przeczytać więcej o LSP tutaj i jej lub obejrzeć ten film na YouTube, aby zobaczyć, jak to działa.

oficjalnym serwerem językowym dla Golang jest gopl (wymawiane: „idź proszę”). Możesz sprawdzić więcej informacji o statusie gopl i obsługiwanych przez niego funkcjach.

Ner NERDTree

po skonfigurowaniu wielu rzeczy w Vimie, jedną rzeczą, której prawdopodobnie nadal brakuje, jest „Boczne Okno”, w którym możesz łatwo przeglądać pliki projektu. NERDTree cię tam przywiózł. NERDTree jest pełnoprawnym Eksploratorem systemu plików, który pomaga wizualnie przeglądać pliki za pomocą okna bocznego w stylu drzewa. Dzięki NERDTree możesz szybko otwierać pliki do odczytu lub edycji i wykonywać podstawowe operacje na systemie plików.

instalacja i konfiguracja

możesz zainstalować NERDTree tak samo jak vim-go i coc.nvim. Po prostu dodaj Plug 'preservim/nerdtree' do .vimrc i uruchom :PlugInstall lub uruchom vim +PlugInstall z wiersza poleceń.

co więcej, możesz sprawdzić FAQ wiki dla konfiguracji. Moje ustawienia dla NERDTree są podobne do:

możesz otworzyć katalog do Vima używając vim .(podobnie do code . dla VSCode). Możesz przełączać się między NERDTree a kodem, używając CTRL+ww lub CTRL+w+ArrowKey. NERDTree ma wbudowaną dokumentację, możesz je sprawdzić, naciskając ?, gdy jesteś w oknie NERDTree.

tak wygląda moja konfiguracja Vima z NERDTree:

możesz rzucić okiem na moje Skrypty .vimrc i vim na Githubie w jogendra / dotfiles / vim.

oto kilka linków, które pomogą Ci rozpocząć korzystanie z Vima:

  • OpenVim – interaktywne samouczki Vima
  • najlepsze porady Vima od Fandomu
  • dlaczego, dlaczego, ci nudziarze używają vi?
  • zbiór artykułów Vim by thougbot
  • spf13 – Vim-The Ultimate Vim Distribution
  • Vim Cheatsheet
  • Vim Tab Madness. Bufory vs karty

możesz po prostu uruchomić vimtutor w wierszu poleceń, uruchamiając polecenie vimtutor. Otworzy samouczki Vima i pomoże Ci zacząć z tym.

Bottom Lines

używanie Vima jest zabawne. Początkowo możesz napotkać problem z używaniem go i być może będziesz musiał nauczyć się go używać, ale zdecydowanie warto się go nauczyć. Przynajmniej możesz kontynuować naukę Vima przy użyciu IDE. Zacznij od minimum i buduj na nim trochę każdego dnia. Istnieje wiele wtyczek dostępnych dla wszystkiego, czego potrzebujesz z Vimem. Korzystanie z Vima dla rozwoju Golang jest bardzo miłe z wtyczką vim-go. Czy nie jest miło mieć wszystko w jednym miejscu i być bardziej produktywnym?

dzięki za przeczytanie. Podziel się z kolegami/przyjaciółmi. Możesz skontaktować się ze mną na Twitterze.



+