Giter Site home page Giter Site logo

cpp-vimrc's Introduction

cpp-vimrc

vimrc of C++er.

Introduction

C++er 用のサンプル vimrc です。 いくつかのプラグインの設定などが記述されています。 単体で使用することも可能ですし、改変して使用したり、一部を切り取って使用するなり好きにして下さい。

Guideline

  • C++er 向けの参考になる/汎用的な vimrc の提示が目的
  • あくまでも C++er 向けの vimrc を目指しているので C++ に直接関係のない設定は記述しない方向
  • この vimrc を元に自分で設定などを追加して使用してもらう
  • ただし、単体でも使用可能
  • なるべく余計なコードや設定は行わず簡素な vimrc を目指す
  • 需要があるのであればそのその限りではない
  • プラグインの管理は neobundle.vim を使用

Requirement

  • git
  • vimproc.vim
  • Windows 環境であれば自前でビルドする必要がある
  • Windows 以外であれば neobundle.vim が自動的にビルドを行う
  • Kaoriya 版 Vim であれば vimproc.vim が同梱されているので自前で用意する必要はない

Usage

  • 1.この vimrc を読み込む、または自分の vimrc に組み込む
  • 2.初回起動時に neobundle.vim がインストールされていなければインストールが行われる
  • 2.a.neobundle.vim がインストールされるディレクトリは $VIM_NEOBUNDLE_PLUGIN_DIR
  • 2.b.neobundle.vim のインストール後に Vim を再起動する必要がある
  • 3.インストールされていないプラグインのインストールが行われる
  • 3.a.プラグインがインストールされるディレクトリは $VIM_NEOBUNDLE_PLUGIN_DIR
  • 3.b.プラグインのインストールには時間がかかるので注意
  • 4.プラグインのインストールが終了したら利用する事が可能
  • 5.以降、プラグインを更新する場合は :NeoBundleUpdate を使用する

User setting

環境変数

環境変数 説明 デフォルト値
$VIM_NEOBUNDLE_PLUGIN_DIR neobundle.vim のインストールディレクトリ "~/.vim/bundle/"
$VIM_CPP_STDLIB C++ の標準ライブラリへのパス ""
$VIM_CPP_INCLUDE_DIR C++ のインクルードディレクトリ ""

フラグ

1 が設定されている場合は有効になります。 これは本 vimrc が読み込まれる前に設定しておく必要があります。

変数名 説明 デフォルト値

コールバック関数

関数名 説明
CppVimrcOnFileType_cpp() filetype=cpp 時に呼ばれる
CppVimrcOnPrePlugin() プラグインの設定前に呼ばれる
CppVimrcOnFinish() 読み込みが終了して一番最後に呼ばれる

Example

" neobundle.vim がインストールするプラグインへのパス
" neobundle.vim もこのディレクトリにインストールが行われる
" default : ""
let $VIM_NEOBUNDLE_PLUGIN_DIR = "~/.vim/bundle"

" C++ の標準ライブラリへのパス
" $VIM_CPP_INCLUDE_DIR とは別に設定しておく
" default : ""
let $VIM_CPP_STDLIB = "C:/MinGW/lib/gcc/mingw32/4.6.2/include/c++"

" C++ のインクルードディレクトリ
" 複数の場合は , 区切りで設定
" default : ""
let $VIM_CPP_INCLUDE_DIR = "D:/home/cpp/boost/boost_1_55_0,D:/home/cpp/Sprout"


" filetype=cpp の設定はこの関数内で行う
" set ではなくて setlocal を使用する
function! CppVimrcOnFileType_cpp()
	"タブ文字の長さ
	setlocal tabstop=4
	setlocal shiftwidth=4

	" 空白文字ではなくてタブ文字を使用する
	setlocal noexpandtab

	" 最後に定義された include 箇所へ移動してを挿入モードへ
	nnoremap <buffer><silent> <Space>ii :execute "?".&include<CR> :noh<CR> o
endfunction


" 一番最後に呼ばれる関数
" 設定などを上書きしたい場合に使用する
function! FinishCppVimrc()
	NeoBundleDisable "neocomplete.vim"
endfunction


" 以降に本 vimrc の設定を記述する
" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Default setting

Vim 全体

  • 自動的に neobundle.vim のgit clone を行う
  • 自動補完
  • バッファ内のワード
  • シンタックス
  • ファイル名
  • Wandbox でコードの実行
  • wandbox.vim
  • アウトラインの出力
  • :Unite outline
  • バッファのコードを実行
  • :QuickRun or <leader>r
  • quickrun 時に実行が成功すればバッファへ、失敗すれば quickfix へと結果を出力する
  • その為、出力はバッファリングされます
  • quickrun の出力バッファのウィンドウは botright で開く
  • quickfix のエラー箇所のハイライト
  • 保存時にシンタックスチェックを行う

filetype=cpp のみ

  • 'matchpairs' に <> を追加
  • BOOST_PP_ から始まる単語のハイライト
  • marching.vim を使用した高度なコード補完
  • include 時のヘッダーファイル名の補完
  • quickrun 時に 'path' のディレクトリをインクルードオプションとして設定

キーマッピング

モード キー 説明
nv <Leader>c コメントアウトのトグル
nv <Leader>C コメントアウトを解除
nx <Space>m カーソル下のワードのハイライトのトグル
nx <Space>M <Space>m で設定した全てのハイライトの解除
n <Space>ns スニペットファイルの編集
is <Tab>

Install plugins

Screencapture

caw.vim

caw

unite-outline

unite_outline

unite-file_include

file_include

neocomplete.vim

file

syntax

file_include

marching.vim

marching

neosnippet.vim

neosnippet

quickrun.vim

成功

success

失敗

error

License

NYSL

NYSL English

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.