티스토리 뷰

728x90

유닉스나 리눅스 장비를 만져본 개발자에게 가장 전통적인 도구 vi(vim). vi 도구의 중요성이나 유용성을 다시 강조할 필요는 없지만 오랜 만에 다시 만질 기회가 있어 꼭 필요한 기능들을 다시 정리해 봅니다.


일부 임베디드 시스템에서는 오리지널 vi만 제공하는 시스템도 있지만 대부분의 플랫폼에서 Vim을 지원하고 있으므로(윈도우용 vim도 있고, 이클립스용 플러그인도 있습니다. https://www.vim.org/ 참조) vim을 통해 편리한 개발을 할 수 있도록 필요한 기능들을 메모 형식으로 적어두고자 합니다. vim을 통해 프로그램 분석이나 디버깅을 하고 있다면 ctags 또한 꼭 알아 두어야 할 것 입니다.



vi를 처음 접하는 사람들이 가장 적응하지 못하는 문제가 바로 vi의 입력 모드와 컨트롤 모드에 대한 이해입니다. vi에서는 입력 모드와 컨트롤 모드에 따라 처리가 달라지므로 이것만 주의하면 진짜 가볍고, 유용한 편집기로 사용할 수 있습니다. 입력 모드는 말 그대로 키보드에 입력하는 문자들을 파일의 내용으로 입력하고 있는 모드로 위의 그림에서 나열한 i, a, A, o, O등의 키를 입력하면 입력모드로 진입하여 그 다음부터 입력한 문자들은 명령이 아니라 파일의 내용으로 입력됩니다. 


vi를 실행시키면 최초에는 컨트롤 모드로 시작하고 입력 모드에서 ESC키를 눌러도 컨트롤 모드로 전환합니다. 이 모드에서는 입력하는 문자들이 파일 내용이 아니라 명령어로 인식됩니다. 예를 들어 k, j, h, l 문자는 상,하, 좌, 우로 커서를 이동시키는 명령입니다.

  


■ 편집모드 들어가기


    • i : 현재 커서 위치에서 편집 시작

    • a : 현재 커서 다음위치에서 편집 시작

    • A : 현재 줄 끝에서 편집 시작

    • o : 다음줄에 새줄을 추가하여 편집 시작

    • O : 현재위치에 새줄을 추가하여 편집 시작



■ 이동


    • G : 맨 뒤로 이동

    • 숫자G : 숫자라인으로 이동

    • :숫자 : 해당 라인으로 이동

    • % : 괄호, 중괄호, 대괄호, 주석, #if 에서 시작<->끝간 이동

    • 0 : 줄의 처음으로

    • $ : 줄의 끝으로

    • kjhl : 상하좌우로 이동(vim에서는 화살표도 가능)

    • Ctrl+] : 함수등이 정의된 곳으로 이동

    • Ctrl+t : 원래 위치로 복귀

    • w : 다음 단어로 이동

    • b : 이전 단어로 이동

    • h : 좌로 커서 이동

    • j : 아래로 커서 이동

    • k : 위로 커서 이동

    • l : 우측으로 커서 이동



■ 주요 명령


    • :help :도움말

    • :w : 저장

    • :wq : 저장후 종료(!를 붙이면 묻지 않고 빠짐)

    • :q : 현재창 닫기(!를 붙이면 묻지 않고 빠짐)

    • :qa : 모든 창 닫기

    • :vs : 좌측에 새 편집창(가로로 창 나누기)

    • :sp : 위에 새 편집창(세로로 창 나누기)

    • Ctrl+ww : 창 간에 포커스 이동

    • Ctrl+w화살표: 해당 방향 창으로 이동



■ 자동 완성


    • Ctrl+p, Ctrl+n 해당 단어들로 시작하는 것을 추천

    • Ctrl+xo 구조체등에 대한 멤버 추천

    >>멤버 추출 기능 적용 방법

    /usr/include등에서 ctags -R 로 태그 파일을 만들고 .vimrc에 다음을 추가 합니다

    filetype plugin on 

    set tags+=/usr/include/tags 



■ 편집 명령


    • dd : 한줄 잘라내기

    • 숫자dd: 숫자라인 잘라내기

    • x : 문자 1개 삭제(vim은 DEL키도 가능)

    • 숫자x : n개 문자 삭제

    • j : 아래줄을 현재줄 뒤에 붙임

    • yy, 숫자yy : 한줄 또는 숫자라인만큼 복사

    • p : 복사한 라인 아래로 붙여넣기

    • P : 복사한 라인 위로 붙여넣기



■ 검색 및 기타 명령


    • /검색문자열 : 지정한 문자열 검색

    • /g/검색문자열/s//치환문자열/g : 검색문자열을 찾아 치환문자열로 일괄 치환

    • # : 현재 단어 검색

    • n : 검색 다음 단어 찾기

    • K(대문자) : 키워드에 해당하는 매뉴얼 보기

    • u : Undo, 직전 수행 명령 취소

    • Ctrl+r : Redo, 취소 명령 다시 수행

    • . : 직전 명령 반복 수행

    • v : 선택

    • > : 선택 영역 밀어넣기

    • < : 선택영역 당기기

    • = : 선택영역 자동 맞춤

    • :set ai : 자동들여쓰기 설정

    • :set noai : 자동들여쓰기 해제




728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함