Vim 환경 설정
Vim 환경 설정 세 가지 방법
지금 작성 중인 파일에서만 적용할 설정은 ex모드(명령 모드에서 ‘:’을 누른 모드)에서 입력하고 엔터를 치기만 하면 된다.
본인만 사용할 설정을 영구 저장하려면 사용자 홈 디렉터리에 .vimrc 라는 파일을 만들고 여기에 설정 명령을 저장하면 된다.
모든 사용자에게 적용되는 설정을 하려면 /etc/vim/vimrc 파일에 설정 명령을 저장하면 된다.
환경 설정 방법
set 명령
환경 설정 해제 방법
set no명령
도움말 보기
ex모드에서 help 명령
도움말에서 단축 이름과 설명을 볼 수 있다. 설정, 해제에 어떤 단어를 쓰는지 바로 알 수 있다.
개인적으로 유용한 설정들
홈 디렉터리에 만든 .vimrc 파일에 모든 설정을 넣어도 상관없지만 몇 가지 설정은 /etc/vim/vimrc 파일에 주석만 지우면 되므로 이렇게 했다.
/etc/vim/vimrc 파일을 보면 구문 하이라이트 기능은 Vim 버전 5부터 지원하고 기본적으로 활성화되어있다.
그대로 내버려두자. 참고로 주석은 큰따옴표이다.
" Vim5 and later versions support syntax highlighting. Uncommenting the next " line enables syntax highlighting by default. if has("syntax") syntax on endif
그리고 전에 열었던 파일이라면 마지막 수정 위치(의 맨 앞)에서 시작할 수 있게 해주는 설정은 주석을 지워 활성화한다.
" Uncomment the following to have Vim jump to the last position when " reopening a file if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif
또 다른 파일로 작업을 변경할 때 자동 저장하거나, 마우스로 커서 위치를 바꿀 수 있게 하거나, 짝이 되는 괄호를 강조하거나 하는 설정들이 아래에 있다.
그런데 의문점이 하나 있는데 짝이 되는 괄호를 알려주는 설정인 set showmatch는 비활성화인데도 적용이 되고 있다.
어떤 설정이 이 기능까지 같이 해주는 걸까? 절대로 .vimrc에 넣어놓고 그런 건 아니다.
" The following are commented out as they cause vim to behave a lot " differently from regular Vi. They are highly recommended though. "set showcmd " Show (partial) command in status line. "set showmatch " Show matching brackets. "set ignorecase " Do case insensitive matching "set smartcase " Do smart case matching "set incsearch " Incremental search "set autowrite " Automatically save before commands like :next and :make "set hidden " Hide buffers when they are abandoned set mouse=a " Enable mouse usage (all modes)
마우스로 커서를 이동할 수 있는 설정인 set mouse=a의 주석을 푼 상태이다.
이 외엔 .vimrc 파일에 넣은 설정들이다.
set number "줄 번호 표시 set ruler "현재 커서 위치 표시 set shiftwidth=4 "들여쓰기는 4칸 set tabstop=4 "기본 8칸이던 탭 크기를 4칸으로 set expandtab "TAB을 SpaceBar로 넣음 set hlsearch "검색 결과 강조(ex모드에서 /검색문자열) set autoindent "indent는 들여쓰기다 set smartindent set cindent "C 프로그램용 들여쓰기 set paste "붙여넣기 시 자동 들여쓰기 set fileencodings=utf8,euc-kr "파일 인코딩이 UTF-8인지, EUC-KR인지 판단해서 보여준다
여기서도 의문점이 있는데 TAB을 SpaceBar로 바꿔 넣는 expandtab 설정이 적용되지 않는다.
명령이 잘못된 게 아닌 게 구문 강조로 정상 작성 여부를 쉽게 알 수 있을뿐더러 지금 작성 중인 파일에만 적용되게 ex모드에서 직접 set expandtab을 하면 잘 적용되기 때문이다.
단축 명령인 set et로 저장해도 마찬가지이며 물론 작성 중인 파일에 set et 명령을 넣으면 잘 작동된다.
이유가 뭘까?
지나가다가
paste 옵션을 사용하면, expandtab 는 무시됩니다.
저도 해맸었습니다 🙂