C언어를 배우고 실무에 적용하던 무렵 대기업 전자 회사에서 운영체제를 담당하는 한 개발자를 만난 적 있었다. 기반 기술이 있고 경험도 많다고 자신 만만해하던 때였다. 어깨너머로 그의 작업 광경을 구경하는데 내 눈앞에 신기한 모습이 펼쳐졌다. 어찌 보면 가장 원시적이라 할 수 있는 vi 에디터로 프로그램에서 발생한 문제를 찾아 가는데, 이리저리 코드의 호출 그래프를 따라 움직이는 것이 환상적이었다. 뭔가 단축키를 누르는 것 같은데 그 원리는 도통 알 수 없었다. 그 사람을 붙들고 물어보니 CTags란 도구를 활용해서 프로그램을 분석하여 태그 정보를 만들어 놓으면 vi(엄밀히 말하면 vim) 에디터에서 해당 정보를 기반으로 함수나 변수가 정의된 곳으로 이동시켜주는 원리였다. 물론 비주얼 스튜디오나 이클립스를..
유닉스나 리눅스 장비를 만져본 개발자에게 가장 전통적인 도구 vi(vim). vi 도구의 중요성이나 유용성을 다시 강조할 필요는 없지만 오랜 만에 다시 만질 기회가 있어 꼭 필요한 기능들을 다시 정리해 봅니다. 일부 임베디드 시스템에서는 오리지널 vi만 제공하는 시스템도 있지만 대부분의 플랫폼에서 Vim을 지원하고 있으므로(윈도우용 vim도 있고, 이클립스용 플러그인도 있습니다. https://www.vim.org/ 참조) vim을 통해 편리한 개발을 할 수 있도록 필요한 기능들을 메모 형식으로 적어두고자 합니다. vim을 통해 프로그램 분석이나 디버깅을 하고 있다면 ctags 또한 꼭 알아 두어야 할 것 입니다. vi를 처음 접하는 사람들이 가장 적응하지 못하는 문제가 바로 vi의 입력 모드와 컨트롤 ..
리눅스나 유닉스 환경에서 프로그래밍을 하게 된다면 가장 기본적인 도구인 vi와 친해질 필요가 있습니다. 시스템 환경마다 천차만별이기 때문에 가장 기본적인 도구에 대한 사용 경험은 작업의 효율성과 직결되기 때문입니다. 모든 작업 환경에서 이클립스나 비주얼스튜디오, 넷빈즈와 같은 IDE를 사용할 수 있는 것은 아니기 때문입니다.많은 시스템에서 사용하는 vi는 사실 알고보면 많은 기능이 추가된 vim으로 링크되어 있습니다. 사용하다보면 어느 시스템에서는 화살표로 이동이 가능한데 어떤 시스템에서는 화살표를 누르면 이상한 컨트롤 문자만 나오고 정상적인 동작을 하지 않습니다. 이런 현상은 많은 경우 vim 설정이 준비되어 있지 않은 경우가 대부분이지만 어떤 경우에는 vim이 아니라 원래 vi 도구만 지원하는 경우도..