vimでc/c++開発環境(a.vim/vim-clang)

はじめに

こんにちは、野村です。

今回は、vimでc/c++を書くのが楽になるプラグイン「a.vim」と「vim-clang」を紹介します。

この環境でしかcやc++を書いたことがないので、他との比較はできないのだけど、少なくとも導入するのとしないのとでは雲泥の差であることは間違いないです。

a.vimの導入

ソースファイル⇔ヘッダファイル間を簡単に行き来できるようにするプラグインです。

↓このページから「a.vim」をダウンロードしてデレクトリ「~/.vim/plugin」に放り込みます。

使い方は、コマンドモードに入って「:A」と打ってEnter。それだけ。

他にも
「:AS」で縦分割で開く
「:AV」で横分割で開く
「:AT」でタブで開く
という芸当ができる。お得です!

vim-clangの導入

c/c++の入力補完をしてくれるプラグインです。

下準備

clangとclang-formatをインストール

管理ユーザになって「clang」と「clang-format」をインストールします(debian系の場合)。

# apt install clang clang-format

deinをダウンロード

deinというのは、vimのプラグインを管理するプラグインです。
配布元は↓ここ

dein.vim - :zap: Dark powered Vim/Neovim plugin manager

一般ユーザに戻り、deinの設置場所を作って、そこにダウンロード。

$ mkdir -p ~/.vim/dein/repos/github.com/Shougo/dein.vim
$ git clone https://github.com/Shougo/dein.vim.git ~/.vim/dein/repos/github.com/Shougo/dein.vim

deinとvim-clangを一気にセットアップ

~/.vimrcにコードを追記

vimの設定ファイル「~/.vimrc」に以下のコードを追記します。
今回はLinuxの場合の例です。Windows、Mac、FreeBSDでは、vimprocの箇所が異なるはず。

"=========
"vim-clang
"=========
" 'Shougo/neocomplete.vim' {{{
let g:neocomplete#enable_at_startup = 1
if !exists('g:neocomplete#force_omni_input_patterns')
        let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_overwrite_completefunc = 1
let g:neocomplete#force_omni_input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
let g:neocomplete#force_omni_input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
"""}}}

" 'justmao945/vim-clang' {{{

" disable auto completion for vim-clanG
let g:clang_auto = 0
let g:clang_complete_auto = 0
let g:clang_auto_select = 0
let g:clang_use_library = 1

" default 'longest' can not work with neocomplete
let g:clang_c_completeopt   = 'menuone'
let g:clang_cpp_completeopt = 'menuone'

let g:clang_exec = 'clang'
let g:clang_format_exec = 'clang-format'

let g:clang_c_options = '-std=c11'
let g:clang_cpp_options = '
  \ -std=c++1z 
  \ -stdlib=libc++ 
  \ -pedantic-errors
  \ '

" }}}

"==========
"dein.vim
"==========
if &compatible
  set nocompatible
endif
set runtimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/.vim/dein'))
call dein#add('Shougo/dein.vim')

call dein#add('Shougo/neocomplete.vim')
call dein#add('Shougo/vimproc.vim', {'build': 'make'})
call dein#add('justmao945/vim-clang')
call dein#add('Shougo/neoinclude.vim')

call dein#end()

インストール

vimを起動してコマンドモードに入り、

:call dein#install()

これでインストール完了!

使い方

とにかく普通にコードを書いてみてください。
コードの候補が出現したら「Ctrl-p」と「Ctrl-n」で選択すればよいのです。

エラーが出る場合

c++のコードを打っていて(あるのに関わらず)「●●●.hがない」のようなエラーが出る場合は、vimrc内の「g:clang_cpp_options」の値にインクルードデレクトリを追加するとするとうまくいく場合があります。

自分の場合、エラーが消えるまでデレクトリを追加したらここまで膨れ上がりました。

let g:clang_cpp_options = '
  \ -std=c++1z 
  \ -stdlib=libc++ 
  \ -pedantic-errors
  \ -I/usr/include/gtk-2.0/
  \ -I/usr/include/gtk-2.0/gdk/
  \ -I/usr/include/glib-2.0/
  \ -I/usr/include/cairo/
  \ -I/usr/include/pango-1.0/
  \ -I/usr/include/gdk-pixbuf-2.0/
  \ -I/usr/include/atk-1.0/
  \ -I/usr/include/freetype2/
  \ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/
  \ -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/
  \ '

これが解決策として正しいのかは不明。

最後に

以上、プラグイン「a.vim」と「vim-clang」を導入してvimでc/c++を書きやすくする方法を紹介しました。

環境が整うとコードを打つのが楽しくなるもんです。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
枕は高いほうがいい。高いほうが本を読みやすいのですよ。なので広めのタオルケットを何重にも折りたたんでその上に枕を載せてその上に頭を載せてたりする。twitterやってます