내용으로 건너뛰기
GaramX
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
home
»
linux
»
vi
추적:
•
spring
linux:vi
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
===== VI Editor ===== 신규하님의 블로그에서 가져왔습니다. (http://gyuha.tistory.com/157) [[linux:vi:image|vi명령어 이미지 모음]] vi와 Vim의 가장 큰 차이점은, Vim은 에디터에서 화살표 방향키로 커서의 이동이 되지만 vi는 이 방법으로는 커서의 이동이 되지 않는다는 것이다. 순수하게 vi만 설치되어 있다면 화살표 방향키가 아닌 h, j, k ,l로 커서를 이동할 수 있다. ==== .exrc 설정 ==== .exrc는 vi설정 파일이다. .exrc에서는 vi를 사용해 문서를 편집하는 경우 exrc에서 설정된 값을 불러오면서 사용된다. <code bash .exrc> set number --> 라인수표시 set ts=4 --> Tab set ai --> Auto Indent </code> $ source .exrc 해주거나, terminal을 닫고 다시 실행시키면 바뀐 tab size 설정이 적용된다. ==== utf-8 설정 ==== 파일의 기본 encoding설정하기 <code bash /etc/vim/vimrc.local> set encoding=utf-8 set fileencodings=utf-8,cp949 </code> ==== color 설정 ==== vi의 컬러설정 <code bash .vimrc> filetype plugin indent on set term=xterm-256color syntax on </code> set term=xterm-256color ===== VIM 명령어 정리 ===== ==== 저장 및 종료 ==== :w [저장] :w file.txt [file.txt파일로 저장] :q [vi 종료] :q! [vi 강제종료] ZZ [저장 후 종료] :wq! [강제 저장 후 종료] :e file.txt [file.txt파일을 불러옴] :e [현재 파일을 불러옴] :e# [바로 이전에 열었던 파일을 불러 옴] ==== 입력모드전환 ==== a [커서의 위치 다음칸부터 입력], A [커서 행의 맨 마지막부터 입력] i [커서의 위치에 입력], I [커서 행의 맨 앞에서 부터 입력] o [커서의 다음행에 입력], O [커서의 이전 행에 입력] s [커서 위치의 한글자를 지우고 입력], cc [커서위치의 한 행을 지우고 입력] ==== 이동 ==== <code> h [왼쪽], j [아래], k [위], l [오른쪽] w or W [다음 단어의 첫 글자로 이동] b or B [이전 단어의 첫 글자로 이동] e or E [단어의 마지막 글자로 이동] <CR> [다음 행 첫 첫 글자로 이동] ^ [그 행의 첫 글자로 이동], $ [그 행의 마지막글자로 이동] + [다음 행의 첫 글자로 이동], - [위 행의 첫 글자로 이동] ( [이전 문장의 첫 글자로 이동], ) [다음 문장의 첫 글자로 이동] { [이전 문단으로 이동], } [다음 문단으로 이동] H [커서를 화면 맨 위로 이동], z<CR> [현재 행을 화면의 맨우로 이동] M [커서를 화면 중앙으로 이동], z. [현재 행을 화면의 중앙으로 이동] L [커서를 화면 최하단으로 이동], z- [현재 행의 화면의 최하단으로 이동] [n]H [커서를 위에서 n행으로 이동], [n]L [커서를 아래에서 n행으로 이동 ctrl+u [반 화면 위로 스크롤], ctrl+d [반 화면 아래로 스크롤] ctrl+b [한 화면 위로 스크롤], ctrl+f [한 화면 아래로 스크롤] gg or 1G [문서의 맨 처음으로 이동], G [문서의 맨 마지막 행으로 이동] [n]G or :[n] [n행으로 이동] </code> ==== 삭제 ==== x or dl [커서 위치의 글자 삭제], X or dh [커서 바로 앞의 글자 삭제] dw [현재 위치부터 스페이스까지 삭제], diw [현재 위치에 있는 단어 삭제] dd [커서가 있는 행을 삭제], [n]dd [현재 커서부터 아래 n번째 줄까지 삭제] dj [현재 커서와 아래 줄 삭제], [n]dj [현재 커서 부터 아래 n+1번째 줄까지 삭제] dk [현재 커서와 윗 줄 삭제], [n]dk [현재 커서와 위로 n+1번째 줄까지 삭제] D or d$ [현재 커서가 있는 위치부터 행 끝까지 삭제] d0 or d^ [현재 커서가 있는 위치부터 행 시작까지 삭제] ==== 복사 & 붙여넣기 ==== yy or Y [커서가 있는 한 행 복사] [n]yy or [n]Y [커서가 있는 n행 복사] p [현재 커서에 붙여 넣기, 행 복사일 경우 아래 줄에 붙여넣음] [n]p [n번 만큼 붙여넣기 반복] P [현재 커서위치의 앞행에 붙여 넣기,행 복사일 경우 윗 줄에 붙여넣음] ==== 텍스트 변경 명령어 ==== cw 단어 변경 cc 행 변경 C 커서 오른쪽의 행 변경 s 커서가 위치한 문자열 대체 S 커서가 위치한 라인의 문자열 대체 r 커서 위치 문자를 다른 문자로 대체 r-Enter 행 분리 J 현재 행과 아래 행 결합 xp 커서 위치 문자와 오른쪽 문자 교환 ~ 문자형(대, 소문자) 변경 u 이전 명령 취소 U 행 변경 사항 취소, 이전의 최종 행 취소 . 이전 최종 명령 반복 ==== 블럭지정 ==== == 블럭 지정 == v [블럭 지정], V [줄단위 블럭 지정] ctrl+v(윈도우에서는 ctrl+q) [비쥬얼 블럭 지정] == 블럭 지정중명령 == y [블럭 복사 하기] r [치환] d [지정 블럭 지우기] u [소문자로 바꾸기], U [대문자로 바꾸기] ~ [대소문자 전환] J [행 합침] : [선택 영역에 대하여 ex명령] < [행 앞에 탭 제거] > [행 앞에 탭 삽입] ==== 문자열 탐색 및 치환 ==== /[문자열] [문자열 탐색] :s/old/new [현재 행의 처음 old를 new로 교체] :s/old/new/g [현재 행의 모든 old를 new로 교체] :10,20s/old/new/g [10행부터 20행까지 모든 old를 new로 교체] [블럭지정중]:s/old/new/g [지정 블럭 내에서 모든 old를 new로 교체] :-3,+4s/old/new/g [현재 커서 위치에서 위로 3행 아래로 4행까지의 old를 new로 교체 :%s/old/new/g [문서 전체에서 old를 new로 교체] :%s/old/new/gc [문서 전체에서 old를 new로 확인하며 교체] :g/pattern/s/old/new/g [pattern이 있는 모든 행의 old를 new로 교체] ==== vim 정규 표현식 ==== ^ [행의 첫 문자([]안에서는 not의 의미) $ [행의 끝] . [아무 문자나 한 문자 의미] \| [or의 의미] [] [[]사이의 문자 중 하나] \{min, max\} [min이상 max이하 반복됨] * [앞의 내용이 0번 이상 반복됨] \+ [앞의 내용이 1번 이상 반복됨] \< [단어의 시작] \> [단어의 끝] \n [새 행 문자] \t [탭 문자] vim 확장 정규 표현 문자열 \i 변수 지정에 사용되는 문자들 [0-9A-Za-z] \I \i와 같지만 숫자는 제외 \k keyword로 사용하는 문자 [_\.\-0-9A0Za-z] \f 파일 이름으로 사용하는 문자 \p 프린트 가능한 문자 \P \p와 같지만 숫자는 제외 \s whitespace character(공백과 탭) \S non-whitespace character \d 숫자 [0-9] \D 숫자가 아닌 문자 [^0-9] \x 16진수 숫자 [0-9A-Fa-f] \X 16진수 숫자가 아닌 문자 [^0-9A-Fa-f] \o 8진수 숫자 [0-7] \O 8진수 숫자가 아닌 문자 [^0-7] \w 영문 단어의 시작에 사용되는 문자 [0-9A-Za-z-] \W 영문 단어에서 사용되지 않는 문자 [^0-9A-Za-z-] \h 영문 단어의 시작에 사용되는 문자 [A-Za-z-] \H 영문 단어의 시작에 사용 되지 않는 문자 [^A-Za-z-] \a 모든 알파벳 [A-Za-z] \A 알파벳이 아닌 문자 [^A-Za-z] \l 소문자 [a-z] \L 소문자가 아닌 문자 [a-z] \u 대문자 [A-Z] \U 대문자가 아닌 문자 [^A-Z] \e Esc \t Tab \r 캐리지 리턴 \b 백스페이스 \n 새 행 ==== POSIX 문자 클래스 ==== [:alnum:] 알파벳과 숫자 [A-Za-z0-9] [:alpha:] 알파벳 [A-Za-z] [:cntrl:] 제어 문자 [:blank:] 탭과 공백 문자 [:digit:] 숫자 [0-9] [:graph:] 제어문자와 공백 문자를 제외한 문자 [:lower:] 소문자 [a-z] [:upper:] 대문자 [A-Z] [:print:] 제어문자를 제외한 문자, 즉 프린터 할 수 있는 문자 [:punct:] [:graph:]문자 중 [:alnum:]을 제외한 문자. ex)!,@,#,$,%,^.... [:space:] 화이트스페이스 ex)공백, 탭, 케리지 리턴, 새행, 수직탭, 폼필드 [:xdigit:] 16진수 ==== 파일 버퍼 ==== :files or :ls or :buffers 버퍼 목록 나열 :b[n] n번 버퍼로 이동 :bd[n] or :bw[n] n번 버퍼를 삭제 (n이 없으면 현재의 버퍼를 삭제) :bp[n] 이전 버퍼로 이동,n을 붙이면 n번만큼 이전 버퍼로 이동 :bn[n] 이후 버퍼로 이동,n을 붙이면 n번만큼 이후 버퍼로 이동 :sb[n] 창을 수평분할 하여 n번 버퍼를 로드 :bf 첫 번째 버퍼로 이동 :bl 마지막 버퍼로 이동 ==== Tab ( vim7.0부터 추가된 기능 ) ==== :tabnew 새로운 탭을 열기 :tabnew b.txt b.txt가 존재하면 열고, 없으면 새로 만들어서 연다 :tabf b.txt b.txt가 존재하면 열고, 없으면 에러 발생 :tabn[n] 다음 탭을 열기,n을 붙이면 n번 만큼 이동 :tabp[n] 이전 탭을 열기,n을 붙이면 n번 만큼 이동 :tabs 탭 목록 보기 :tabclose 탭을 닫기 :tabfirst 첫번째 탭을 열기 :tablast 마지막 탭을 열기 :tabdo %s/old/new/g 모든 탭에 적용을 원할 때 (예 모든탭에서 old를 new로 변경) ==== 다중 창 관련 명령 ==== == 창생성 == CTRL-W s :[N]sp[plit] 현재 파일을 두 개의 수평 창으로 나눔 CTRL-W v :[N]vs[plit] 현재 파일을 두 개의 수직 창으로 나눔 CTRL-W n :new 새로운 수평 창 생성 CTRL-W ^ 또는 CTRL-W CTRL-^ 수평 창으로 나누고 이전 파일의 오픈 CTRL-W f 창을 수평으로 나누고 커서 위치의 파일 오픈 CTRL-W i 커서 위치의 단어가 정의된 파일을 오픈 == 창삭제 == CTRL-W q :q[uit]! 현재 커서의 창을 종료 CTRL-W c :close 현재 커서의 창 닫기 CTRL-W o :on[ly] 현재 커서의 창만 남기고 모든 창 삭제 == 창이동 == CTRL-W h 왼쪽 창으로 커서 이동 CTRL-W j 아래쪽 창으로 커서 이동 CTRL-W k 위쪽 창으로 커서 이동 CTRL-W l 오른쪽 창으로 커서 이동 CTRL-W w 창을 순차적으로 이동 CTRL-W p 가장 최근에 이동한 방향으로 이동 CTRL-W t 최상위 창으로 이동 CTRL-W b 최하위 창으로 이동 == 창이동 == CTRL-W r 순착으로 창의 위치를 순환 CTRL-W x 이전 창과 위치를 바꿈 CTRL-W H 현재창을 왼쪽 큰화면으로 이동 CTRL-W J 현재창을 아래쪽 큰화면으로 이동 CTRL-W K 현재창을 위쪽 큰화면으로 이동 CTRL-W L 현재창을 오른쪽 큰화면으로 이동 == 창 크기 조정 == CTRL-W = 창의 크기를 모두 균등하게 함 CTRL-W _ 수평 분할에서 창의 크기를 최대화 CTRL-W | 수직 분할에서 창의 크기를 최대화 CTRL-W [N]+ :res[ize] +N 창의 크기를 N행 만큼 증가 CTRL-W [N]- :res[ize] -N 창의 크기를 N행 만큼 감소 CTRL-W [N]> 창의 크기를 오른쪽으로 N칸 만큼 증가 CTRL-W [N]< 창의 크기를 오른쪽으로 N칸 만큼 감소 == 기타 == 다중창 사용의 경우 대부분 붙여서 사용하는 명령어는 CTRL을 같이 눌러도 똑같은 역활을 하는 경우가 많다. 예) CTRL-W j 는 CTRL-W CTRL-J와 같다. ==== 마킹 및 마킹위치로 이동 ==== m[a-z0-9] 파일내에서 마킹, 현재 버퍼내에서만 이동 함 예)ma m[A-Z] 전체영역에서 마킹, 다른 파일로도 이동 함. `[A-Za-z0-9] 마킹된 위치로 돌아감 예)`a ’[A-Za-z0-9] 마킹된 행의 처으으로 이동함. 예)‘a ” 직전에 커서가 위치하던 행의 처음 `` 직전의 커서 위치로 이동 ’” 이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 행의 처음으로 이동 `" 이전에 vim으로 현재 파일을 닫았을 때 커서가 있던 위치로 이동
linux/vi.txt
· 마지막으로 수정됨: 2025/04/15 10:05 저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로