본문 바로가기

Program Language and Algorithm

vi로 코딩하기~~vol.2 vi의 친구들 플러그인

반응형

  이번 편에선 미리 써 놓았던 데로 키 매핑입니다.
  말이 키 매핑 이지...이건 사용자가 원하는 데로 하는 거니까....이번 편의 부제목 대로 플러그 인쪽에 가깝겠죠...

  앞서 저는 vi의 유용한 키들을 설명하였습니다. 그런 키들은...혼자서 사용되는것 보다 여러키가 복합적인 효과를 주는게 더 많습니다.
  첫번째 설명할 폴딩,폴딩해제 기능이 그런것이라고 볼수 있죠.


  우선 프로젝트를 들어 가야 겠죠...이번엔 복수의 파일을 같이 열도록하겠습니다. 명령은 다음과 같은 형태죠.
  vi *.c src/*.c
  복수의 파일을 여는 이유는 태그리스트와 버퍼익스플로러를 설명하기 위함입니다...
  그럼 설명보다 스샷..ㅋㅋ


  보시면 함수 하나가 이름만 남고 접혀져 있죠...이게 폴딩 기능 입니다....이건 기나긴 코드를 볼때 필요한 기능 이다~~~~라고 설명하지만....제가 보기엔 쓸데 없는 기능 중 하나 입니다. 자신의 프로그램을 짜는 프로그래머( 복사 & 붙여넣기 에 익숙한 사람 제외)라면 자신이 찾는 코드가 대충 몇 번째 줄에 있는지 알수 있습니다. 위에 있는 코드가 자신이 찾던 코드가 아니라고 해서 폴딩 해가며 찾을 이유가 없죠. 또 폴딩하지 않고 코드만 조금 봐도 이녀석이 어떤 기능을 하는지 알구요.....보통 코드를 분석 할때 많이 쓰이 더군요....제 경험상으로는요....그러니 자신이 짠 코드라면 별로 필요 없는 기능 이겠죠. 이녀석 대신 버퍼 익스 플로러도 있으니까요....

  암튼 하는 법은 위의 vimrc에서 볼수 있듯 폴딩시 v]}zf 해제시 zo 이구요 이건 각 명령어들이 요약된것입니다.

  자 다음 둘은 태그 리스트와 버퍼 익스 플로러 입니다. 이녀석들을 키 매핑 해놓고 암만 눌러 바야 vi는 오류 메시지만 출력합니다. 왜냐하면 이 둘은 플러그인 이거든요..^^ 자 할 일이 따로 생겼습니다. 구글링~~~ 키워드는 'vim bufferexplorer' 입니다.

  제가 링크를 붙이지 않는 이유는....여러분이 해 놔야지 다음에 무리없이 하시게 되기 때문이죠..^.~..
자 검색 결과를 이용해서 태그리스트 를 받습니다. 압축을 풀면 두개의 폴더가 나오는 것을 보시게 될 것입니다.(파일만 달랑 나오면 다시 받는걸 추천해 드립니다.)

  그럼 이제 터미널을 여시고 명령
  sudo nautilus
  무슨 명령인지 아시죠..^_____^..터미널로 그냥 옮기실 분은...any way~~~
  열린 노틸러스의 폴더는 /usr/share/vim/vim[version]/으로 이동 시키시구요. 그럼 압축 풀어서 나온 폴더들과 동일 폴더가 있는 vim 폴더에 도착하실 겁니다. 하지만 안의 내용물은 당연히 다르겠죠 taglist쪽의 내용물은 맞는 폴더에 카피해 넣습니다. 이과정에 루트 개정이 필요하기에 sudo 명령을 내려달라구 요청한거구요..^^

  즉 지금까지의 과정은 bufferexplorer플러그 인을 받아서 /usr/share/vim/vim[version]/ 폴더에 덮어 씌운것입니다.

  이 녀석의 기능은 열려 있는 파일간의 이동 입니다.
  매번 파일 버퍼사이를 오가는 것보다 버퍼 익스플로러를 이용하는 편이 당연히 편리합니다.
  추가로 제일 위의 .vimrc스샷에서 "=====파일 버퍼 간 이동======" 관련 매핑은....전 전혀 사용하지 않구요. 이녀석도 열려있는 파일간의 이동 기능 입니다. 하지만 어떤 파일이 어느 순서로 열려있는지 모르면....황이죠...하지만 버퍼 익스플로러는 파일의 이름을 보여주고 선택하게 하기때문에 편리하답니다.

  다 끝내 셨으면 .vimrc에서 키매핑을 하시구요.(전 'f4'로 되어 있습니다.)
  다수의 파일을 한 vi에서 여신후 :BufExplorer를 입력하시거나 매핑한 키(저같은 경우 'f4')를 누르세요.
  그럼 열려있는 파일 리스트가 나오게 됩니다. 그 파일들 중 편집을 원하는 파일을 화살표나 jk키를 이용해서 선택해주면 그파일로 편집창이 이동한 것을 보실수 있으실 것입니다. 써 보시면 정말 유용한 플러그 인이라는 것을 알게 되실 것입니다.


자 다음은 태그리스트 입니다. 설정은 똑같이 vim Taglist로 하셔서 설치 하시구요.
이녀석은 창을 분할 하면서 열려있는 파일과 파일이 가지는 매크로, 전역 변수, 함수의 리스트를 보여 주고 원하는 곳에서 엔터 입력시 해당 위치로 이동 시켜주는 녀석입니다. 말이 필요 없겠네요...동영상을 통해 어떤 녀석인지 확인해 보세요..^^


  보시면 f5키를 눌렀을 때(매핑된 키) 창이 좌우로 분할 되며 좌측에 커서가 위치합니다. 그후 태그리스트와 같은 방법으로 원하는 함수로 이동한뒤 선택해 주면 커서가 오른쪽 창으로 넘어 오며 우측 창에선 선택한 함수가 있는 곳으로 이동하게 됩니다. 다시 매핑된 키를 누르면 사라지구요..^^

  그다음은 자동완성 기능 입니다.....이 기능은 원래 vol.1에 들어 가야 했는데 제가 깜박했더군요...절취선 아래 적으려다가 원악 중요한 내용이라서 이렇게 vol.2의 마지막을 장식하게 되었습니다.
  자동 완성 기능은 프로그래머 에게 있어서 매우 중요한 기능입니다. 그 중요성은 앞서 "sbin programming skill vol.2"에서 다룬 적이 있죠....그렇기때문에 당연히 vi 도 이 자동완성 기능을 제공 합니다. vi의 경우 "ctrl + p" 와 "ctrl +n"이 자동완성 키가 되겠습니다. 전 그냥 "ctrl + p"만 외우고 있는데 책을 보니 n도 있더군요.
  비쥬얼 스튜디오의 자동완성 기능을 써보신 분은 정말 짜증나는 점을 하나 발견하셨을 것입니다. 이노무 자동완성은 원하는 것을 찾을려면 한참 스크롤을 내려야 합니다...ㅡㅡ;; 이는 정렬방식에 큰 문제가 있다는 의미 이지요.
vi의 자동완성은 코드를 분석합니다. 자신이 연결된 모든 파일을 검사(시스템 포함) 하고 그 순서는 코딩중인 위치로 부터 위로 향합니다.  정렬도 마찬가지로 커서 에서 위쪽으로 제일 가까운 해당 값들이 정렬되구요.."n"의 경우 아래로 검색하여 아래쪽의 해당값이 먼저 올라 오구요. 이건 다른 정렬보다 훨신 편리 합니다. 변수는 대부분이 지역인 경우가 많고 지역변수는 커서 근처에 선언, 사용되었기 때문에 이런 정렬방식은 원하는 값을 바로 찾는다는 의미 이지요....이도 동영상을 준비 했습니다....헌데 제가 마우스 줌을 너무 당겨서 전체적으로 찍히진 않았더군요..^^ 죄송합니다.....그래도 어떻게 구현되는지는 이해 하실수 있으실거에요..^^

 그럼 vol3는 ctags를 다루도록 하겠습니다...^^
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
오늘도 나오는 절취선..^____^ 확인차 재생 해본 결과....vi를 모르시는 초보자 분들은 잘못 이해 하실거 같아서요..^^ 리눅스의 터미널은 마우스 명령따위 깡그리 무시합니다. 당연히 vi에서의 마우스 명령도 무시되죠. 제가 마우스를 사용한것은 보시는 분의 시선이 보셔야 할곳에 있게 하기 위함이나 화면의 줌을 당기기 위함입니다. 절대 마우스로 함수등을 선택하는 것은 불가능 합니다. 오해하지 말아주세요..^^
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0731 틀린 내역 수정 되었습니다....지적해주신 a2님께 깊은 감사를 그리고 그전에 보신 분들께 석고대죄를..>,.<
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dr.Jung님께서 주신 조언에 의하면 vi에 마우스 명령을 처리할수 있게 해주는 명령어가 있더군요..^^
위에 써놓은 마우스에 관한 내역은 틀렸습니다.
함수 선택 등의 작업을 할수 있겠네요.
개인적인 의견으로 추천하지 않습니다. 마우스를 쓰지 않고 키보드로 줄수있는 여러 vi편집 명령( vol.1참조)을 사용했을때 이점은 매우 많으니까요..^^
반응형