Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

忙しい人のためのvim-goの設定 @neovim @dein @tomlファイルの書き方

$
0
0

vim-goチュートリアルを最初から通してやったときの最終的なneovim:deinで読み込むtomlの設定を公開します。

lazy.tomlにはバッファのファイルタイプがgoのときに読み込むプラグインなどを書いておく。
以下golang用プラグインの部分抜粋。

~/.config/dein/lazy.toml
# go lang plugins[[plugins]]# go command use as vim command :GoBuild, :GoInstall# EXECUTE `:GoInstallBinaries` AT FIRST!# it's take a long time to go get some go sources & build them.repo='fatih/vim-go'on_ft='go'hook_add='''"参考:https://github.com/hnakamur/vim-go-tutorial-ja":nextなどでバッファ移動時にファイルが変更されていれば書き込む":GoBuildするときにファイルを保存する必要がなくなるautocmdFileTypegosetautowrite"===VIM-GOCOMMANDKEYBINDS==="autocmdFileTypegonmap<leader>b<Plug>(go-build)"下記に改善版autocmdFileTypegonmap<leader>r<Plug>(go-run)autocmdFileTypegonmap<leader>t<Plug>(go-test)autocmdFileTypegonmap<Leader>c<Plug>(go-coverage-toggle)"run:GoBuildor:GoTestCompilebasedonthegofilefunction!s:build_go_files()letl:file=expand('%')ifl:file=~# '^\f\+_test\.go$'callgo#test#Test(0, 1)elseifl:file=~# '^\f\+\.go$'callgo#cmd#Build(0)endifendfunctionautocmdFileTypegonmap<leader>b:<C-u>call<SID>build_go_files()<CR>"ファイル切り替え"チュートリアルのおすすめキーバインドautocmdFiletypegocommand!-bangAcallgo#alternate#Switch(<bang>0, 'edit')autocmdFiletypegocommand!-bangAVcallgo#alternate#Switch(<bang>0, 'vsplit')autocmdFiletypegocommand!-bangAScallgo#alternate#Switch(<bang>0, 'split')autocmdFiletypegocommand!-bangATcallgo#alternate#Switch(<bang>0, 'tabe')"自分専用キーバインド(^とpが近いので)autocmdFileTypegonmap<Leader>pp<Plug>(go-alternate-edit)autocmdFileTypegonmap<Leader>ps<Plug>(go-alternate-split)autocmdFileTypegonmap<Leader>pv<Plug>(go-alternate-vertical)"tabに表示はない"[[,]]:次/前の関数に移動"(go組込関数上などで)K::GoDocと同様"===VIM-GOOPTIONS==="GoRunの結果をsplitで表示Default->"vsplit"letg:go_term_mode="split"":GoFmt時にimportのチェックDefault->gofmt"ファイルが巨大だと保存時の:GoFmtが遅くなるので消しましょうletg:go_fmt_command="goimports"""コメントも関数の一部として扱われたくないときは0に設定するDefault=>1"letg:go_textobj_include_function_doc=1"キャメルケースに変換(defalutsnake_cake)letg:go_addtags_transform="camelcase"":GoMetaLinterで呼び出すコマンドDefault->['vet','golint','errcheck']"letg:go_metalinter_enabled=['vet','golint','errcheck']"自動保存時にLinter有効化Default->0letg:go_metalinter_autosave=1"自動保存時に走らせるLinterDefault->['vet','golint']"letg:go_metalinter_autosave_enabled=['vet','golint']"自動保存時に走らせるLinterタイムアウトDefault->"5s""letg:go_metalinter_deadline="5s"":GoDef使用時に使うコマンド['guru','godef']guru使えないときはgodefに切り替える"Default->'guru"letg:go_def_mode='guru'":GoDeclsはデフォルトで関数と型を表示するDefault->"func,type""型だけにしたいときは"func"だけを指定"letg:go_decls_includes="func,type""カーソル上のワードに対して:GoInfo実行letg:go_auto_type_info=1":GoInfo更新時間Default->800autocmdFileTypegosetupdatetime=100"または:GoInfoのキーバインドを設定"autocmdFileTypegonmap<Leader>i<Plug>(go-info)"同じIDをカーソルがワードに移動するごとにハイライトDefault->0"letg:go_auto_sameids=1"または:GoSameIdsToggleのキーバインドを設定autocmdFileTypegonmap<Leader>s:GoSameIdsToggle<CR>":GoPlayでページをブラウザに読み込まないDefault->1letg:go_play_open_browser=0"===Others==="GoInstallBinaries:vim-goに必要なツールのインストール(gogetがバックグラウンドで動いて大変時間がかかる)"GoUpdateBinaries:GoInstallBinariesで落としたツールのアップデート"GoImport:importパスの追加"GoImportAs:importパスの追加(パッケージ名変更)"GoDrop:importパスの削除"GoDef:ctagsジャンプと同じ(ショートカットキー<C-]>)"GoDecls:gtagsジャンプと同じ(ファイル内のみ対象)ctrlPやFZFと連携"GoDeclsdir:gtagsジャンプと同じ(ディレクトリ内の全ファイル対象)"GoReferrers:gtagsジャンプと似たようなもん?GoDeclsと違ってロケーションリストに表示"GoDescribe:フィールドの定義、メソッドの組とURL構造体のフィールドが表示される"GoImplements:型が実装しているインターフェースをロケーションリストに表示"GoWhicherrs:モードはエラーの型の値に現れうる可能な定数の組、グローバル変数、そして具象型を報告"GoCallees:関数を呼び出す可能性のあるターゲットを表示"GoCallstack:選択部分を含む関数へのコールグラフの根本からの任意のパスを表示"GoChannelPeers:チャンネルの送信先/受信先を表示"GoRename:GOPATH以下にある全てのパッケージを検索してその識別子に依存している全ての識別子をリネーム"GoFreevars:どれだけ多くの変数に依存しているかを見る"GoGenarate:コード生成"GoImpl:インターフェースを実装するメソッドスタブの生成"GoPlay:コードをGoPlaygroundに公開する(リンクはバッファかクリップボードにコピーされる)'''[[plugins]]# go completionrepo='zchee/deoplete-go'build='make'on_ft='go'depends=['deoplete.nvim']hook_source='''letg:deoplete#sources#go#gocode_binary=$GOPATH.'/bin/gocode''''

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>