ide/vim

VI

C/H 2006. 9. 22. 02:50

Vim




열기, 저장, 종료

  • vi filename : vi 로 filename 오픈
  • :e filename : filename 오픈
    :e ./ : 파일탐색기
  • :q : 종료
  • :q! : 강제 종료
  • :w : 저장
  • :w! : 강제 저장
  • :wq : 저장 후 종료
    ZZ : 자장 후 종료
  • :f : 작업중인 파일정보(파일이름, 라인수)
    Ctrl+G
  • Ctrl+L : 화면갱신
    Ctrl+R : Redraw 화면갱신

탭 메뉴 

https://kldp.org/node/112716
  • vim -p a.txt b.txt c.txt
    탭으로 열기
  • vim -p3
    이름없는 파일로 탭 3개가 열린다.
  • :tabnew d.txt
    새탭으로 파일 열기
  • :tabn
    앞쪽으로 탭창이동 
  • :tabp
    뒤탭으로 이동
  • :tabfirst  :tabfir 
    첫번째 탭창 
  • :tablast :tabla
    마지막 탭창

커서이동

  • k : 위
  • j : 아래
  • h : 왼쪽
  • l : 오른쪽(소문자 L)
  • e : 다음단어 마지막으로 이동
  • E : 공백으로 구분한 다음단어 마지막으로 이동
  • b : 한단어 뒤로 이동
  • B : 공백으로 구분한 이전단어로 이동
  • w : 한단어 앞으로 이동
  • W : 공백으로 구분한 다음단어로 이동
  • ) : 다음 문장 처음으로 이동
  • ( : 이전 문장 마지막으로 이동
  • } : 다음 문단 처음으로 이동
  • { : 이전 문단 마지막으로 이동
  • ]] : 다음 섹션 처음으로 이동
  • [[ : 이전 섹션 마지막으로 이동
  • $ : 라인 마지막으로 이동
  • ^ : 라인 처음으로 이동
  • M : 화면 중간으로 이동
  • L : 화면 마지막으로 이동
  • Ctrl+f : forward 다음 페이지 이동
  • Ctrl+b : Backword 이전 페이지 이동
  • Ctrl+d : Down 반쪽 다음 페이지 이동
  • Ctrl+u : Up 반쪽 이전 페이지 이동
  • [{ : 괄호 처음으로 이동
  • ]} : 괄호 마지막으로 이동
  • % : 일치하는 괄호 찾기, {와 }를 찾는다.
  • - : 전라인 시작으로 이동
  • <라인>G : <라인>으로 이동
    :<라인> : <라인>으로 이동
  • G : 문서 마지막 라인으로 이동
  • gg : 문서 처음으로 이동
  • << : tab 안으로 밀기, 들여쓰기
  • >> : tab 밖으로 밀기, 내여쓰기
  • <횟수><< : <횟수>만큼tab 안으로 밀기
  • <횟수>>> : <횟수>만큼tab밖으로 밀기
  • H : Home 화면 처음으로 이동
  • <줄>H : 화면처음부터 <줄>밑으로 이동
  • M : Middle 화면 중간으로 이동
  • L : Last 화면 마지막으로 이동
  • <줄>L : 화면 마지막줄에서 <줄>위로 이동
  • z : 커서위치를 화면처음으로 변경 
  • <라인>z : <라인>라인을 화면처음으로 변경
  • z- : 커서위치를 화면 마지막으로 변경
  • <라인>z- : <라인>라인을 화면 마지막으로 변경

편집모드

  • a : 커서뒤에 입력A : 라인끝에 입력
  • i : 커서앞에 입력I : 라인시작 입력
  • o : 라인아래 입력O : 라인위에 입력
  • :set ft=php : 파일타입을 PHP로 설정
  • :syntax on : 구문설정

편집 - 바꾸기

  • r : 문자바꾸기
  • R : 한문자씩 덮어씀
  • s : 한문자삭제 후 입력모드
  • S : 한줄삭제 후 입력모드
  • c} : 문단 나머지 바꾸기
  • \c) : 문장나머지 바꾸기
  • cG : 파일 나머지 바꾸기
  • cL : 화면 나머지 바꾸기
  • ~ : 문자형(대.소문자)변경

편집 - 삭제

  • x : 커서가 있는문자
  • X : 커서앞문자
  • dw : 커서가 있는 단어
  • db : 커서 앞단어
  • dd : 커서위치 한줄지우기
  • D : 커서위치에서 라인 나머지 삭제
  • d} : 커서위치에서 문단 나머지
  • d) : 커서위치에서 문장 나머지
  • dG : 커서위치에서 파일 나머지
  • dL : 커서위치에서 화면 나머지
  • :<라인>d : <라인>라인 삭제
  • :<라인>, <라인>d : 범위 삭제

편집 - 복사

  • yw : 커서가 있는 단어
  • yb : 커서가 있는 앞 단어
  • y : 특정 텍스트
  • yy : 커서가 있는 라인전체
    Y
  • y$ : 커서 위치에서 줄 마지막 끼지 복사
  • y} : 커서 위치에서 문단 나머지 복사
  • y) : 커서 위치에서 문자 나머지 복사
  • yG : 파일 나머지
  • "xyy : x이름 버퍼로 한줄 복사
  • p : 아래로 붙여 넣기 자
  • <횟수>p : <횟수>만큼 내용 아래로 붙여넣기
  • P : 위로 붙여넣기
  • <횟수>P : <횟수>만큼 내용 위로 붙여넣기
  • "xp : x이름 버퍼 붙여넣기
  • v : 블럭선택
  • V : 라인단위블럭선택
  • Ctrl+v : 세로블럭선택
  • u :실행취소 : Undo
  • Ctrl+r : 재실행 Redo
  • U : 행 변경 사항 취소
  • :u : 이전의 최종 행 취소
  • . : 이전 최종 명령 반복
  • ctrl-p or ctrl-n : 변수명, 함수명 자동완성

검색

  • /pattern : 텍스트 다음검색
  • ?pattern : 텍스트 이전검색
  • n : 앞/뒤로 이전검색 반복
  • N : 반대방향으로 이전검색 반복
  • / : 전검색을 앞으로 반복
  • ? : 전검색을 뒤로 반복
  • :3,5m9 or :3,5 m 9 : 3라인부터 5번라인까지 9번라인 뒤로 이동
  • :3,5t9 or :3,5 co 9 : 3라인부터 5번라인까지 9번라인 뒤로 복사
  • :7"aY : 7개의 라인을 a버퍼에 기억
  • :ap : ㅓ a버퍼내용을 현재라인 뒤에 붙이기
  • fpattern : 현재줄 다음찾기
  • Fpattern : 현재줄 이전찾기
  • tpattern : 현재줄 다음찾고 커서를 바로전에 위치시킴
  • Tpattern: 현재줄 이전찾고 커서를 바로후에 위치시킴
  • ; : 현재줄 다음찾기 반복
  • ' : 현재줄 이전찾기 반복

문자열 치환,교체

  • :s/old/new
  • :s/old/new/g : 커서가위치한 라인에서 문자교체
  • :3,9s/old/new : 일정범위 (3라인에서 9라인사이) 교체
  • :3,9s/old/new/g
  • :(.)s/delete// : 특정문자열삭제
  • :s/deleted//
  • :s/deleted//g
  • :1,$s/old/new/g : 파일내 모든 문자열 교체
  • J : Join 현재라인과 다름라인을 합친다.
  • <숫자>J : <숫자>만큼 라인을 합친다.

치환

  • :/pattern/replace/ : 현재 줄의 치환
  • :lines/pattern/replace/ : 지정한 줄의 치환
  • :line,lines/pattern/replace/ : 지정한 범위의 치환
  • :%s/pattern/replace/(g|i|c) : 모든 줄의 치환
    g(global) 모두 변경
    i(igore case) 대소문자 구분하지 않음
    c(confirm) 변경시 사용자 변경여부 확인
  • :reg : 내부 레지스터 확인
  • :set number : 라인번호 표시
  • :set nu-> 라인번호 표시
  • :set nonu : 라인번호 없애기
  • :ls or buffers or files-> 열려있는 화일 보기
  • :b(파일번호) : 파일번호에 해당 파일 보기
  • :bp(점프횟수) : 현재 파일에서 점프횟수 만큼 앞의 파일로 전환
  • :bn(점프횟수) : 현재 파일에서 점프횟수 만큼 뒤의 파일로 전환
  • :bf : 첫번째 파일로 전환
  • :bl : 마지막 파일로 전환
  • :al : 현재 열려 있는 모든 버퍼의 파일을 수평분활 창에 로드

창분할

  • ctrl+w n : 수평 분활창 만들기
  • ctrl+w v : 수직 분활창 만들기
  • Ctrl+w q : 분활창 닫기
  • Ctrl+w w : 분활창간 이동
  • Ctrl+o : 현제창만 남겨놓고 모두 닫기
  • Ctrl+w <방향키>: 두개의 창 사이를 방향키의 방향으로 이동
  • Ctrl+w +: 창 크게
    Ctrl+w <크기>+ : <크기>만큼 크게
  • Ctrl+w - :창 작게
    Ctrl+w <크기>- : <크기>만큼 작게
  • Ctrl+w = : 열려있는 창들의 크기를 모두 같게
  • Ctrl+w _ : 수평분할 창의 크기 최대화
  • Ctrl+w | : 수직분할 창의 크기 최대화
  • Ctrl+w c or Ctrl+w _ : 현재창 닫기

창분할 2

  • Ctrl+w f : 커서가 위치한 헤더파일을 창분할로 연다.

 창 높이설정

  • :vs <파일명>:세로로 창 나누어 파일열기
  • :sp <파일명>:가로로 창 나누어 파일열기
  • :30vs ./ : 왼쪽에 파일 탐색기 열기 <탐색기에 대한 도움말=?>
  • zf : fold - 한줄로 접기 ex) :23,29zf
    블럭 설정후 zf로 폴딩접기
  • zo : fold - 펴기
    폴딩된 영역에서 zo 폴딩 접기
  • O : 탐색기 파일 열기
  • ctrl-6 or :e# : 열어봤던 이전파일 열기
  • :help split창 나누기에 대한 도움말

위치마킹

  • :marks : 현제마킹된 지점확인
    ~/.viminfo 파일에서 자동으로 지정한 0~9를 확인 가능
  • m(a-z) : 지역마킹, 한 파일 내에서의 마킹
  • m(A-Z) : 전역마팅, 여러 파일에서의 마킹 
  • `(a-z or A-Z) : 마킹 지점으로의 이동 
  • `` : 이동전 위치로(제자리로)

^M문자 없애기

이 문자는 ^M은 ^+M이 아니라 Control+v+m 입니다. 따라서, 다음에 이 문자를 없앨 때도 이렇게 타이핑을 하도록 합니다.
  • :%s/^M//g
    :%s/[Control]+v+m을 누른다.//g

tab 조정

  • :set ts=4

파일포맷변경

  • :set fileformat=unix : ^M 없애기
  • :set ff=unix : ^M 없애기
  • :set ff=dos : ^M 붙이기
  • :set textmode : ^M 붙이기
  • 변경후 저장할것 :wq

열려있는 파일보기

  • :marks
    원래는 a-z,A-Z,0-9까지의 마크를 각각의 문서에 대해 할수 있는기능
    그냥 marks라고 하면 기본적으로 vim이 저장하는 최근 10개 문서(0-9마크)를 보여줌
    이동은 `0 또는 `3

  • :args
    명령행 인자로 여러개의 파일을 열었을 경우, 이들을 보여주고, 문서간 이동시 편리(:N , :n)

  • :ls
    현재 열려있는 버퍼들을 확인
    편집중에 다른 화일들을 여러개 연경우, 이미 열린화일을 찾기 쉽게 함.
    이동은 :b1 또는 :b3 등으로.

  • :!(쉘명령어) : 쉘명령어를 수행한다
  • :!bash : 쉘로 나간다(종료시 exit)
  • :r!(쉘명령어) : 쉘명령어 수행결과를 edit화면에 붙여 넣는다 

파일을 파일로 삽입

  • :r filename : 커서 다음에 파일 삽입
  • :34 r filename : 파일을 34번째 행 다음에 삽입

원격 접근

  • vim scp://remoteuser@server.tld//path/to/document 
  • vim ftp://stankonia@domainname.com:6090/public_html/index.html

위의 팁들을 이용하여 .vimrc에 키매핑...map

  • <f1>K 
    도움말 보기
  • map :25vs ./:set nonu 
    탐색기 열기
  • map O^Ww
    탐색기 안에서 파일 열기
  • map ^6
    이전에 열었던 파일 열기
  • map v%zf
    폴딩 - 함수 접기(함수의 { 위치에서 F5를 눌러야 함)
  • map zo
    폴딩한 것 다시 풀기
  • map :marks
    최근에 열었던 파일 보기
  • map [i
    함수 프로토타입보기
  • map :set nonu
    줄번호 없애기
  • map :set nu
    줄번호 보기

*netrw-urls*

Reading Writing Uses

DAV:
dav://host/path
:Nread dav://host/path



:Nwrite dav://host/path


cadaver
cadaver

FETCH:
fetch://[user@]host/path
fetch://[user@]host:http/path
:Nread fetch://[user@]host/path

Not Available

fetch

FTP: (*3)
ftp://[user@]host/path
:Nread ftp://host/path
:Nread host path
:Nread host uid pass path

(*3)
ftp://[user@]host/path
:Nwrite host path
:Nwrite host uid pass path

ftp *2
ftp+.netrc
ftp+.netrc
ftp

HTTP: wget is executable: (*4)
http://[user@]host/path

Not Available

wget

HTTP: fetch is executable (*4)
http://[user@]host/path

Not Available

fetch

RCP:
rcp://[user@]host/path


rcp://[user@]host/path

rcp

RSYNC:
rsync://[user@]host/path
:Nread rsync://host/path
:Nread rcp://host/path


sync://[user@]host/path
:Nwrite rsync://host/path
:Nwrite rcp://host/path


rsync
rsync
rcp

SCP:
scp://[user@]host/path
:Nread scp://host/path


scp://[user@]host/path
:Nwrite scp://host/path


scp
scp (*1)

SFTP:
sftp://[user@]host/path
:Nread sftp://host/path


sftp://[user@]host/path
:Nwrite sftp://host/path


sftp
sftp *1

네트워크 작업은 명령어를 실행 후 password를 입력하면 연결된다.
네트워크 오류나 아이디, 비밀번호 오류시 오류메세지를 표시된다.


반응형

'ide > vim' 카테고리의 다른 글

vi copy, paste 와 X윈도우 clipboard 사용  (0) 2014.11.07
vim window vimrc 설정  (0) 2013.04.01
vi 커닝페이퍼  (0) 2010.09.06
Solaris VI 설정  (0) 2006.11.16
vi 설정  (0) 2006.10.25