Skip to Content
Dev Environment & ToolsVim 커서와 선택 영역 표시 설정
🛠️ Dev Environment & Tools2026년 3월 5일

Vim 커서와 선택 영역 표시 설정

#vim#terminal#dev-env

어두운 Vim 테마에서 커서 위치와 선택 영역이 잘 보이지 않았습니다. 여러 줄을 선택해 복사하거나 삭제할 때 범위를 다시 확인하는 일이 있어, 테마 전체 대신 필요한 하이라이트만 조정했습니다.

커서와 선택 범위 표시

현재 줄과 열은 어두운 회색으로 표시하고 선택 영역은 밝은 색을 사용했습니다. 위치 표시보다 선택 범위가 더 눈에 띄도록 구분한 것입니다.

아래는 이 구성을 설명하는 설정 예시입니다.

vim
sample/vim-highlights.vim
set cursorline set cursorcolumn highlight CursorLine ctermbg=236 guibg=#303030 highlight CursorColumn ctermbg=236 guibg=#303030 highlight Visual ctermbg=81 guibg=#5fd7ff highlight Cursor guifg=#000000 guibg=#ffaf00

CursorLine과 CursorColumn은 현재 위치, Visual은 선택 영역에 사용됩니다. ctermbg는 터미널 색 설정이고 guibg는 GUI 색 설정입니다. 커서 자체의 모양과 색은 터미널 설정의 영향도 받으므로 Cursor 설정만으로 모든 환경에서 같은 결과가 나오지는 않습니다.

테마가 하이라이트를 덮어쓸 수도 있어 적용 순서도 확인해야 합니다. 테마를 불러온 뒤 원하는 하이라이트가 유지되는지 보는 것이 필요했습니다.

테마를 바꾼 뒤 하이라이트 유지

설정 파일에서 하이라이트를 지정했는데 다시 흐려진다면 테마를 읽는 순서를 볼 수 있습니다. 테마가 뒤에서 같은 그룹을 정의하면 앞서 쓴 색이 바뀔 수 있습니다. 아래는 ColorScheme 이벤트 뒤에 필요한 표시를 다시 적용하는 구성 예시입니다.

vim
example/personal-highlights.vim
function! PersonalHighlights() abort highlight CursorLine cterm=NONE ctermbg=236 gui=NONE guibg=#303030 highlight CursorColumn cterm=NONE ctermbg=236 gui=NONE guibg=#303030 highlight Visual cterm=NONE ctermfg=0 ctermbg=81 gui=NONE guifg=#000000 guibg=#5fd7ff endfunction augroup PersonalHighlights autocmd! autocmd ColorScheme * call PersonalHighlights() augroup END call PersonalHighlights()

기존 예시는 그룹별 색을 보여주는 용도이고, 이 예시는 재적용 시점을 보완한 것입니다. autocmd!는 이 그룹에 등록된 항목을 먼저 비워 설정을 다시 읽을 때 중복 등록되는 것을 피합니다. 마지막 호출은 파일을 읽은 현재 테마에도 즉시 적용하기 위한 부분입니다.

선택 영역에서는 배경색뿐 아니라 글자색도 지정했습니다. 테마가 밝은 글자와 반전 속성을 적용하고 있으면 배경만 바꿔도 기대한 모습과 다를 수 있기 때문입니다. 실제 테마에 맞춰 글자색과 배경색을 함께 조정하되, 기존 구문 강조는 유지했습니다.

현재 적용된 값 조회

Vim 안에서 다음 명령으로 옵션과 하이라이트를 확인할 수 있습니다.

vim
example/inspect-highlights.vim
:set cursorline? cursorcolumn? :verbose highlight CursorLine :verbose highlight Visual :echo has('termguicolors') :version

verbose 조회는 현재 정의를 어디서 마지막으로 설정했는지 찾을 때 도움이 됩니다. termguicolors 지원 여부는 빌드와 터미널 환경을 함께 봐야 하므로, 지원한다고 무조건 켜는 설정을 예제에 넣지는 않았습니다. 256색 값과 RGB 값을 함께 적은 이유도 실행 환경에 따라 사용하는 색 경로가 다를 수 있기 때문입니다.

구분담당
CursorLine·CursorColumn현재 줄·열의 강조
Visual선택한 텍스트 범위
CursorGUI 등 지원 환경의 커서 하이라이트
터미널 설정커서 모양·일부 색상과 표시 동작

클립보드 복사는 선택 영역의 표시와 따로 확인해야 합니다. 선택 영역이 잘 보여도 시스템 클립보드 지원이 없는 Vim에서는 같은 방식으로 복사되지 않을 수 있습니다. 색 변경을 확인할 때는 줄 이동, 문자 선택, 여러 줄 선택을 먼저 보고, 복사는 사용 중인 Vim의 빌드 옵션과 터미널 연결을 따로 확인합니다.

실제 편집 화면 확인

설정 후 Python과 Markdown 파일에서 커서 줄과 여러 줄 선택을 확인했습니다. 클립보드 연결도 사용 중인 환경에서 따로 확인했습니다.

색을 고를 때는 빈 화면보다 실제로 편집하는 파일에서 확인하는 편이 낫습니다. 구문 강조와 배경색이 함께 보일 때도 현재 위치와 선택 범위가 구분돼야 하기 때문입니다. 제 경우에는 필요한 표시만 조정하는 것으로 기존 테마를 계속 사용할 수 있었습니다.

참고 자료

Last updated on