새우의 세상사

원문 링크 : 리눅스/유닉스 에디터 'vi' (3) - ex 명령어 익히기


ex 명령어 익히기

ex 명령어의 기본형식

:k,l command m - (범위지정) (명령어) (명령이 수행될 위치)

:k,l command
m
: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줄)씩을, 문서 맨위에 복사하기
  :/pattern/ d pattern 이 들어있는 줄 지우기
  :/pattern/ -nd pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기
  :/pattern/ +nd pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기
  :/p1/, /p2/ d p1 이 들어있는 줄부터, p2 가 들어있는 줄까지 지우기
  :.,/pa/ m 23 현재줄부터 pa 이 들어있는 줄까지, 23번줄 이후로 옮기기
g 옵션 붙이기 :g/pattern 파일전체에서 마지막으로 pattern 이 쓰여진 줄로 가기
  :g/pattern/ p 파일전체에서 pattern 이 있는줄 보여주기
  :g/pattern/ nu 파일전체에서 patterm 이 있는줄을 번호와 함께 보여주기
  :60,124 g/pa/ p 60,124 줄 사이에서 pa 이 들어있는줄 보여주기
저장 및 종료 :w 저장하기
  :q 종료하기
  :wq 저장하고 종료하기
  :x 저장하고 종료하기 (:wq 와 동일)
  :w! 강제로 저장하기 (read-only 로 열었을경우)
  :q! 편집한 내용을 저장하지 않고 종료하기
  :w new_filename new_filename으로 저장하기
  :w %.new 현재파일 이름에 .new 를 붙여서 새로운 파일로 저장
  :230,$ w filename 230 줄부터 끝줄까지 filename으로 저장하기
  :.,580 w filename 현재줄부터 580줄까지 filename으로 저장하기
  :1,10 w new_filename 1줄부터 10줄까지 new_filename으로 저장하기
  :340,$ w >>new_file 340줄부터 끝줄까지 new_file에 추가하기
읽기 :r[ead] 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 읽어들이기
  :/pa/ r /usr/local/data pa 이 존재하는 줄에 /usr/local/data 읽어들이기
다중편집하기 vi file1 file2 file3 :args 편집중인 파일목록 보여주기
  :n[ext] 다음 파일로 넘어가기
  :prev[ious] 이전파일로 돌아가기
  sc/ESC/g BX가 있는줄 찾아서 Esc 를 ESC 로 바꾸
  :% s/editer/editor/g 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기
  :g/editer/ s//editor/g 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과
Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : 리눅스/유닉스 에디터 'vi' (2) - VI 활용


VI 활용

커서 움직이기

글자 단위 이동 k 위쪽으로
  j 아랫쪽으로
  h 왼쪽으로
  l 오른쪽으로
줄 단위 이동 ^ 줄의 맨앞으로 (빈칸무시)
  0 줄의 맨앞으로
  $ 줄의 맨뒤로
  % 짝을 이루는 기호 확인하기
  + 다음줄의 첫번째 글자로
  - 윗줄의 첫번째 글자로
  n| 현재줄의 n 번째 열로 (n은 임의의 숫자)
  H 화면상에 처음줄로
  M 화면상의 중간줄로
  L 화면상의 마지막줄로
  nH 화면상의 처음줄로부터 n 줄 밑으로
  nL 화면상의 마지막줄로부터 n 줄 위로
  G 맨 마지막줄로 (go)
  nG n 번째줄로
  gg 맨 마지막줄로
  ngg n 번째줄로
  n n 번째줄로
단어 단위 이동 w 한단어 오른쪽으로 (word)
  b 한단어 왼쪽으로 (back)
  e 현재 단어의 끝으로 이동 (end)
  E 현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.)
  ) 다음 문장의 시작으로
  ( 이전 문장의 시작으로
  } 다음 문단의 시작으로
  { 이전 문단의 시작으로
  ]] 다음 섹션의 시작으로
  [[ 이전 섹션의 시작으로
화면단위 이동 Control - F 한화면 밑으로 이동
  Control - B 한화면 위로 이동
  Control - D 반쪽화면 밑으로 이동
  Control - U 반쪽화면 위로 이동
  Control - E 커서는 현재위치 그대로 화면만 한줄씩 위로 이동
  Control - Y 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동
  z 커서의 위치와 함께, 화면상의 맨위로
  nz n번 라인을 화면상의 맨위로
  z. 커서의 위치와 함께, 화면상의 중간으로
  z- 커서의 위치와 함께, 화면상의 맨아래로
  ## Control - G 현재 편집문서의 정보 보여주기
  ## Control - L 화면 재표시 (글자가 깨졌을경우)
  ## Control - R 화면 재표시 (글자가 깨졌을경우) 편집하기 복사, 붙이기, 합치기

편집하기

복사, 붙이기,
합치기
y : 복사하기
yy 한줄복사
  2yy 두줄복사
  nyy n줄 복사 (n 은 임의의숫자)
  yw 한단어 복사
  y2w 두단어 복사
  y$ 그줄 끝까지 복사
  y0(y^) 그줄 처음까지 복사
  yG 문서의 끝까지 복사
  Y 한줄복사 (yy 와 동일)
마지막 명령어의
반복
. 마지막에 수행한 명령어를 반복한다.
2. 명령어를 2번 반복한다.
  p : 붙이기
  p 아래로(오른쪽으로) 붙이기
  2p 아래로(오른쪽으로) 두번 붙이기
  P 위로(왼쪽으로) 붙이기
  2P 위로(왼쪽으로) 두번 붙이기
  J : 두줄 합치기
  J 현재줄을 윗줄에 붙이기 (두줄 합치기)
  3J 세줄합치기
지우기, 복구
하기, 바꾸기
d : 지우기
dd 한줄지우기
  2dd 두줄지우기
  ndd n줄지우기 (n 은 임의의숫자)
  dw 한단어 지우기
  d2w 두단어 지우기
  d$ 그줄 끝까지 지우기
  d0(d^) 그줄 처음까지 지우기
  dG 문서 끝까지 지우기
  D 그줄 끝까지 지우기(d$ 와 동일)
  u : 복구하기
  u 한번복구하기
  2u 두번복구하기
  c : 바꾸기
  cc 한줄바꾸기
  2cc 두줄바꾸기
  ncc 여러줄 바꾸기 (n 은 임의의숫자)
  cw 한단어 바꾸기
  ce 한단어 바꾸기 (공백 제외)
  c2w 두단어 바꾸기
  c$ 그줄 끝까지 바꾸기
  c0(c^) 문서 끝까지 바꾸기
  C 그줄 끝까지 바꾸기 (c$ 와 동일)
  r : 한글자 바꾸기
  r 한글자 바꾸기
  2r 두글자 바꾸기 (r 명령어는 insert 모드로 바뀌지 않는다.)
  R : 바꾸면서 덮어 쓰기
  s : )한글자 지우고 insert 모드로 (cl 와 동일)
  - S : 한줄지우고 insert 모드로 (cc 와 동일)
  ~ : 대문자 <-> 소문자 바꾸기 (영문자에만 해당)
  지우기와 바꾸기의 차이점은 바꾸기 명령어 후에 vi 편집모드로 바뀐다.
찾기 /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 라는 단어가 나올때까지 복사하기 편집모드 지정하기
  i : insert 현재커서위치
  10i* * 문자를 10개 집어넣기
  25i=- =- 를 25개 반복하기
  I : 현재커서가 위치한 줄의 맨처음에
  a : append 현재커서위치 바로 다음에
  A : 현재커서가 위치한 줄의 맨끝에
  o : open 현재커서위치 바로 아래줄에
  O : Open 현재커서위치 바로 윗줄에 위치 기억하기
  mx : mark 현재의 커서위치를 x 라는 문자로 기억
  `x : 기억된 x 위치로 이동
  `` : 이동하기 전의 위치로 (제자리)
  'x : 기억된 x 위치의 맨 앞으로 이동
  '' : 이동하기 전 위치의 맨앞으로 이동 버퍼 이용하기
  "xyy : x 라는 이름의 버퍼에 한줄 복사 하기
  "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
잠시 쉬었다
가기
:= 현재 줄번호 보여주기
:/pattern/ = pattern 이 위치한 줄번호 보여주기
Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요

원문 링크 : 리눅스/유닉스 에디터 'vi' (1) - VI 기초 개념 잡기


VI 기초 개념 잡기

커서 움직이기

글자 단위 이동 k 위쪽으로
  j 아랫쪽으로
  h 왼쪽으로
  l 오른쪽으로
줄 단위 이동 ^ 줄의 맨앞으로 (빈칸무시)
  0 줄의 맨앞으로
  $ 줄의 맨뒤로
  % 짝을 이루는 기호 확인하기
  + 다음줄의 첫번째 글자로
  - 윗줄의 첫번째 글자로
  n| 현재줄의 n 번째 열로 (n은 임의의 숫자)
  H 화면상에 처음줄로
  M 화면상의 중간줄로
  L 화면상의 마지막줄로
  nH 화면상의 처음줄로부터 n 줄 밑으로
  nL 화면상의 마지막줄로부터 n 줄 위로
  G 맨 마지막줄로 (go)
  nG n 번째줄로
  gg 맨 마지막줄로
  ngg n 번째줄로
  n n 번째줄로
단어 단위 이동 w 한단어 오른쪽으로 (word)
  b 한단어 왼쪽으로 (back)
  e 현재 단어의 끝으로 이동 (end)
  E 현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.)
  ) 다음 문장의 시작으로
  ( 이전 문장의 시작으로
  } 다음 문단의 시작으로
  { 이전 문단의 시작으로
  ]] 다음 섹션의 시작으로
  [[ 이전 섹션의 시작으로
화면단위 이동 Control - F 한화면 밑으로 이동
  Control - B 한화면 위로 이동
  Control - D 반쪽화면 밑으로 이동
  Control - U 반쪽화면 위로 이동
  Control - E 커서는 현재위치 그대로 화면만 한줄씩 위로 이동
  Control - Y 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동
  z 커서의 위치와 함께, 화면상의 맨위로
  nz n번 라인을 화면상의 맨위로
  z. 커서의 위치와 함께, 화면상의 중간으로
  z- 커서의 위치와 함께, 화면상의 맨아래로
  ## Control - G 현재 편집문서의 정보 보여주기
  ## Control - L 화면 재표시 (글자가 깨졌을경우)
  ## Control - R 화면 재표시 (글자가 깨졌을경우) 편집하기 복사, 붙이기, 합치기

편집하기

복사, 붙이기,
합치기
y : 복사하기
yy 한줄복사
  2yy 두줄복사
  nyy n줄 복사 (n 은 임의의숫자)
  yw 한단어 복사
  y2w 두단어 복사
  y$ 그줄 끝까지 복사
  y0(y^) 그줄 처음까지 복사
  yG 문서의 끝까지 복사
  Y 한줄복사 (yy 와 동일)
마지막 명령어의
반복
. 마지막에 수행한 명령어를 반복한다.
2. 명령어를 2번 반복한다.
  p : 붙이기
  p 아래로(오른쪽으로) 붙이기
  2p 아래로(오른쪽으로) 두번 붙이기
  P 위로(왼쪽으로) 붙이기
  2P 위로(왼쪽으로) 두번 붙이기
  J : 두줄 합치기
  J 현재줄을 윗줄에 붙이기 (두줄 합치기)
  3J 세줄합치기
지우기, 복구
하기, 바꾸기
d : 지우기
dd 한줄지우기
  2dd 두줄지우기
  ndd n줄지우기 (n 은 임의의숫자)
  dw 한단어 지우기
  d2w 두단어 지우기
  d$ 그줄 끝까지 지우기
  d0(d^) 그줄 처음까지 지우기
  dG 문서 끝까지 지우기
  D 그줄 끝까지 지우기(d$ 와 동일)
  u : 복구하기
  u 한번복구하기
  2u 두번복구하기
  c : 바꾸기
  cc 한줄바꾸기
  2cc 두줄바꾸기
  ncc 여러줄 바꾸기 (n 은 임의의숫자)
  cw 한단어 바꾸기
  ce 한단어 바꾸기 (공백 제외)
  c2w 두단어 바꾸기
  c$ 그줄 끝까지 바꾸기
  c0(c^) 문서 끝까지 바꾸기
  C 그줄 끝까지 바꾸기 (c$ 와 동일)
  r : 한글자 바꾸기
  r 한글자 바꾸기
  2r 두글자 바꾸기 (r 명령어는 insert 모드로 바뀌지 않는다.)
  R : 바꾸면서 덮어 쓰기
  s : )한글자 지우고 insert 모드로 (cl 와 동일)
  - S : 한줄지우고 insert 모드로 (cc 와 동일)
  ~ : 대문자 <-> 소문자 바꾸기 (영문자에만 해당)
  지우기와 바꾸기의 차이점은 바꾸기 명령어 후에 vi 편집모드로 바뀐다.
찾기 /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 라는 단어가 나올때까지 복사하기 편집모드 지정하기
  i : insert 현재커서위치
  10i* * 문자를 10개 집어넣기
  25i=- =- 를 25개 반복하기
  I : 현재커서가 위치한 줄의 맨처음에
  a : append 현재커서위치 바로 다음에
  A : 현재커서가 위치한 줄의 맨끝에
  o : open 현재커서위치 바로 아래줄에
  O : Open 현재커서위치 바로 윗줄에 위치 기억하기
  mx : mark 현재의 커서위치를 x 라는 문자로 기억
  `x : 기억된 x 위치로 이동
  `` : 이동하기 전의 위치로 (제자리)
  'x : 기억된 x 위치의 맨 앞으로 이동
  '' : 이동하기 전 위치의 맨앞으로 이동 버퍼 이용하기
  "xyy : x 라는 이름의 버퍼에 한줄 복사 하기
  "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
잠시 쉬었다
가기
:= 현재 줄번호 보여주기
:/pattern/ = pattern 이 위치한 줄번호 보여주기
Posted by 새우날다 Trackback 0 Comment 0

댓글을 달아 주세요