前言

使用putty + vim + tmux, 对于大型项目的(比如20w+文件)c/cpp文件一直不能找到好的配色方式, 稍微中意的有TagHighlight,vim-cpp-enhanced-highlight。 前者对大型项目太鸡肋,后者配色是通过正则匹配,样式受限, 直到看到color_coded。这货的理念还是比较先进的,通过libclang.so的编译功能来识别c/cpp文件中的标识符,然后针对不同的标识符进行着色。

vim中使用color_coded为c/cpp文件配色

一 前置条件:

  1. 编译器需要支持C++14
  2. 需要动态的lua库。

二 准备工作:

编译lua的动态链接库:
下面以macox下为例子:
1)修改lua-5.3.5根目录下的Makefile:

-INSTALL_TOP= /usr/local
+INSTALL_TOP= /Users/liaozhicheng/Install/lua5.3.5
-TO_LIB= liblua.a
+TO_LIB= liblua.a liblua.dylib

2)修改修改lua-5.3.5根目录下的src目录的Makefile

 ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
+ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)ALL_A= $(LUA_A)
+LUA_SO= liblua.dylib# Targets start here.default: $(PLAT)
@@ -59,6 +60,9 @@ $(LUA_A): $(BASE_O)$(AR) $@ $(BASE_O)$(RANLIB) $@+$(LUA_SO): $(CORE_O) $(LIB_O)
+       $(CC) -o $@ -shared $? -ldl -lm
+$(LUA_T): $(LUA_O) $(LUA_A)$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)

3) 编译

(base) ~/Downloads/lua-5.3.5 >> make macosx
(base) ~/Downloads/lua-5.3.5 >> make install

三 编译color_code:

如果1: lua使用系统的liblua.dylib

(base) ~/.vim/bundle/color_coded/build >> cmake -DDOWNLOAD_CLANG=0  -DCUSTOM_CLANG=1  LLVM_CONFIG=~/Install/llvm9.0.0/bin/llvm-config   -DLLVM_ROOT_DIR=~/Install/llvm9.0.0/  ..
-- The C compiler identification is AppleClang 9.1.0.9020039
-- The CXX compiler identification is AppleClang 9.1.0.9020039
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found 64bit system
-- Updating submodules
-- Performing Test COMPILER_SUPPORTS_CXX14
-- Performing Test COMPILER_SUPPORTS_CXX14 - Success
-- Performing Test COMPILER_SUPPORTS_CXX1Y
-- Performing Test COMPILER_SUPPORTS_CXX1Y - Success
-- Looking for Lua
-- Found Lua
--   Lua include /usr/local/include/lua5.3
--   Lua lib /usr/local/lib/liblua5.3.dylib
-- Found Curses: /usr/lib/libcurses.dylib
-- Found ZLIB: /Users/liaozhicheng/Install/anaconda2/lib/libz.dylib (found version "1.2.11")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found LLVM: /Users/liaozhicheng/Install/llvm9.0.0 (found version "9.0.0")
-- Detected that llvm-config comes from a build-tree, adding more include directories for Clang
-- Found Clang (LLVM version: 9.0.0)
--   Include dirs:       /Users/liaozhicheng/Install/llvm9.0.0/include;/tools/clang/include;/tools/clang/include
--   Clang libraries:    /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangTooling.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangToolingCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangIndex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontendTool.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDriver.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFormat.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangCodeGen.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangParse.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSema.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangEdit.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSerialization.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCheckers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewriteFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewrite.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangARCMigrate.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAST.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDynamicASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangLex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangBasic.a
--   Libclang C library: /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib
-- Generating sources
-- Checking for luajit
-- Configuring done
-- Generating done
CMake Warning:Manually-specified variables were not used by the project:CUSTOM_CLANG
(base) ~/.vim/bundle/color_coded/build >> make -j 4
Scanning dependencies of target color_coded_track_api
Scanning dependencies of target color_coded_boost
Tracking API changes ...
[  0%] Built target color_coded_track_api
[  7%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/codecvt_error_category.cpp.o
[ 15%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/operations.cpp.o
[ 23%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path.cpp.o
[ 30%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path_traits.cpp.o
[ 38%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/portability.cpp.o
[ 46%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/unique_path.cpp.o
[ 53%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/utf8_codecvt_facet.cpp.o
[ 61%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/system/src/error_code.cpp.o
[ 69%] Linking CXX static library libcolor_coded_boost.a
[ 69%] Built target color_coded_boost
Scanning dependencies of target color_coded
Scanning dependencies of target color_coded_config_test
[ 76%] Building CXX object CMakeFiles/color_coded.dir/src/main.cpp.o
[ 84%] Building CXX object CMakeFiles/color_coded_config_test.dir/test/src/config/main.cpp.o
[ 92%] Linking CXX shared library color_coded.so
[100%] Linking CXX executable color_coded_config_test
[100%] Built target color_coded_config_test
[100%] Built target color_coded
(base) ~/.vim/bundle/color_coded/build >>
(base) ~/.vim/bundle/color_coded/build >>
(base) ~/.vim/bundle/color_coded/build >> make install
[ 69%] Built target color_coded_boost
[ 84%] Built target color_coded_config_test
Tracking API changes ...
[ 84%] Built target color_coded_track_api
[100%] Built target color_coded
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /Users/liaozhicheng/.vim/bundle/color_coded/color_coded.so

如果2: 使用自定义lua动态库
方式1:

(base) ~/.vim/bundle/color_coded/build >> cmake  -DDOWNLOAD_CLANG=0  -DCUSTOM_CLANG=1  -DLUA_INCLUDE_DIR=~/Install/lua5.3.5/include/ -DLUA_LIBRARY=~/Install/lua5.3.5/lib/liblua.dylib  -DLLVM_CONFIG=~/Install/llvm9.0.0/bin/llvm-config   -DLLVM_ROOT_DIR=~/Install/llvm9.0.0/  ..
-- The C compiler identification is AppleClang 9.1.0.9020039
-- The CXX compiler identification is AppleClang 9.1.0.9020039
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found 64bit system
-- Updating submodules
-- Performing Test COMPILER_SUPPORTS_CXX14
-- Performing Test COMPILER_SUPPORTS_CXX14 - Success
-- Performing Test COMPILER_SUPPORTS_CXX1Y
-- Performing Test COMPILER_SUPPORTS_CXX1Y - Success
-- Looking for Lua
-- Found Lua
--   Lua include /Users/liaozhicheng/Install/lua5.3.5/include
--   Lua lib /Users/liaozhicheng/Install/lua5.3.5/lib/liblua.dylib
-- Found Curses: /usr/lib/libcurses.dylib
-- Found ZLIB: /Users/liaozhicheng/Install/anaconda2/lib/libz.dylib (found version "1.2.11")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found LLVM: /Users/liaozhicheng/Install/llvm9.0.0 (found version "9.0.0")
-- Detected that llvm-config comes from a build-tree, adding more include directories for Clang
-- Found Clang (LLVM version: 9.0.0)
--   Include dirs:       /Users/liaozhicheng/Install/llvm9.0.0/include;/tools/clang/include;/tools/clang/include
--   Clang libraries:    /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangTooling.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangToolingCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangIndex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontendTool.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDriver.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFormat.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangCodeGen.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangParse.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSema.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangEdit.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSerialization.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCheckers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewriteFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewrite.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangARCMigrate.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAST.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDynamicASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangLex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangBasic.a
--   Libclang C library: /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib
-- Generating sources
-- Checking for luajit
-- Configuring done
-- Generating done
CMake Warning:Manually-specified variables were not used by the project:CUSTOM_CLANG-- Build files have been written to: /Users/liaozhicheng/.vim/bundle/color_coded/build
(base) ~/.vim/bundle/color_coded/build >>
(base) ~/.vim/bundle/color_coded/build >>
(base) ~/.vim/bundle/color_coded/build >> make
Scanning dependencies of target color_coded_boost
[  7%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/codecvt_error_category.cpp.o
[ 15%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/operations.cpp.o
[ 23%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path.cpp.o
[ 30%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path_traits.cpp.o
[ 38%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/portability.cpp.o
[ 46%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/unique_path.cpp.o
[ 53%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/utf8_codecvt_facet.cpp.o
[ 61%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/system/src/error_code.cpp.o
[ 69%] Linking CXX static library libcolor_coded_boost.a
[ 69%] Built target color_coded_boost
Scanning dependencies of target color_coded_config_test
[ 76%] Building CXX object CMakeFiles/color_coded_config_test.dir/test/src/config/main.cpp.o
[ 84%] Linking CXX executable color_coded_config_test
[ 84%] Built target color_coded_config_test
Scanning dependencies of target color_coded_track_api
Tracking API changes ...
[ 84%] Built target color_coded_track_api
Scanning dependencies of target color_coded
[ 92%] Building CXX object CMakeFiles/color_coded.dir/src/main.cpp.o
[100%] Linking CXX shared library color_coded.so
[100%] Built target color_coded
(base) ~/.vim/bundle/color_coded/build >> make install
[ 69%] Built target color_coded_boost
[ 84%] Built target color_coded_config_test
Tracking API changes ...
[ 84%] Built target color_coded_track_api
[100%] Built target color_coded
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /Users/liaozhicheng/.vim/bundle/color_coded/color_coded.so

方式2:
step1: 修改cmake/FindLua.cmake文件,加入lua动态库文件搜索路径,可以有两种方法:

方法1: 在findpath 和 findlibrary的HINTS中加入lua的include 和lib路径.

find_path(LUA_INCLUDE_DIR lua.hHINTS
+    /Users/liaozhicheng/Install/lua5.3.5/ENV LUA_DIRPATH_SUFFIXES ${_lua_include_subdirs} include/lua includePATHS
@@ -101,6 +100,7 @@ unset(_lua_include_subdirs)find_library(LUA_LIBRARYNAMES ${_lua_library_names} luaHINTS
+    /Users/liaozhicheng/Install/lua5.3.5/ENV LUA_DIRPATH_SUFFIXES libPATHS

方法2: 加入CMAKEPREFIXPATH设置:

+++ b/cmake/FindLua.cmake
@@ -69,6 +69,8 @@ unset(_lua_library_names)# this is a function only to have all the variables inside go away automaticallyset(LUA_MINOR_VERSIONS 3 2 1)+set(CMAKE_PREFIX_PATH "/Users/liaozhicheng/Install/lua5.3.5")step2: 将编译生成的动态库liblua.dylib重名为liblua5.3.dylib 或者 liblua-5.3.dylib, 原因见color_coded/cmake/FindLua.cmake:
(base) ~/.vim/bundle/color_coded/build >> mv ~/Install/lua5.3.5/lib/liblua.dylib ~/Install/lua5.3.5/lib/liblua5.3.dylib
step3: 编译
(base) ~/.vim/bundle/color_coded/build >>  cmake . -DDOWNLOAD_CLANG=0  -DCUSTOM_CLANG=1  LLVM_CONFIG=~/Install/llvm9.0.0/bin/llvm-config   -DLLVM_ROOT_DIR=~/Install/llvm9.0.0/  ..
-- The C compiler identification is AppleClang 9.1.0.9020039
-- The CXX compiler identification is AppleClang 9.1.0.9020039
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found 64bit system
-- Updating submodules
-- Performing Test COMPILER_SUPPORTS_CXX14
-- Performing Test COMPILER_SUPPORTS_CXX14 - Success
-- Performing Test COMPILER_SUPPORTS_CXX1Y
-- Performing Test COMPILER_SUPPORTS_CXX1Y - Success
-- Looking for Lua
-- Found Lua
--   Lua include /Users/liaozhicheng/Install/lua5.3.5/include
--   Lua lib /Users/liaozhicheng/Install/lua5.3.5/lib/liblua5.3.dylib
-- Found Curses: /usr/lib/libcurses.dylib
-- Found ZLIB: /Users/liaozhicheng/Install/anaconda2/lib/libz.dylib (found version "1.2.11")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found LLVM: /Users/liaozhicheng/Install/llvm9.0.0 (found version "9.0.0")
-- Detected that llvm-config comes from a build-tree, adding more include directories for Clang
-- Found Clang (LLVM version: 9.0.0)
--   Include dirs:       /Users/liaozhicheng/Install/llvm9.0.0/include;/tools/clang/include;/tools/clang/include
--   Clang libraries:    /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangTooling.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangToolingCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangIndex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFrontendTool.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDriver.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangFormat.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangCodeGen.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangParse.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSema.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangEdit.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangSerialization.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCheckers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangStaticAnalyzerCore.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewriteFrontend.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangRewrite.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAnalysis.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangARCMigrate.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangAST.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangDynamicASTMatchers.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangLex.a;/Users/liaozhicheng/Install/llvm9.0.0/lib/libclangBasic.a
--   Libclang C library: /Users/liaozhicheng/Install/llvm9.0.0/lib/libclang.dylib
-- Generating sources
-- Checking for luajit
-- Configuring done
-- Generating done
CMake Warning:Manually-specified variables were not used by the project:CUSTOM_CLANG-- Build files have been written to: /Users/liaozhicheng/.vim/bundle/color_coded/build
(base) ~/.vim/bundle/color_coded/build >> make
Scanning dependencies of target color_coded_boost
[  7%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/codecvt_error_category.cpp.o
[ 15%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/operations.cpp.o
[ 23%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path.cpp.o
[ 30%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/path_traits.cpp.o
[ 38%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/portability.cpp.o
[ 46%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/unique_path.cpp.o
[ 53%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/filesystem/src/utf8_codecvt_facet.cpp.o
[ 61%] Building CXX object CMakeFiles/color_coded_boost.dir/lib/boost/system/src/error_code.cpp.o
[ 69%] Linking CXX static library libcolor_coded_boost.a
[ 69%] Built target color_coded_boost
Scanning dependencies of target color_coded_config_test
[ 76%] Building CXX object CMakeFiles/color_coded_config_test.dir/test/src/config/main.cpp.o
[ 84%] Linking CXX executable color_coded_config_test
[ 84%] Built target color_coded_config_test
Scanning dependencies of target color_coded_track_api
Tracking API changes ...
[ 84%] Built target color_coded_track_api
Scanning dependencies of target color_coded
[ 92%] Building CXX object CMakeFiles/color_coded.dir/src/main.cpp.o
[100%] Linking CXX shared library color_coded.so
[100%] Built target color_coded
(base) ~/.vim/bundle/color_coded/build >> make install
[ 69%] Built target color_coded_boost
[ 84%] Built target color_coded_config_test
Tracking API changes ...
[ 84%] Built target color_coded_track_api
[100%] Built target color_coded
Install the project...
-- Install configuration: "RELEASE"
-- Installing: /Users/liaozhicheng/.vim/bundle/color_coded/color_coded.so

四 使用color_coded

结论:如果发现颜色没有效果,一定要先检查是否正确配置了.colorcoded.

在安装过程中发现,colorcoded在 ~/.vim/bundle下面,通过scriptnames可以查看到已经加载,但是测试发现对于c/cpp文件着色笔不明显。 检查配置和CCerror都是正常。最后通过跟踪colorcoded的源码发现: colorcoded/include/vim/highlight.hpp中的highlight_group中的:

auto const mapped(clang::token::map_token_kind(kind, cursor_kind,cursor_type));
if(mapped.size())
{//std::cout << spell.c_str() << " : " << mapped << std::endl;emplace_back(mapped, line, column, spell.c_str());
}
else
{ /* std::cout << "unmapped: " << spell.c_str() << std::endl; */ }

mapped并没有将spell.cstr与kind映射一起来,导致colorcoded.vim不能识别colorcoded/after/syntax/colorcoded.vim中的 Member、Variable、Namespace、EnumConstant。

进一步跟踪colorcoded/include/core.hpp -> queue中找到原因: .colorcoded这个配置文件么有加入正确的头文件,下面是通过ycm-Generator生成color_coded配置文件

(base) ~/.vim/bundle/color_coded >> more ~/Workspace/global-6.6.3/.color_coded
-x
c
-DBINDIR="/usr/local/bin"
-DDATADIR="/usr/local/share"
-DHAVE_CONFIG_H
-DLIBDIR="/usr/local/lib"
-DLID="no"
-DLOCALSTATEDIR="/usr/local/var"
-DLTDL
-DLTDLOPEN=libltdlc
-DLT_CONFIG_H=<config.h>
-DPIC
-DSYSCONFDIR="/usr/local/etc"
-DUSE_EXTRA_FIELDS
-I.
-I..
-I../libdb
-I../libglibc
-I../libparser
-I../libutil
-I./libltdl
-Ilibltdl

vim中使用color_coded为c/cpp文件配色相关推荐

  1. linux中vim如何查找字符串,[ubuntu] 在vim中查找指定字符串和指定文件

    推荐文章 更新源的方法 提前保存一下原来源 sudo cp sources.list sources.list.bak 换源命令: sudo gedit /etc/apt/sources.list 或 ...

  2. 将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中

    将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中 写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由 ...

  3. 在VS Studio中管理多个cpp文件或项目

    有时我们需要保存多个cpp文件,然后在使用时希望运行其中的一个,但是一个c++项目中只能有一个main函数,所以不能有多份cpp文件存在. 下面两个方法可以帮助我们更好地处理这种情况 1.同一个项目中 ...

  4. 以普通用户启动的Vim如何保存需要root权限的文件

    在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'readonly' option is set (add ! to ...

  5. .h文件和.cpp文件组织结构

    1.包含关系: .h文件一般包含在.cpp文件中,.h文件中多为变量和类的声明,而.cpp文件才是变量和类中函数的真正定义. 但是#include <iostream> 这个文件既不是.c ...

  6. c语言中.h文件和.cpp文件解析

    理论上来说cpp文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体实现,任何一个cpp文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以cpp文件为 ...

  7. window+cmd+.cpp(window系统命令行运行.cpp文件) + LINK : fatal error LNK1104: cannot open file ‘LIBCMT.lib‘

    在window系统中,命令行运行.cpp文件的步骤(假定已经安装好visual studio 2015): 1. 设置环境变量:C:\Program Files (x86)\Microsoft Vis ...

  8. vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转

    vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官 ...

  9. vim中删除dos格式文件中的^M号的方法以及深度规整文件格式

    在windows平台上开发时, 我们编辑的文件多半是dos格式, 当我们将它们采用xftp或是secureCRT等ssh软件传输到Linux的vim环境下面时, 通常会出现如下令人惨不忍睹的画面: 为 ...

  10. QT解决方案中新建动态链接库工程,且继承于QObject,解决无法生成moc_XXX.cpp文件的问题,解决工程之间的引用问题

    QT解决方案中新建动态链接库工程,且继承于QObject,解决无法生成moc_XXX.cpp文件的问题,解决工程之间的引用问题 参考文章: (1)QT解决方案中新建动态链接库工程,且继承于QObjec ...

最新文章

  1. Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件...
  2. 并不对劲的概率与期望
  3. python3安装opencv
  4. python整数类型提供了4种进制表示_关于整数类型的 4 种进制表示,哪个选项的描述是正确的?_学小易找答案...
  5. 文件上传速度查询方法
  6. div中同时存在文本和数字超过两行出省略号
  7. 深入分析同步工具类之AbstractQueuedSynchronizer
  8. 通过企业账号邀请开发者(不需要支付99刀,在真机上调试)
  9. 【机器学习】(七)马尔可夫链、马尔可夫随机场、条件随机场
  10. ramdump crash工具
  11. PDF怎么转图片?建议收藏这些方法
  12. vim实用技巧总结 [Linux]
  13. 使用阿里云的ip地址查询服务-使用java调用ip地址查询服务
  14. 基于docker一行命令搭建个人博客wordPress
  15. 【Pytorch】torch. bmm()
  16. Andorid显示圆形图片的4种方式
  17. 蓝桥杯 未名湖边的烦恼
  18. pyqt5以及pyqtgraph(pyqt界面设计绘图)
  19. quorum中的BFT
  20. c语言编写天气预报程序,在Deno中构建一个命令行天气预报程序

热门文章

  1. steam无法连接至计算机,详解无法连接至steam网络怎么办
  2. pm2 重启策略(restart strategies)
  3. C++ 职工管理系统
  4. 三款EDA工具,AD、PADS与Allegro的简单介绍
  5. 架构师之路(二)-概念架构
  6. DC工具的基本使用(一)
  7. 信号与系统——抽样信号的傅里叶变换
  8. 2022年下半年(软考高级)信息系统项目管理师报名条件
  9. 2022新轻量级PHP解密在线工具源码V1.2版
  10. 利用IV分析仪测量二极管的伏安特性的测量方法及步骤