モーダル入力に夢中になってから、最近、TextmateからVim環境をセットアップしました。
ただし、Vimでは構文の強調表示はそれほど美しくないようです。私はC++でコーディングしますが、関数呼び出しとクラス名は強調表示できないため、コードは読みにくくなります。カラースキームを少し試しましたが、「クラス名」または「関数名」に対応するフィールドが見つかりませんでした。
以下の図では、_DroughtLayer::
_および*.size()
がMacVimの右側で強調表示されていないことに注意してください。
(ソース: ivzhao.com )
これを解決する方法はありますか?私は視覚に敏感な人間なので、本当にイライラさせられます。
興味深いことに、VIMの構文強調表示機能は、識別子または関数名への構文の適用をサポートしていません-少なくともCおよびC++の構文強調表示機能はサポートしていません。
:hi Function guifg=red
または
:hi Identifier guifg=red
これらに色は付けません。私は、これらの言語のキーワードと定数以上のものではないようです。
ここで、誰かがメソッド名をサポートするためにcpp構文ファイルを拡張し始めました。それは私が推測するスタートです。 http://vim.wikia.com/wiki/Highlighting_of_method_names_in_the_definition
Vimを使い始めたとき、これと同じ問題がありました。解決策は簡単です。vimで使用されるc構文ファイルを編集するだけで、次のようになります。
CまたはC++ファイルの編集を開始すると、vimは次の場所にあるデフォルトのc構文ファイルを読み取ります。
$VIMRUNTIME/syntax/c.vim
($ VIMRUNTIMEはvimがインストールされている場所です。vimを開いてコマンド ":echo $ VIMRUNTIME"を使用すると、デフォルト値を確認できます)。
このファイルを単純に上書きするか、次の場所にカスタムC構文ファイル(デフォルトの代わりにvimによってロードされる)を作成できます。
$HOME/.vim/syntax/c.vim (for UNIX)
$HOME/vimfiles/syntax/c.vim (for PC or OS/2)
(私はMacを使用したことがないので、どれがあなたのために働くのかわからない。詳細については、vimヘルプの「:help vimfiles」を参照してください)
楽しい部分です。デフォルトの「$ VIMRUNTIME/syntax/c.vim」ファイルをvimfilesディレクトリ(UNIXの場合は「$ HOME/.vim/syntax/c.vim」)にコピーし、次の行を追加して編集します。
" Highlight Class and Function names syn match cCustomParen "(" contains=cParen,cCppParen syn match cCustomFunc "\w\+\s*(" contains=cCustomParen syn match cCustomScope "::" syn match cCustomClass "\w\+\s*::" contains=cCustomScope hi def link cCustomFunc Function hi def link cCustomClass Function
それでおしまい!これで、関数とクラス名が「関数」強調表示で定義された色で強調表示されます(「:hi関数」)。色をカスタマイズする場合は、上の最後の2行を次のように変更できます。
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def cCustomClass gui=reverse guifg=#00FF00
または、C構文ファイルをそのままにして、vimrcファイルで色を定義できます( ":help vimrc"):
hi cCustomFunc gui=bold guifg=yellowgreen
hi cCustomClass gui=reverse guifg=#00FF00
(「def」キーワードがないことに注意してください。詳細については、「:help highlight-default」に進んでください)。 「:hi」コマンドで使用可能なパラメーターについては、「:help:highlight」を参照してください。
このリンクでVim 7.2の完全なc.vimファイルを見つけることができます(注:変更されていないVimバージョン7.2がある場合にのみ使用してください)。
そして必須のスクリーンショット:
これはここでの私の最初の投稿であり、私は観察方法を知りませんでした、エドゥアルドの答えは「(」と「{」を未加工に見せ、バグ構文をフォールドインします。これを修正するために少し変更しました。
syn match cCustomParen "?=(" contains=cParen,cCppParen
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
syn match cCustomScope "::"
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
hi def cCustomFunc gui=bold guifg=yellowgreen
hi def link cCustomClass Function
1つの解決策は、ビルドされたctagsデータベースを使用することです。 ctags ユーティリティで作成してください。次に、「tags」変数を設定し、次を
~/.vim/after/syntax/c.vim
function! s:highlight()
let list = taglist('.*')
for item in list
let kind = item.kind
if kind == 'f' || kind == 'c'
let name = item.name
exec 'syntax keyword Identifier '.name
endif
endfor
endfunction
call s:highlight()
非常に大きなctagsデータベースでは、これが非常に遅くなる可能性があることに注意してください。
また、vim.orgには one solution がありますが、私はこれを試しませんでした。うまくいくかどうか教えてください。
編集:color_codedはあなたにとって重すぎるかもしれません。 try octol/vim-cpp-enhanced-highlight C++ 11/14をサポートし、@ Eduardoの答えを統合します。
セマンティックベースの蛍光ペン:
お勧めします jeaye/color_coded 、libclangベースの強調表示のためのvimプラグイン
ごめんなさい、stackoverflowが初めてなので、画像を投稿するのに十分な評判がありません。試してみたい場合は、効果を確認してください。 :)
長所:
python2.7
でコンパイルされたvimが必要です。ただし、color_codedはC++で記述されており、luaバインディング-> C++を提供します。短所:
まだ開発中ですが、ますます注目を集めています。
セルゲイ、最初の行を
syn match cCustomParen "(" contains=cParen,cCppParen
に
syn match cCustomParen "(" contains=cParen contains=cCppParen
私のためにそれを修正するようです。
このプラグインを使用してみてください http://www.vim.org/scripts/script.php?script_id=2646 すべてのctagが非常に効率的に強調表示します
taghighlight
プラグインをお勧めします。Webサイトの here をクリックします。
Clighter
プラグインも考慮できます。
plugin for c-family semantic source code highlighting, based on Clang
ただし、かなり最近のバージョンとソフトウェアが必要です:vim 7.4.330 +python2
およびlibclang
。