참고: 이 프로젝트는 보관되었으며 덜 투박하고 리소스 집약도가 낮은 LSP 기반 강조 표시로 대체되었습니다. color_coded는 의심할 바 없이 이 공간을 개척했으며 그 이후로 편집자들에게 색칠된 모든 토큰에 감사드립니다.
color_coded는 libclang을 사용하여 C++, C 및 Objective C에 대한 실시간(빠른) 태그 없는 코드 강조 표시를 제공하는 vim 플러그인입니다.
color_coded 전 | color_coded 후 |
---|---|
OS X에 color_coded를 설치하기 전에 다음 내용을 읽어보세요. (최신 버전이라도) OS X와 함께 제공되는 vim은 color_coded를 지원할 만큼 새롭지 않습니다. 또한 homebrew의 기본 macvim에는 lua가 활성화되어 있지 않습니다. OS X에 유효한 macvim이 설치되어 있는지 확인하려면 다음을 수행하십시오:
brew update
brew install macvim --with-lua --with-override-system-vim
brew linkapps macvim
brew install xz cmake
# Spawn a new shell to use the new system vim
적절한 강조 표시를 얻으려면 적절한 시스템 헤더를 제공하는 Xcode 명령줄 도구도 필요합니다.
xcode-select --install
먼저 필요한 모든 종속성을 설치합니다.
[sudo] apt-get install build-essential libclang-3.9-dev libncurses-dev libz-dev cmake xz-utils libpthread-workqueue-dev libtinfo-5
Lua의 경우 vim 버전이 컴파일된 버전을 설치해야 합니다.
vim --version | grep lua
버전 번호 -llua5.x
를 찾아 이를 사용하여 올바른 버전을 설치하십시오.
[sudo] apt-get install liblua5.x-dev lua5.x
또한 GCC 4.9(또는 그 이상)이 설치되어 있는지 확인해야 합니다. 그렇지 않은 경우 다음을 시도해 볼 수 있습니다(Ubuntu 14.04에서 테스트됨).
# Install GCC 4.9
[sudo] add-apt-repository ppa:ubuntu-toolchain-r/test
[sudo] apt-get update
[sudo] apt-get install g++-4.9
# Prefer 4.9 to other versions
[sudo] update-alternatives --remove-all g++
[sudo] update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50
(FreeBSD 11.1에서 테스트됨)
$ [sudo] pkg install llvm40 cmake
$ cd ~ /.vim/bundle/color_coded
$ mkdir build && cd build
$ cmake -DCUSTOM_CLANG=1 -DLLVM_ROOT_DIR=/usr/local/llvm40 ..
$ make && make install
설치는 vundle을 사용하여 테스트되었지만 병원체와도 호환되어야 합니다. vundle을 사용하여 설치하려면( ~/.vimrc
에 행을 추가하고, vim을 다시 시작하고 :PluginInstall
실행):
Plugin ' jeaye/color_coded '
NeoBundle을 사용한 설치는 플러그인 자동 빌드 및 지연 로딩을 지원합니다.
NeoBundleLazy ' jeaye/color_coded ' , {
' build ' : {
' unix ' : ' rm -f CMakeCache.txt && cmake . && make && make install ' ,
},
' autoload ' : { ' filetypes ' : [ ' c ' , ' cpp ' , ' objc ' , ' objcpp ' ] },
' build_commands ' : [ ' cmake ' , ' make ' ]
}
color_coded에는 컴파일된 구성 요소가 있으므로 설치 및 업데이트 시 수동으로 컴파일해야 합니다(vim 패키지 관리자가 대신 수행하지 않는 한). 컴파일은 vundle의 사용을 가정하여 다음과 같이 작동합니다(제대로 make
수 있는지 확인하려면 종속성 섹션을 참조하세요).
cd ~ /.vim/bundle/color_coded
rm -f CMakeCache.txt
mkdir build && cd build
cmake ..
make && make install # Compiling with GCC is preferred, ironically
# Clang works on OS X, but has mixed success on Linux and the BSDs
# Cleanup afterward; frees several hundred megabytes
make clean && make clean_clang
다양한 호환성 이유로 color_coded는 clang의 알려진 버전을 다운로드하려고 시도합니다. 이로 인해 구성 프로세스에 시간이 추가될 수 있지만 여러 플랫폼에서 더 많은 안정성을 제공합니다. 이를 방지하는 것은 공식적으로 지원되지 않지만 여기에 문서화되어 있습니다.
또 다른 참고 사항: color_coded는 luajit을 안정적으로 지원하지 않습니다. 더 많은 정보를 제공하자면 luajit은 공유 라이브러리에 포함되는 것을 안정적으로 지원하지 않습니다.
color_coded가 설치되고 컴파일되면 다음에 vim을 시작할 때 자동으로 작동하기 시작합니다. color_coded가 코드 컴파일 방법을 알기 위해서는 필수 컴파일러 옵션을 설명하는 파일을 생성해야 할 수도 있습니다. color_coded는 정상적인 기본값을 가정하고 즉시 사용할 수 있도록 시도합니다.
즉, 어떤 중요한 경우에도 프로젝트에 .color_coded
파일을 제공해야 할 필요가 있다는 것을 알게 될 것입니다. 각 파일에 대해 color_coded는 파일 디렉토리에서 .color_coded
파일 또는 .color_coded_foo
파일을 찾는 파일 시스템의 루트까지 검색합니다(여기서 foo
는 파일 형식입니다. 즉 c
, cpp
등). 이를 통해 예를 들어 홈 디렉토리에 하나를 두고 각 프로젝트 디렉토리에 하나를 가질 수 있습니다. 프로젝트 디렉터리에 하나를 지정하지 않으면 홈 디렉터리에 있는 것이 사용됩니다. 또한 다양한 파일 유형(C, C++ 등)에 대해 다양한 플래그를 제공하고 다른 플래그를 사용하여 하위 프로젝트에서 작업할 수도 있습니다. 다시 말하지만, 그러한 파일이 발견되지 않으면 정상적인 기본값이 적용됩니다.
color_coded는 번역 단위에 오류가 있더라도 코드를 강조 표시하기 위해 최선을 다합니다. 이를 통해 color_coded가 프로젝트에 대한 모든 것을 알지 못할 때 입력하는 동안 더 나은 강조 표시가 가능하고 유효한 코드를 강조 표시할 수 있습니다.
.color_coded
또는 .color_coded_foo
파일의 내용은 단순히 줄로 구분된 컴파일러 옵션 목록입니다. 예를 들어, color_coded에 대한 .color_coded
파일은 다음과 같습니다(color_coded는 C 또는 C++ 파일을 감지할 때 기본적으로 나머지를 넣습니다).
-Iinclude
-Ilib/jest/include
.color_coded
파일은 YCM-Generator를 사용하여 자동으로 생성될 수 있습니다.
참고: 단순성을 위해 .color_coded
파일에는 다른 데이터가 허용되지 않습니다. 즉, 주석이 지원되지 않습니다.
g:color_coded_enabled
이 옵션은 color_coded가 작동할지 여부를 제어합니다. :CCtoggle
명령을 호출하면 이 옵션이 수정되어 결과를 얻을 수 있습니다. color_coded를 전체적으로 비활성화하려면 ~/.vimrc
에서 이 값을 0
으로 지정할 수도 있습니다.
기본:
let g: color_coded_enabled = 1
g:color_coded_filetypes
이 옵션은 color_coded가 컴파일하려고 시도하는 파일 형식을 제어합니다.
기본:
let g: color_coded_filetypes = [ ' c ' , ' cpp ' , ' objc ' ]
color_coded가 추가하는 새로운 강조 표시 그룹이 많이 있습니다. 이는 libclang의 내부 구조를 최대한 가깝게 따르도록 설계되었습니다. 여러 가지를 하나로 묶기 위해 더 포괄적인 변경이 가능한 일부 래퍼 그룹이 생성되었습니다. 기본적으로 clang 그룹은 vim의 일반 그룹( Function
, Macro
, Number
등)과 함께 이를 사용하도록 매핑됩니다.
" To get full highlighting, specify these in your colorscheme.
" See colors/twilighted.vim for example usage
hi Member " Any non-static member variable
hi Variable " Any non-member variable
hi Namespace
hi EnumConstant
hi link StructDecl Type
hi link UnionDecl Type
hi link ClassDecl Type
hi link EnumDecl Type
color_coded는 확장 그룹에 대한 지원을 보여주는 샘플 색 구성표와 함께 제공됩니다. 이를 사용하려면 :colorscheme twilighted
호출하세요. 이름에서 알 수 있듯이 색상 구성표는 vim의 twilight 테마에서 파생되었으며 저장소에서 볼 수 있는 내용에 적절하게 적용되었습니다. 구현을 검토하려면 colors/twilighted.vim
방문하세요. color_coded는 모든 색상 구성표에서 작동할 수 있습니다. 이것은 단지 샘플일 뿐입니다.
지원되는 모든 그룹에 대한 자세한 내용은 after/syntax/color_coded.vim
및 clang 설명서를 참조하세요.
:CCerror
이 명령은 libclang의 마지막 컴파일 오류 메시지를 출력합니다. 강조 표시가 제대로 작동하지 않으면 .color_coded
파일이 잘못 구성되었거나 소스에 구문 오류가 있을 수 있습니다. 의심스러우면 여기를 먼저 확인해 보세요.
:CCtoggle
이 명령은 color_coded가 현재 비활성화된 경우 활성화하고, 현재 활성화된 경우 비활성화합니다. 이 활성화/비활성화는 g:color_coded_enabled
옵션을 통해 수행됩니다.
color_coded를 컴파일하려면 다음이 필요합니다.
color_coded를 사용하려면 vim이 필요합니다:
color_coded는 사용자가 입력한 대로 코딩된 내용을 컴파일하려고 시도합니다. vim의 작동 방식으로 인해 color_coded는 사용자가 작업(커서 이동, 변경 등)을 한 후에만 강조 표시를 업데이트할 수 있습니다. 입력이 완료되고 강조 표시 업데이트가 완료되지 않은 경우 .color_coded
파일이 충분하다고 가정하면 커서를 이동하거나 다른 방식으로 이벤트를 발생시키면 color_coded가 완료됩니다.
vim에는 입력을 멈추고 약간의 지연 후에 실행 되는 보류 이벤트가 있습니다. color_coded도 여기에 연결되어 가능하면 강조 표시를 적용하는 데 사용됩니다.
예. 믿거나 말거나, 이것들은 libclang 버그임이 거의 확실합니다. 나는 그 중 몇 가지를 정리했고 내 자신의 libclang 포크를 유지 관리하고 있습니다. 이러한 문제를 신고하려면 이 티켓을 확인하세요.
이는 의도적인 것입니다. 처음으로 버퍼를 열 때 color_coded는 제대로 컴파일될지 여부를 알지 못하며 이를 알아내려고 시도하는 동안 사용자가 기다리기를 원하지 않습니다. color_coded는 항상 백그라운드에서 컴파일되며 커서 이동이나 텍스트 변경과 같은 이벤트는 업데이트를 위해 폴링됩니다. 그러나 버퍼에 강조 표시가 있으면 해당 버퍼를 떠났다가 다시 돌아오면 이전 강조 표시가 동기적으로 적용됩니다.
color_coded를 설치할 때 성공적으로 사용하려면 먼저 수동으로 컴파일해야 합니다. 지침은 설치를 참조하세요.
color_coded의 작동 설치를 업데이트했다고 가정하고, 업데이트로 인해 color_coded를 다시 컴파일해야 하는 경우(즉, 기본 API가 변경된 경우) 이 오류가 발생합니다. 다시 컴파일하려면 처음에 컴파일할 때 수행한 것과 동일한 단계를 따르십시오.
적어도 지금은 color_coded가 neovim을 지원하지 않습니다. 그러나 특히 neovim에 대해 유사한 강조 표시를 제공하는 것을 목표로 하는chromatica.vim이 있습니다.
이는 추가 포함 경로가 필요한 특정 운영 체제에서 발생합니다. 해결책은 이러한 경로가 -isystem
접두사가 붙은 .color_coded
파일에 있는지 확인하는 것입니다. 해당 경로를 찾으려면 다음을 실행하십시오.
echo | clang -v -E -x c++ -
자세한 내용은 이 문제 설명을 참조하세요. color_coded는 여기 post_constants()
에 표시된 것처럼 이들 중 일부를 가정하여 도움을 주려고 합니다.
공유 라이브러리에 잘 포함되지 않는 luajit을 사용하고 있을 가능성이 높습니다. 확실하지 않은 경우 다음과 같이 결과가 나타나는지 확인하세요.
vim --version | grep jit
자세한 내용은 여기에 있습니다.
.vimrc
에서 이것을 사용할 수 있습니다:
" Disable color_coded in diff mode
if & diff
let g: color_coded_enabled = 0
endif
cmake
에 DOWNLOAD_CLANG=0
지정할 수 있습니다. 플랫폼에 따라 LLVM_CONFIG=
사용하여 llvm-config 바이너리 경로를 지정해야 할 수도 있습니다. 이를 통해 다양한 버전의 Clang/LLVM을 사용할 수도 있습니다.
예:
cmake . -DDOWNLOAD_CLANG=0
Debian 기반 시스템에서 이 문제가 발생할 수 있습니다. 해결책은 liblua-5.x-0-dbg
설치하는 것이었습니다.
이는 vim의 버그로 인해 발생합니다. 패치 1691 이상이 설치된 vim을 사용하면 이 문제를 해결할 수 있습니다. 자세한 내용은 이 문제를 참조하세요.
자유롭게 Github에 문제를 제기하거나 저에게 이메일을 보내거나 IRC: Freenode @ #color_coded
에서 저를 만나보세요.
color_coded는 MIT 오픈 소스 라이선스를 따릅니다.
LICENSE
파일 또는 http://opensource.org/licenses/MIT를 참조하세요.