본문 바로가기
IT 기술/컴퓨터관리 팁

[Vim] vi 가 너무 느리게 열리는 경우.. (vim.gnome 과 vim.basic)

by 땅뚱 2014. 8. 5.

서버의 하드디스크가 날아갔다. 우분투 새로 설치하고, 다양한 프로그램을 설치하였다.

 

그런데 vi 를 열었는데, 너~무 느리다. 혹시 내가 .vimrc 를 잘못 복사했나해서 다양하게 시도해보았지만, 별 문제가 없다.

 

동일한 서버에 다른 사용자로 로긴해서 vi 를 실행해보았는데, 해당 계정에서는 정상적으로 빠르게 열린다. 혹시 perf 를 사용하면 쉽게 잡힐 수 있을까 생각해서 perf 를 입력해보았더니, 다행히도 커널의 perf 옵션이 켜져있는 것 같다.

 

실행해보자

 

$ sudo perf record -a -- vi

 

vi 가 열리자마다 다시 닫아버리면 데이터 수집이 끝난다. 수집된 데이터를 확인해 보았다.

 

$ sudo perf report

 

 

vi 가 가장 많은 부분을 차지한다. vim 에 debug symbol 이 없기 때문에 해당 주소에 대한 symbol 대신 주소값이 나온다. vim-dbg 패키지를 설치하고 다시 해보았으나, function 단위의 내용이 무슨 의미가 있는지 확인하기 어려웠다.

 

$ sudo apt-get install vim-dbg

 

그러던 차에 strace 를 실행해보았더니, vim 창이 열리기 전에 엄청 오래걸리는 부분이 확인되었다.

 

 

위 부분에서 오래동안 멈춰있는 것을 확인했고, 다른 계정의 경우 위와 같은 부분이 없는 것을 확인했다.

 

$ strace vim &> log

 

위 명령을 사용해서 파일로 저장한 다음에 비교해보았더니, 오래 멈추기전에 다음 라인에서 서로 차이가 있었다.

 

 

즉 오래 걸리는 계정의 경우 home 디렉토리의 .Xauthority 파일이 존재하였고, 빨리 뜨는 계정의 경우 .Xauthority 파일이 존재하지 않았다.

 

그럼 간단하게 .Xauthority 파일을 지우면 되는 일 아닌가?

그런데, .Xauthority 는 X 윈도를 사용하면 반드시 생기는 파일이 아닌가? 그리고 vim 이 .Xauthority 와 무슨 관련이 있을까 해서 좀더 확인해보았다.

 

확인한 결과 내가 사용하는 vim 은 기본적으로 vim.gnome 을 실행하도록 연결이 되어있었다. 그래서 .Xauthority 를 체크하도록 되어있었고, 내가 ssh 을 통해서 터미널 접속을 하고 있었기 때문에 vim 실행이 매우 느렸던 것이었다.

(이 내용은 perf 시에 성능을 잡아먹고 있던 vim.gnome 에서도 찾을 수 있다)

 

vim.gnome 은 내가 gvim 을 우분트 소프트웨어 센터에서 설치하면서 자동으로 설치된 것으로 보이고, 이때 기본 vim 링크가 vim.gnome 으로 변경된 것이었다.

 

따라서 vim.gnome 으로 설정된 내용을 다시 vim.basic 으로 변경해주는 작업이 필요했다. 그 작업은 update-alternatives 명령을 사용해서 진행하였다.

 

$ update-alternatives --all

또는

$ update-alternatives --set <name> <path>

 

내 경우에는 어떤 링크들이 있는지 전부 확인하기 어려워서 --all 옵션을 주어서 interactive 하게 vim.gnome 으로 되어있는 항목을 모두 바꾸어주었다.

 

vim 의 다양한 패키지는 이외에도 여러개가 있는데, 이에 대한 내용은 다음을 참고한다.

참고 : http://askubuntu.com/questions/281886/what-is-the-difference-between-the-different-vim-packages-available-in-ubuntu