뭘 이런걸..

Posted
Filed under Tech/안녕리눅스
협업 프로젝트시에 여려명이서 코드를 같이 생성하다 보면 각자의 코딩 스타일 때문에 코드가 난장판이 되는 문제가 있습니다. 이 문제 때문에 대부분의 프로젝트들은 각각의 코딩 규칙을 생성하여 사용 합니다.

여기서는 이 난장 중에서 tab과 space가 섞여서 있는 경우에 대한 체크를 위한 팁을 작성해 봅니다. 특히 이 경우는 Pythonindent에서 가장 큰 특징으로 나타납니다.

일단, 구분을 하기 위해서는 vim의 syntax 를 이용합니다. python 파일을 예로 들겠습니다.

먼저, python에 적용될 syntax 파일을 생성합니다.

[oops@an3 ~]$ # vim syntax directory를 생성 합니다.
[oops@an3 ~]$ mkdir -p ~/.vim/syntax
[oops@an3 ~]$ # tab의 바탕색을 푸른색으로 하는 syntax color를 설정 합니다.
[oops@an3 ~]$ cat <<EOF > ~/.vim/syntax/python.vim
syn match Tab "\t"
hi def Tab guifg=blue ctermbg=blue
EOF
[oops@an3 ~]$

위와 같이 작업을 한 후에, python file을 vim으로 열면 tab이 푸른색 바탕으로 보이게 됩니다. space와 tab이 섞여 있을 경우 쉽게 구분이 되어지게 됩니다.

여기까지는 인터넷에서 검색만 잘하면 찾을 수 있는 내용입니다. 그럼 이 글을 포스팅 하는 이유는 다음과 같습니다.

제가 사용하다 보니, 일단 언어마다 syntax 파일을 생성해 줘야 하는 불편함과, 항상 이렇게 보고 싶지 않다는 점 입니다. 즉, 필요할 때만 구분을 하고 싶은데, 위의 팁은 vim 설정 파일을 변경하면서 사용을 해야 한다는 것이죠. 그래서 이 불편함들을 해결하기 위하여, 이 기능을 vim function으로 만들고 특정 키에 bind 해서 사용하도록 합니다. (물론 안녕 리눅스의 VIM package에 포함될 기능 입니다.)

여기서 부터의 내용은, 위의 내용을 싹 잊어 버리시면 됩니다. (일단 위의 내용을 적용했다면, 싹 원복 하라는 의미입니다.) 일단, AnNyung LInux VIM plugin project site에서 TabDistinct plugin을 다운로드 받습니다.

[oops@an3 ~]$ curl -o tabdistinct.vim \
https://raw.githubusercontent.com/AnNyung/VIM_plugins/master/TabDistinct/tabdistinct.vim
[oops@an3 ~]$

다운로드 받은 tabdistinct.vim 을 root 권한이 있을 경우에는 $VIM/vimfiles/plugin 디렉토리에 저장을 하고, root권한이 없을 경우에는 ~/.vim/plugin 에 저장을 합니다. 아래의 예는 일반 계정의 예 입니다.

[oops@an3 ~]$ # vim plugin directory를 생성 합니다.
[oops@an3 ~]$ mkdir -p ~/.vim/plugin
[oops@an3 ~]$ mv tabdistinct.vim ~/.vim/plugin/
[oops@an3 ~]$

이 작업을 마친 후에, 아무 파일이나 열어서 command mode에서 언더바(_)키('shift' + '-')를 누르시면 of/off toggle이 가능해 집니다.


자세한 사항은 https://github.com/AnNyung/VIM_plugins/tree/master/TabDistinct 를 참고 하세요
2016/12/23 21:26 2016/12/23 21:26