jam 블로그

[명령어] vi 단축키 본문

시스템/리눅스

[명령어] vi 단축키

kid1412 2010. 5. 31. 10:40
728x90

< 단축키 >
ZZ 저장후 종료

:e 불러오기
:! 실행하기

Ctrl + b 이전 페이지 이동
Ctrl + f 다음 페이지 이동
{, } 문단 이동

ma a로 위치 마크하기

'a 마킹된 a위치 찾아가기

Ctrl + w, n 분할 새창 열기
Ctrl + w, s 화면 가로분할
Ctrl + w, v 화면 세로분할
Ctrl + w, c 화면 닫기
Ctrl + w, q 화면 종료
Ctrl + w, o 현재 커서가 있는 창 냅두고 다 닫기

Ctrl + ] ctag 추적하기
Ctrl + t 한단계 빠져나가기 (스택 형식)

< 확장기능 >
* 파일 탐색 기능
:vs ./

* 흐트러진 소스 정렬
방법1> 명령모드에서 gg=G 누르면 소스 전체가 자동정렬된다.
방법2> v 를 눌러 영역을 설정한 후 = 누르면 자동정렬이 된다.

* { } 간 이동
함수의 시작 {, 끝 } 위에서 %를 누르면 이동한다.

* 헤더파일 바로 읽어오기
Ctrl + w, f

* 자동완성 기능
함수명 일부만 입력한 후 Ctrl + n, 혹은 Ctrl + p 를 누른다.


Vim Tip
아래 명령어를 사용하면 80 글자 이상되는 부분은 색깔을 표시해 줍니다. 편집할 때 도움이되죠.

80을 다른 숫자로 변경해 주면 길이를 바꿀 수 있습니다.
:match Error /\%>80v./


============================
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. 키 매핑을 사용해 단축키 정의
===============================

~/.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 윈도 최대화

Comments