안녕하세요. 여러분.

음.. 역사를 논하기 전에 매우 가벼운 팁 2가지를 올려볼려고 합니다.

로봇틱스를 하는 사람들은 리눅스를 더 선호하는 경향이 있습니다.

그리고 많은 사람들이 로봇 알고리즘, 프로그램들을 리눅스 플랫폼으로

개발하고 있지요. 물론 멀티플랫폼에서 사용되는 소프트웨어로 설계와

배포를 하는 것이 좋은 추세이지만요.

 

리눅스에선 전통적으로 vi 와 emacs 를 에디터로 많이 사용하잖아요.

이곳 CMU에 와서 많은 로봇틱스 프로그래머를 봤지만 (물론 성급한

일반화의 오류지만...) 많은 개발자들이 vi 와 emacs를 사용하고 있었습니다.

 

자, 다음은 제가 주로 사용하는 vi 고급 기능들입니다. (제 관점에서)

 

기본적인 것을 익힌 다음에 좀 더 고급스런 기능을 사용하고자 할때 필요한 내용들.

============================
0. 소스 브라우징과 패턴 교환
============================
 [[, ]] - 문단 옮기기
 % - {}의 짝 찾기 
 ctrl + P - 자동 완성 기능 
 ma, 'a - 다중 마크 기능 

특정 패턴을 다른 패턴으로 바꾸기
:s /old /new          - 현재 줄의 처음 old를 new로 교체

:s /old /new /g       - 현재 줄의 모든 old를  new로 교체

:1,20s /old /new /g    - 1부터 20번째 줄까지 모든 old를 new로 교체

:-2, +4s /old /new /g - 커서 2줄 위부터 4줄 아래까지 모든 old를 new로 교체

:%s /old /new /g      - 문서 전체에서 old를 new로 교체

:%s /old/ new /gc     - 문서 전체에서 old를 new로 확인하며 교체


  
===============================
1. 키 매핑을 사용해 단축키 정의
===============================

/home/tae165/.vimrc의 nmap부분 참고하여 입맛에 맞게 바꾸시면 됩니다.(재로그인하면 적용됩니다.)

 키                  기능
-----------------------------------
`             현재 윈도우 최대화
탭            윈도우 이동
8             윈도우 아래로 이동
9             윈도우 위로 이동
컨트롤+L      무조건저장(w!)
컨트롤+X      모든창닫고 나가기(qa)
,if            #if..#else..#endif
,tg           /*TGKim 날짜*/ "TGKim"부분을 자신의 주석으로 바꾸시길




=============================
2. Tags를 이용한 Source Trace
=============================

리눅스 커널소스 맨위에서(예: /usr/src/linux) 
$ctags -R * 해주면 한참뒤 ctags화일이 만들어 집니다.

이제 vi로 들어가서(tags화일이 있는 위치에서 = /usr/src/linux)
:ts task_struct 해보시면 task_struct 심볼리스트가 좌악 나오는데 번호로
선택해서 찾아가면 됩니다.

그 밖에 Keyword위에 커서를 위치하고 다음을 할수 있습니다.

Ctrl + ] : tag 찾아감, 
Ctrl + t : tag 되돌아감
:tags - taglist를 출력
g + ] : ts keyword와 같은기능(매우 편함)

커널에 보면 tag를 Makefile에서 만들수 있더군요

TAGS: -> etags로
tags: -> ctags로 그냥 ctags -R *보다 효과적이겠죠..

make tags하믄 됩니더.




========================
3. Visual mode 블럭 복사
========================

yy(한라인)나 y#(#라인)같은 라인복사 외에 Visual mode에서의 

블럭 복사가 있습니다.

v 누르고 h,l,j,k로 블럭지정하구 y(복사), d(잘라내기)하구

커서를 목적지 한칸앞에서 p(붙여넣기)하믄 됩니다.

참고로 

Shift + v : 라인복사
Ctrl + v  : 사각블럭 복사




========================
4. Multi Window 작업하기
========================

Ctrl-W 누른후에 다음 키를 누른다.

Ctrl-W ] 새윈도 만들고 tag로 뜀
Ctrl-W f 새윈도 만들고 커서위치의 화일을염
Ctrl-W q 창닫기
Ctrl-W o 현재창남기고 다닫기
Ctrl-W n 새로운창열기(수평창)
Ctrl-W v 새로운창열기(수직창)

Ctrl-W j 위쪽 윈도우로 커서이동
Ctrl-W k 아래쪽 윈도우로 커서이동
Ctrl-W h 왼쪽 윈도우로 커서이동
Ctrl-W l 오른쪽 윈도우로 커서이동
Ctrl-W p 전에 활성된 윈도우로 커서이동
Ctrl-W t 맨위쪽 윈도우로 커서이동
Ctrl-W b 맨아래쪽 윈도우로 커서이동

Ctrl-W x 전의윈도와 위치바꿈
Ctrl-W r(R) 윈도 위치 돌림 

Ctrl-W =       모든창 같은 크기로
Ctrl-W N +(-)  N열만큼 높이크기 조절
Ctrl-W N >(<)  N열만큼 넓이크기 조절
Ctrl-W N _     현윈도 높이 N만큼, 기본은 최대
Ctrl-W N _     현윈도 넢이 N만큼, 기본은 최대

:only  윈도 최대화

set ic : 대소문자 구분안함