NeovimでC++の環境を整えてみた

More than 1 year has passed since last update.


はじめに

研究室に配属されて、とうとう逃げ続けてきたC++を書くことになったので勉強がてら環境設定をしていました。

その環境設定の備忘録として記事を書きます。


環境


  • OS: MacOS High Sierra

  • neovim: v0.2.2

Pluginはdeinを使用しています。


インストールするもの

上の2つは補完用

一番下のものはlinterみたいなものです。多分。

僕はセーブ時に自動で修正するようにしています。


インストール


dein_lazy.toml

[[plugins]]

repo = "Shougo/deoplete.nvim"
on_i = 1
on_event = "InsertCharPre"
hook_source = """
let g:deoplete#enable_at_startup = 1
let g:deoplete#auto_complete_delay = 0
let g:deoplete#auto_complete_start_length = 1
let g:deoplete#enable_camel_case = 0
let g:deoplete#enable_ignore_case = 0
let g:deoplete#enable_refresh_always = 0
let g:deoplete#enable_smart_case = 1
let g:deoplete#file#enable_buffer_path = 1
let g:deoplete#max_list = 10000
set completeopt-=preview
"
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif
"""

[[plugins]]
repo = "zchee/deoplete-clang"
on_ft = "cpp"
depends = "deoplete.nvim"
hook_add = """
let g:deoplete#sources#clang#libclang_path='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib'
let g:deoplete#sources#clang#clang_header='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang'
"""

[[plugins]]
repo = "rhysd/vim-clang-format"
on_ft = "cpp"
hook_add = """
function! CPPCodeCleanup()
let l:lines='all'
let g:clang_format_fallback_style = 'Google'
:pyf /usr/local/share/clang/clang-format.py
endfunction
command! CPPCodeCleanup call CPPCodeCleanup()
autocmd BufWrite *.{cpp} :CPPCodeCleanup
"""



Shougo/deoplete.nvim

Shougo/deoplete.nvimは言わずとしれた補完用のプラグインですね。

これはneovim使ってる人だったらだいたい知ってるんじゃないかなと思います。

コメントアウトしているautocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endifdeoplete-clangの使用時にneovimの上にプレビューウィンドウが出てくるんですが、それを補完終了時に閉じてくれるというものです。

僕はそもそも、プレビューウィンドウいらないなと思って、最初から出ないようにしています。(set completeopt-=preview)

特に気にならないと言う人は無くてもいいと思います。


zchee/deoplete-clang

これはdeoplete.nvimのC, C++用の拡張みたいなものです。

使用するにはClang等のパスを通す必要があります。

パスについては、僕はXCodeのものを使用しました。

適宜パスは変えてもらえるといいかもです。


rhysd/vim-clang-format

僕は保存時にC++のフォーマットを整理するようにしています。

調べてみたら、コード規約は色々あるみたい。

僕は特にこだわりが無いのでGoogleを使っています。


最後に

他に調べてみたら、thinca/vim-quickrunを使って自動コンパイルとかも良さげだった。

これはまた必要になったら追加してみようかな。

一応これがスクショです。

deopleteで[clang]が出てきていたら、deoplete-clangの導入は成功していると思います。

スクリーンショット 2018-04-23 8.31.08.png