|
Linux - Vi ------------------------------------------------------------------------------------------ ◆ 이동 ------------------------------------------------------------------------------------------ k : 위쪽 j : 아래쪽 h : 왼쪽 l : 오른쪽 G : 화일의 맨끝 ^ : 현재줄의 맨앞 (빈칸무시) 0 : 첫 번째 열로 이동 $ : 현재줄의 맨뒤 % : 대응되는 괄호로 커서 이동 w : 다음 단어 b : 이전 단어 e : 현재 단어의 끝으로 이동 E : 현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.) ) : 다음 문장의 시작으로 ( : 이전 문장의 시작으로 } : 다음 문단의 시작으로 { : 이전 문단의 시작으로 ]] : 다음 섹션의 시작으로 [[ : 이전 섹션의 시작으로 >> : 현재 커서 위치 줄을 오른쪽으로 한 열씩 이동 << : 현재 커서 위치 줄을 왼쪽으로 한 열씩 이동 + : 다음줄의 첫번째 글자로 - : 윗줄의 첫번째 글자로 n| : 현재줄의 n 번째 열로 (n은 임의의 숫자) H : 화면상에 처음줄로 M : 화면상의 중간줄로 L : 화면상의 마지막줄로 nH : 화면상의 처음줄로부터 n 줄 밑으로 nL : 화면상의 마지막줄로부터 n 줄 위로 G : 맨 마지막줄로 (go) nG : n 번째줄로 gg : 맨 마지막줄로 ngg : n 번째줄로 :n : n 번째줄로 Ctrl - f : 한 화면 밑으로 이동 Ctrl - b : 한 화면 위로 이동 Ctrl - d : 반쪽 화면 밑으로 이동 Ctrl - u : 반쪽 화면 위로 이동 Ctrl - e : 커서는 현재위치 그대로 화면만 한줄씩 위로 이동 Ctrl - y : 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동 z : 커서의 위치와 함께, 화면상의 맨위로 nz : n번 라인을 화면상의 맨위로 z. : 커서의 위치와 함께, 화면상의 중간으로 z- : 커서의 위치와 함께, 화면상의 맨아래로 ------------------------------------------------------------------------------------------ ◆ 편집 ------------------------------------------------------------------------------------------
▶ 편집모드 지정하기 i : 현재 커서 위치에 입력 I : 현재 커서 위치 줄의 맨 앞에 입력 a : 현재 커서 위치 다음에 입력 A : 현재 커서 위치 줄의 맨 끝에 입력 o : 현재 줄 아래에 새 줄 입력 O : 현재 줄 위에 새 줄 입력 10i* : * 문자를 10개 집어넣기 25i=- : =- 를 25개 반복하기 ▶ 복사, 붙이기, 합치기 y : 복사 yy : 한 줄을 복사 (0y$와 동일) 2yy : 두줄복사 nyy : n줄 복사 yh : 커서 왼쪽 문자 복사 yl : 커서에 있는 문자 복사 yb : 커서 왼쪽 단어 복사 yw : 커서 오른쪽 단어 복사 yB : 커서 왼쪽 비공백 단어 복사 yW : 커서 오른쪽 비공백 단어 복사 yw : 한단어 복사 y2w : 두단어 복사 y$ : 커서부터 줄의 끝까지 복사 y0(y^) : 커서 왼쪽부터 줄의 처음까지 복사 yG : 문서의 끝까지 복사 Y : yy 와 동일 p : 복사한 문자를 커서 오른쪽 또는 아래줄에 붙여넣기 P : 복사한 문자를 커서 왼쪽 또는 윗 줄에 붙여넣기 2p : 아래로(오른쪽으로) 두번 붙이기 2P : 위로(왼쪽으로) 두번 붙이기 J : 현재 커서 위치 줄과 다음 줄을 합침 3J : 세줄합치기 Shift+v : block 지정하기 ▶ 지우기, 복구하기, 바꾸기 r : 현재 커서 위치 문자를 다른 문자로 변경 (replace) R : 현재 커서 위치부터 원하는 만큼 다른 문자로 변경 2r : 두글자 바꾸기 - r 명령어는 insert 모드로 바뀌지 않는다. x : 커서에 있는 문자 삭제 (dh와 동일) X : 커서 왼쪽 문자 삭제 (dl과 동일) d : 삭제 dd : 한줄을 삭제 (0d$와 동일) 2dd : 두줄 삭제 ndd : n줄 삭제 db : 커서 왼쪽 단어 삭제 dw : 커서 오른쪽 단어 삭제 dB : 커서 왼쪽 비공백 단어 삭제 dW : 커서 오른쪽 비공백 단어 삭제 d$, D : 커서부터 줄의 끝까지 삭제 d0 : 커서 왼쪽부터 줄의 처음까지 삭제 d2w : 두단어 삭제 dG : 문서 끝까지 삭제 u : (Undo) 실행취소 U : 현재 줄에서 실행한 모든 vi 명령모드 명령어 취소 2u : 두번 실행취소 c : (Change) 바꾸기 cc, S : 한 줄을 변경 (0c$와 동일) 2cc : 두줄 바꾸기 cb : 커서 왼쪽 단어 변경 cw : 커서 오른쪽 단어 변경 ch : 커서 왼쪽 문자 변경 cl, s : 커서에 있는 문자 변경 ncc : 여러줄 바꾸기 (n 은 임의의숫자) ce : 한단어 바꾸기 (공백 제외) c2w : 두단어 바꾸기 c$, C : 커서부터 줄의 끝까지 변경 c0(c^) : 커서 왼쪽부터 줄의 처음까지 변경 ~ : 대문자 <-> 소문자 바꾸기 (영문자에만 해당) # 지우기와 바꾸기의 차이점은 바꾸기 명령어 후에 vi 편집모드로 바뀐다. ▶ 버퍼 이용하기 "xyy : x 라는 이름의 버퍼에 한줄 복사 하기 "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기 ▶ ex 명령어 # ex 명령어의 기본형식 :k,l command m (범위지정) (명령어) (명령이 수행될 위치) ---------------------------------------- command - co : 복사 - m : 이동 - d : 삭제 :1,10 co 50 : 1~10 줄까지 50 줄 이후로 복사 :34,50 d : 34~50 줄까지 삭제 :100,150 m 10 : 100~150 줄까지 10 줄 이후로 이동 :.,$ d : 현재줄부터 끝까지 삭제 :.,+20 co -4 : 현재줄부터 20줄을, 4줄 위에 복사 :-,+ t 0 : 위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사 :g/pattern : 화일전체에서 마지막으로 pattern 이 쓰여진 줄로 커서이동 :g/pattern/ p : 화일전체에서 pattern 이 있는줄 표시 :g/pattern/ nu : 화일전체에서 patterm 이 있는줄을 번호와 함께 표시 :60,124 g/pattern/ p : 60,124 줄 사이에서 pattern 이 들어있는줄 표시 :/pattern/ d : pattern 이 들어있는 줄 삭제 :/pattern/ -nd : pattern 이 들어있는 줄로부터 n 번째 윗줄 삭제 :/pattern/ +nd : pattern 이 들어있는 줄로부터 n 번째 아랫줄 삭제 :/pattern1/,/pattern2/ d : pattern1 이 들어있는 줄부터, pattern2 가 들어있는 줄까지 삭제 :.,/pattern/ m 23 : 현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이후로 이동 ▶ 다중편집하기 shell> vi file1 file2 file3 :args : 편집중인 화일목록 보여주기 :n : 다음 화일로 넘어가기 :prev : 이전화일로 돌아가기 - 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다. :e file_name : 새로운 file_name 편집 :e! : 현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집 ▶ 마지막 명령어의 반복 . : 마지막에 수행한 명령어를 반복 2. : 명령어를 2번 반복 ------------------------------------------------------------------------------------------ ◆ 검색 및 치환 ------------------------------------------------------------------------------------------
▶ 찾기 /pattern : pattern 이라는 단어 찾기 (아래로) ?pattern : pattern 라는 단어찾기 (위로) / : 찾기반복 - 아래로 ? : 찾기반복 - 위로 n : 같은 방향으로 계속 찾기 N : 반대 방향으로 계속 찾기 fx : 현재줄에서 x문자 찾기 (x 는 한개의 글자) Fx : 현재줄에서 반대방향으로 x문자 찾기 (x 는 한개의 글자) tx : 현재줄에서 x문자를 찾아서 바로전에 커서놓기 Tx : 현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기 ; : 현재줄에서 한글자 찾기반복 ' : 현재줄에서 한글자 찾기반복 (반대방향으로) ▶ 찾기와 편집명령의 응용 d/simple : simple 이라는 단어가 나올때까지 삭제 d/^scully: 줄의 맨앞에 scully 라는 단어가 나올때까지 삭제 y/yahoo : yahoo 라는 단어가 나올때까지 복사 ▶ 치환 :m,n : s/old/new/g :g/pattern/ : s/old/new/g :1,30 s/his/the/gc : 1 줄부터 30 줄까지 his 를 the 로 바꾸면서 확인 :g/BX/ s/Esc/ESC/g : BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기 :% s/editer/editor/g : 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기 :g/editer/ s//editor/g : 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과) ------------------------------------------------------------------------------------------ ◆ 기타 ------------------------------------------------------------------------------------------
Ctrl - g : 파일이름, 현재 줄 번호, 열 번호 등의 정보 표시 Ctrl - l : 화면 재표시 Ctrl - r : 화면 재표시 ▶ 저장 및 종료하기 :w : 저장 :q : 종료 :wq : 저장 후 종료 :x : wq 와 동일 :w! : 강제 저장 (read-only 로 열었을경우) :q! : 강제 종료 (저장하지 않음) :w new_file_name : 새 파일이름으로 저장 :w %.new : 현재화일 이름에 .new 를 붙여서 새로운 화일로 저장 :230,$ w file_name : 230 줄부터 끝줄까지 file_name 으로 저장 :.,600 w file_name : 현재줄부터 600줄까지 file_name 으로 저장 :1,10 w new_file : 1줄부터 10줄까지 new_file 로 저장 :340,$ w >> new_file : 340줄부터 끝줄까지 new_file 에 추가 ▶ 정규식 . : 임의의 한글자 * : 0 개 이상의 글자 ^ : 줄의 시작 $ : 줄의 끝 % : 처음줄부터 끝줄까지 : 이스케이프 [ ] : 번위지정 [a-z] : a ~ z [A-Z] : A ~ Z [AB] : A or B [0-9] : 0 ~ 9 ▶ 환경설정 :set nu : 줄번호 표시 :set nonu : 줄번호 표시안함 := : 현재 줄번호 표시 :/pattern/ = : pattern 이 위치한 줄번호 표시 :set tabstop : 탭의 크기 :set showmode : 현재의 mode 상태를 알려줌 ▶ 위치 기억하기 mx : mark 현재의 커서위치를 x 라는 문자로 기억 `x : 기억된 x 위치로 이동 `` : 이동하기 전의 위치로 (제자리) 'x : 기억된 x 위치의 맨 앞으로 이동 '' : 이동하기 전 위치의 맨앞으로 이동 ▶ 읽기 :r filename : 현재위치에 filename 읽어들이기 :r /usr/local/data : 현재위치에 /usr/local/data 읽어들이기 :185 r /usr/local/data : 185줄 이후에 /usr/local/data 읽어들이기 :$ r /usr/local/data : 맨끝줄 이후에 /usr/local/data 읽어들이기 :0 r /usr/local/data : 맨윗줄에 /usr/local/data 읽어들이기 :/pattern/ r /usr/local/data : pattern 이 존재하는 줄에 /usr/local/data 읽어들이기 |