Go開発のためにVimを使う

プログラマは、テキストエディタやIdeなどを使ってコードを書くのに多くの時間を費やします。 だから、何をどのように使用するかが重要です。 私は最近、Go開発のためにVimに移動し、私はそれを完全に愛しています。 最初は、Go拡張機能でVSCodeを使用していましたが、その後、しばらくの間、GoLandを使用しました。 Visual Studio CodeとGoLandの両方が完全に素晴らしいです、私もそれらを使用するのが大好きでした。 Vimを使って学ぶには間違いなく時間がかかりますが、学習する価値があります。 それはあなたのためによりよく働くものがあなたまで全くある。 他の人がそれを使用しているからといってvimを使用しないでください。 私は非常にvimの初心者であり、これで説明することは、私がそれを使い始めた後に学んだことです。 あなたが長い時間のVimユーザーであり、いくつかの良いアドバイス/提案があれば、私は本当にうれしいです。 あなたはこの記事のコメント欄にそれらを置くことができます。 あなたが初心者であれば、私はこの記事の一番下にvimを学ぶための良いリソースをいくつか入れます。

注:この投稿は元々https://jogendra.devに投稿されたものです。

なぜ人々はVimを使うのですか?

  • VimはすべてのUnixシステム上に存在することが保証されています(基本的には、すべての主要なプラットフォーム上で利用可能です)。 それはどこにでもあり、すべてのプラットフォームで同じです。 Vimは、すべてのファイル形式とプログラミング言語、異なるプログラミング言語のための異なるIdeをダウンロードする必要はありませんサポートしてい
  • あなたの指は非常にまれにあなたが非常に、非常に迅速にテキストを編集することができますことを意味し、ホーム行を離れる必要があります。 あなたの便利に従って主地図を描くことをすることができます。 キーボードとマウスを切り替える必要がないことは間違いなくVimといいです。
  • Vimは非常に軽量で高速です。 Vimは大きなファイルを簡単に処理できますが、Visual Studioや他のIDEはそれらをスムーズに処理できませんでした。 あなたのお気に入りの非vimテキストエディタとvimで大きなファイル(〜20MB)を開いてみてください、あなたは間違いなく違いを知ることができます。 Vimがファイル(バッファ)、分割(ウィンドウ)、レイアウト(タブ)を処理する方法には大きな力があり、他のエディタでは得られない力があります。
  • Vimやvimのようなテキストエディタ(emacs、nanoなど)は、とてもネイティブに見え、気を散らすことはありません。 私はターミナルとエディタ/IDEを切り替える必要はありません。 それは単に一つの場所にあるすべてのものです。 少しの努力でvimで生産的になるのは非常に簡単です。
  • Vimは、リモートマシン/サーバーに迅速な設定やその他の変更を行う必要があるときに非常に便利です。 自分のマシンでも、小さな変更のために重いテキストエディタを開くことはありません。
  • Vimは高度に設定可能です。 ~/.vimrcを使用するだけで、デフォルトの設定を上書きし、自分の設定をパーソナライズできます。 Vimプラグインは、テキストエディタで必要なすべてのものをvimに提供します。 オートコンプリート、構文の強調表示、またはあなたがそれに名前を付け、それが利用可能である他の機能は、あなただけの右のプラグインが必要です。
  • vimを使うのは楽しいです。 最初に使うのは少し難しいですが、慣れてくると楽しくなります。

行こう!

この記事では、Go開発のための本格的なIDEとしてVimを設定することを検討します。 私たちが使用しようとしているプラグインは次のとおりです:

  • vim-go:VimのためのGo開発プラグイン。 Goの開発に必要なものがすべて揃っています。
  • Nerdtree-Vim用のファイルシステムエクスプローラ。 複雑なディレクトリ階層を視覚的に参照したり、ファイルをすばやく開いて読み取りや編集を行い、基本的なファイルシステム操作を実行できます。

🔌 Vim-Go

Vim-Goは、Go開発のための最も人気があり、最も使用されているvimプラグインです。 それはあなたが必要とするかもしれないほとんどすべての機能を提供します。 そのうちのいくつかは次のとおりです:

  • パッケージを:GoBuildでコンパイルし、:GoInstallでインストールするか、:GoTestでテストします。
  • 現在のファイルを:GoRunですばやく実行します。
  • 構文の強調表示と折りたたみ。
  • goplsによる自動補完のサポート。
  • 保存時にgofmtgoimportsを実行します。 つまり、パッケージのインポートやコードの書式設定について心配する必要はありません。vim-goはファイルを保存する際にそれを行います。
  • :GoDefでシンボル/宣言に移動し、:GoDocまたは:GoDocBrowserでドキュメントを検索します。
  • コードカバレッジをチェックし、コードリントなどを行います。

vim-goが提供するすべての機能をここで確認できます。

vim-goをインストールする

Vim8はパッケージのネイティブサポートを追加しました。~/.vimディレクトリに内容を複製するだけでプラグインをロードできます。 Vim-goをインストールするには、コマンドを実行するだけです:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
全画面モードに入る全画面モードを終了する

また、必要なすべてのバイナリをインストールする必要があります。 vim-goコマンド:GoInstallBinariesを提供することで、すべての必要なバイナリをgo getすることで、それらのすべてを簡単にインストールできます。

またはあなたの~/.vimrcにプラグインを置くことができます。

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
全画面モードに入る全画面モードを終了する

ここで.vimrcを保存し、vim +PlugInstallを実行してプラグインをインストールします。 必要なすべてのバイナリと共にvim-goプラグインをインストールします。

以下のvim-go関連のディレクティブを.vimrcに追加して、より便利にしました:

あなた自身のカスタマイズのための公式チュートリアルを訪問することができます。 完全なvim-goドキュメントはvimエディタで利用できます。:help vim-goを実行してチェックアウトすることができます。 これは私のvimがvim-goをインストールして設定した後にGo programmを探す方法です:

美しい?

自動補完

自動補完なしで定義に行くことができないコード化するのは本当に難しいです。 Vim-goは補完などにgoplsを使用できます。 補完は、omnifuncを介してデフォルトで有効になっています。 INSERTモードでは、Ctrl-x Ctrl-pを使用して完了をトリガーできます。 一致する名前が見つかった場合は、Ctrl-nキーとCtrl-pキーを使用してナビゲートできるポップアップメニューが開きます。
vim-goのftplugin/go.vimが自動補完用に正しく設定されているかどうかを確認するには、次のように実行します:

:verbose setlocal omnifunc?
全画面モードに入る全画面モードを終了する

以下のメッセージが表示されます:

ドット(.)を押すたびにオートコンプリートプロンプトが自動的に表示されるようにするには、次の行を追加します。.vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
全画面モードに入る全画面モードを終了する

今、入力すると、ドキュメントのプレビューと一緒に自動提案を提供する必要があります。 これは次のようになります:

vim-go補完とは別に、自動補完やその他のLSP機能に使用できる優れたプラグインがいくつかあります。 そのうちのいくつかは次のとおりです:

  • coc.nvim(Conquer of Completion):Vim8&Neovim用のIntellisenseエンジン、VSCodeとしての完全な言語サーバープロトコルサポート。
  • LanguageClient-neovim:Rustで書かれた最小限の言語サーバープロトコルクライアント。
  • YouCompleteMe:コード補完エンジン。 それはいくつかの完了エンジンを持っています。

言語サーバープロトコル(LSP)とgopls

言語サーバープロトコルは、自動補完、定義への移動、すべての参照の検索などの機能をツールに統合するために、ツール(クライ このプロトコルの目的は、任意のエディタやIDEとは独立してプログラミング言語サポートを実装して配布できるようにすることです。 言語サーバープロトコルは、もともとMicrosoftのVisual Studioコードのために開発され、現在はオープン標準です。 マイクロソフトはRed HatとCodenvyと協力して、プロトコルの仕様を標準化しました。

LSP以前は、言語ごとに異なるIdeが存在していました(まだ多くあります)。 すべてのIdeには、言語固有の統合(構文の強調表示、自動補完、定義への移動などの機能)がありました。 この状況は、多くの場合、統合の数がMエディタとN言語の積であるM×N問題と呼ばれます。 言語サーバープロトコルが行うことは、このM×n問題をM+N問題に変更することです。 LSPについての最もよい事は、それがIdeの完全に独立している、です。 その結果、Visual Studioは拡張機能を介して非常に多くの異なる言語で動作することがわかります。 これらの拡張機能はLSPを利用します。

LSPについての詳細はこちらと彼女を読むか、このYouTubeのビデオを見て、それがどのように動作するかを確認することができます。

Golangの公式言語サーバーはgoplsです(発音: “)と表記されることもある。 Goplsの状態とそのサポートされている機能に関する詳細情報を確認できます。

Vim NERDTree

あなたのVimで多くのものを設定した後、おそらくまだ最も欠けているのは、プロジェクトファイルを簡単に閲覧できる”サイドウィンドウ”です。 NERDTreeがあなたをそこに連れて行きました。 NERDTreeは、視覚的にツリースタイルのサイドウィンドウを使用してファイルを閲覧するのに役立ちます本格的なファイルシステムエクスプローラです。 NERDTreeを使用すると、読み取りや編集のためにファイルをすばやく開いたり、基本的なファイルシステム操作を実行できます。

インストールと設定

vim-goやcocと同じようにNERDTreeをインストールすることができます。nvim。 単純にPlug 'preservim/nerdtree'.vimrcに追加し、コマンドラインから:PlugInstallまたはvim +PlugInstallを実行します。

さらに、設定のためのwiki Faqをチェックアウトすることができます。 私のNERDTreeの設定は次のようになります:

vimではvim .を使ってディレクトリを開くことができます(VSCodeのcode .と同様です)。 NERDTreeとコードを切り替えるには、CTRL+wwまたはCTRL+w+ArrowKeyを使用します。 NERDTreeには組み込みのドキュメントがあり、NERDTreeウィンドウにいるときに?を押すことで確認できます。

これは私のVimの設定がNERDTreeでどのように見えるかです:

Jogendra/dotfiles/vimのGitHubの私の.vimrcとvimスクリプトを見ることができます。

Vimを使い始めるのに役立つリンクをいくつか紹介します:

  • OpenVim-Interactive Vim Tutorials
  • FandomによるベストVim Tips
  • なぜ、ああ、なぜ、それらのnutheadsはviを使うのですか?
  • thoughtbotによるVim記事のコレクション
  • spf13-vim-究極のVimディストリビューション
  • Vim Cheatsheet
  • Vim Tab Madness。 Buffers vs Tabs

vimtutorコマンドを実行すると、コマンドラインでvimtutorを実行することができます。 それはVimのチュートリアルを開き、あなたがそれを始めるのに役立ちます。

Bottom Lines

vimを使うのは楽しいです。 最初は、あなたはそれを使用していくつかの問題に直面する可能性があり、あなたはそれを使用する方法を学ぶ必要があるかもしれませんが、それ 少なくとも、IDEを使用すると同時にvimを学習し続けることができます。 最低限から始めて、毎日それを少し構築してください。 Vimに必要なものすべてに利用可能なプラグインがたくさんあります。 Golang開発にvimを使用することは、vim-goプラグインで非常に便利です。 すべてを一つの場所に持ち、より生産的であることはいいことではありませんか?

あなたの同僚/友人と共有してください。 あなたはTwitterで私に手を差し伸べることができます。



+