본문 바로가기

개발/shell

vim 단축키및 설정



1. 파일 열기  저장

Command

Mode

Description

Remark

vi file

Console

vi 시작하여 지정한 파일 편집

 

vi -R file

Console

읽기 전용(read- only) 편집기로서 vi 시작하여 지정한 파일 편집

 

view file

Console

읽기 전용(read- only) 편집기로서 vi 시작하여 지정한 파일 편집

 

vimdiff <file1.c> <file2.c>

Console

 파일 비교

 

vim –d <file1.c> <file2.c>

Console

 파일 비교

 

:wq

Command

데이터를 저장하고 종료

 

:q

Command

 닫기

 

:q!

Command

데이터를 저장하지 않고 종료

 

vi -r

Console

되살릴  있는 모든 파일 이름 보여 주기

 

vi -r  file

Console

vi 시작하여 지정한 파일 되살리기

 

:e  file

Command

지정한 파일의 편집

 

:e!  file

Command

지정한 파일의 편집, 자동 점검의 생략

 

:w

Command

원래의 파일로 데이터를 저장

 

:w  file

Command

지정한 파일로 데이터를 저장

 

:w>>  file

Command

지정한 파일에 데이터를 추가

 

<Ctrl>wf

Normal

커서가 있는 명칭의 파일이 분할된 창에 표시

 

:b1

Command

1 버퍼에 있는 파일을 편집

 

:b2

Command

2 버퍼에 있는 파일을 편집

 

 

 

 

 

 

2. 커서 이동

Command

Mode

Description

Remark

h

Normal

커서를   왼쪽으로 이동

 

j

Normal

커서를   아래로 이동

 

k

Normal

커서를   위로 이동

 

l

Normal

커서를   오른쪽으로 이동

 

<Backspace>

Normal

커서를   왼쪽으로 이동

 

<Space>

Normal

커서를   오른쪽으로 이동

 

Normal

커서를 이전 줄의 처음으로 이동

 

+

Normal

커서를 다음 줄의 처음으로 이동

 

<Return>

Normal

커서를 다음 줄의 처음으로 이동

 

0

Normal

커서를 현재 줄의  앞으로 이동

 

$

Normal

커서를 현재 줄의  끝으로 이동

 

^

Normal

커서를 현재 줄의 공백이나 탭이 아닌  글자로 이동

w

Normal

커서를 다음 단어의  글자로 이동

 

e

Normal

커서를 다음 단어의  글자로 이동

 

b

Normal

커서를 이전 단어의  글자로 이동

 

gg

Normal

편집 버퍼의  줄로 건너뛰기

 

G

Normal

편집 버퍼의 마지막 줄로 건너뛰기

 

E

Normal

e 같음(문장 부호 무시)

 

B

Normal

b 같음(문장 부호 무시)

 

(

Normal

다음 문장의 처음으로 이동

 

)

Normal

이전 문장의 처음으로 이동

 

{

Normal

다음 문단의 처음으로 이동

 

}

Normal

이전 문단의 처음으로 이동

 

H

Normal

커서를 화면  위로 이동

 

M

Normal

커서를 중간으로 이동

 

L

Normal

커서를  아래로 이동

 

<Ctrl>f

Normal

 화면 아래로 이동

 

<Ctrl>b

Normal

 화면 위로 이동

 

<n><Ctrl>f

Normal

n화면 아래로 이동

<n> 숫자

<n><Ctrl>b

Normal

n화면 위로 이동

<n> 숫자

<Ctrl>d

Normal

 화면 아래로 이동

 

<Ctrl>u

Normal

 화면 위로 이동

 

<n><Ctrl>d

Normal

n줄만큼 아래로 이동

<n> 숫자

<n><Ctrl>u

Normal

n줄만큼 위로 이동

<n> 숫자

<n>G

Normal

 번호 n으로 건너뛰기

<n> 숫자

<Ctrl>o

Normal

·         이전 커서 위치로 이동

 

 

<Ctrl>i

Normal

다음 커서 위치로 이동

 

%

Normal

{ 에서 %  누르면 해당하는 }  이동

 

gd

Normal

변수 선언된 위치

 

z+.

Normal

현재 행을 화면 중간으로

 

[[

Normal

현재함수의 처음으로 커서 이동

 

]]

Normal

다음함수의 처음으로 커서 이동

 

 

3. 편집

Command

Mode

Description

Remark

i

Normal

입력 모드로 전환, 커서 위치 앞에서 삽입

 

a

Normal

입력 모드로 전환, 커서 위치 뒤에서 삽입

 

I

Normal

입력 모드로 전환, 현재 줄의 앞에 삽입

 

A

Normal

입력 모드로 전환, 현재 줄의 끝에 삽입

 

o

Normal

입력 모드로 전환, 현재 줄의 아래에 전개

 

O

Normal

입력 모드로 전환, 현재 줄의 위에 전개

 

r

Normal

 글자만 변경(입력 모드로 바뀌지 않음)

 

R

Normal

입력하는 대로 겹쳐 써서 변경

 

s

Normal

삽입에 의해  단어의 변경

 

C

Normal

커서의 위치로부터  끝까지 삽입  의한 변경

 

cc

Normal

전체 줄을 삽입에 의한 변경

 

S

Normal

전체 줄을 삽입에 의한 변경

 

c move

Normal

커서부터 move까지 삽입에 의해 변경

 

~

Normal

, 소문자 바꾸기

 

p

Normal

마지막으로 지워진 것을 커서의 /아래에 삽입

 

P

Normal

마지막으로 지워진 것을 커서의 /위에 삽입

 

xp

Normal

 문자를 바꿈

 

deep

Normal

 단어를 바꿈

 

ddp

Normal

 줄을 바꿈

 

J

Normal

다음 줄을 현재 줄의 뒤에 붙임

 

u

Normal

Undo, 편집 버퍼를 수정했던 마지막 명령을 취소

 

U

Normal

편집 중인  전체 복구

 

.

Normal

편집 버퍼를 수정했던 마지막 명령 반복

 

<Ctrl>r

Normal

Redo, 명령어를 다시 실행

 

x

Normal

커서가 있는 문자 삭제

 

X

Normal

커서의 왼쪽 문자 삭제

 

D

Normal

커서부터 줄의 끝까지 삭제

 

dd

Normal

현재 줄의 전체 삭제

 

d move

Normal

커서부터 move까지 삭제

 

dG

Normal

커서부터 편집 버퍼의 끝까지 삭제

 

d1G

Normal

커서부터 편집 버퍼의  앞까지 삭제

 

:line d

Command

지정한 줄의 삭제

 

:line, line d

Command

지정한 범위의 삭제

 

:line co target

Command

지정한 줄을 복사하여 target  밑에 삽입

 

:line, line co target 

Command

지정한 범위를 복사하여 target  밑에 삽입

 

:line m target

Command

지정한 줄로 이동하  target  밑에 삽입

 

:line, line m target

Command

지정한 범위로 이동하여 target  밑에 삽입

 

:liner  file    

Command

file 내용을 지정한  다음  삽입

 

:r  file

Command

file 내용을 현재의  다음  삽입

 

: line r !command

Command

command 결과를 지정한   음에 삽입

 

:r !command

Command

command 결과를 현재의   음에 삽입

 

:r !look  pattern

Command

지정한 pattern으로 시작된   삽입

 

<Ctrl>p

Edit

변수나 함수 이름 입력  입력한 이름과 매치되는 항목의 목록이 출력

 

gf

Normal

커서가 있는 파일 이름이 path 설정되어 있으면 해당 파일을 연다.

 

d'c

Normal

커서부터 'c'까지 삭제

c marker

dG

Normal

커서부터 파일의 끝까지 삭제

 

d1G 

Normal

파일의 시작부터 커서까지 삭제

 

y'c

Normal

커서부터 'c'까지 복사

 

"xy'c

Normal

커서부터 'c'까지 버퍼'x' 복사

 

"xp

Normal

버퍼'x' 붙여 넣기

 

 

4. 패턴 검색  치환

Command

Mode

Description

Remark

/r exp

Normal

지정된 정규 표현 식에 대해 앞으로 이동

 

/

Normal

이전의 패턴에 대해 앞으로 검색을 반복

 

?r exp

Normal

지정된 정규 표현 식에 대해 뒤로 이동

 

?

Normal

이전의 패턴에 대해 뒤로 검색을 반복

 

n

Normal

/ ? 명령에 대해 같은 방향으로 반복

 

N

Normal

/ ? 명령에 대해 반대 방향으로 반복

 

:s/ old /new/

Command

현재 줄의 치환

 

:lines /old/new/

Command

지정한 줄의 치환

 

:line, lines /old/new/

Command

지정한 범위의 치환

 

:%s/old/new/

Command

모든 줄의 치환

 

:s/old/new/g

Command

현재 라인에서 검색하여 치환

 

:%s/old/new/g

Command

문서 전체를 범위로 하여 해당 old 문자를 new  치환

 

:%s/old/new/gc

Command

문서 전체 범위에서 문자열 치환하기 전에 사용자에게 확인

 

Mark

 

Description

Remark

.

 

뉴라인을 제외한 모든 단일 문자와 대응

 

*

 

 또는  이상의 선행 문자와 대응

 

<Ctrl>

 

줄의 시작과 대응

 

$

 

줄의 끝과 대응

 

\<

 

단어의 시작과 대응

 

\>

 

단어의 끝과 대응

 

[ ]

 

묶여진 문자중의 하나와 대응

 

[<Ctrl> ]

 

묶여진 문자를 제외한 아무것하고나 대응

 

\

 

이어지는 기호를 문자 그대로 해석

 

 

5. 설정

Command

Mode

Description

Remark

:set ruler

Command

화면 하단에 커서 라인, 상태 등을 표시

 

:set ts=8

Command

tab 사이즈를 8 지정

 

:set sts=4

Command

tab 실제 4 간격으로 이동할지를 지정

 

:ts [tabstop]

Command

tab 사이즈를 지정

 

:sts [softtabstop]

Command

tab 실제 얼마만큼의 간격으로 이동할지를 지정

 

:set number 

Command

내부  번호 디스플레이

 

:set nonumber

Command

내부  번호 디스플레이 않기

 

:set wm= n

Command

오른쪽으로 n문자 위치에서 자동적으로  나눔

 

:set nobackup

Command

VIM Back Up file 만들지 않기

 

:set backup

Command

VIM Back Up file 만들기

 

:map g lG

Command

g lG 같도록 매크로 정의

 

:ab short long

Command

short long 대한 약어  변경

 

:ab

Command

현재 약어 목록을 표시

 

:una short

Command

약어 short 표시

 

 

6.  분할

Command

Mode

Description

Remark

<Ctrl>wn

Normal

새로운 분할 창을 생성한다.

 

<Ctrl>ws

Normal

현재 파일을 수평 분할 창으로 나눔

 

<Ctrl>wv

Normal

현재 파일을 수직 분할 창으로 나눔

 

<Ctrl>wc

Normal

 닫기

 

<Ctrl>wq

Normal

 닫기

 

<Ctrl>wo

Normal

현재 창을 제외한 모든  닫기

 

<Ctrl>ww

Normal

창들간을 순차적으로 이동한다.

 

<Ctrl>wj

Normal

아래 창으로 간다

 

<Ctrl>wk

Normal

 창으로 간다

 

<Ctrl>wh

Normal

왼쪽 창으로 간다.

 

<Ctrl>wl

Normal

오른쪽 창으로 간다. (소문자 L)

 

<Ctrl>e FILE_NAME

Normal

나누어진 창에서 다른 파일을 열기

 

<Ctrl>w<n>+

Normal

수평분할 창에서 N만큼 증가

<n> 숫자, 숫자 제외  1 간주

<Ctrl>w<n>-

Normal

수평분할 창에서 N만큼 감소

<n> 숫자, 숫자 제외  1 간주

<Ctrl>w<n>>

Normal

수직분할 창에서 N만큼 오른쪽으로 증가

<n> 숫자, 숫자 제외  1 간주

<Ctrl>w<n><

Normal

수직분할 창에서 N만큼 왼쪽으로 증가

<n> 숫자, 숫자 제외  1 간주

<Ctrl>w<n>|

Normal

 너비를 숫자 칸수로 만든다.

L아님, 숫자 제외  최대 크기

<Ctrl>w=

Normal

분할 창의 크기를 균등하게 변경

 

:new

Command

 버퍼를 생성하면서 창을 연다.

 

:split

Command

창을 가로로 나눈다

 

:vsplit

Command

창을 세로로 나눈다

 

:vs

Command

 분할

 

:split file

Command

 창에서 파일을 연다

 

:<n>split

Command

창의 크기를 숫자 줄만큼으로 지정하여 연다.

<n> 숫자

:20vs./

Command

현재 위치 디렉토리를 수평 분할 창에 표시

20 -> 창의 사이즈, vs ->vertical screen

<Ctrl>wt or <Ctrl>wb

Normal

분할 창에서 커서를  최상단(Top)또는 최하단(Bottom)으로 이동

 

<Ctrl>wH,J,K or L

Normal

현재 커서가 있는 분할 창을 커서 방향에 따라 이동한다. 

H,J,K,L은 대문자

:qaCommand 모든 창 닫기 

 

7. Visual Mode

Command

Mode

Description

Remark

v

Normal

블록 지정하기

 

zf

Visual

지정된 영역이 폴딩

블럭 모드에서

zo

Visual

폴딩에서 다시 원상태

 

<Shift>v

Normal

 단위 비주얼 모드

 

<Ctrl>v

Normal

블록 단위 비주얼 모드

윈도우에서는 <Ctrl> q

~

Visual

대문자 <-> 소문자 전환

J

Visual

줄을 합침

U

Visual

대문자로 변환

u

Visual

소문자로 변환

 

8. Marker

Command

Mode

Description

Remark

ma

Normal

원하는 위치를 마킹 하기, a 라는 마킹 이름으로 현재 커서의 위치가 저장

a 대신에 a-z 까지 입력가능

mA

Normal

현재 파일에서만의 이동이 아닌 전역적으로 다른 파일에서도 이동가능

A 대신에 A-Z까지 입력가능

:marks

Command

현재 마킹된 정보 확인

 

'a 또는 'A

Normal

마킹된 곳으로 이동

 

 

9. Macro

Command

Mode

Description

Remark

qa 기록 q

Normal

매크로 기록

 

10@a

Normal

매크로 실행

앞에 10 횟수

 

10. Tab

Command

Mode

Description

Remark

 :tabnew

Command

새로운 탭 생성 

 

 

 

 

 


11. 기타

Command

Mode

Description

Remark

<Ctrl>L 

Normal

현재 화면을 다시 디스플레이 하기

 

:!Command

Command

vi 중단하고 지정한  명령을 실행

 

:!!

Command

vi 중단하고 이전의  명령을  

 

:sh

Command

vi 중단하고 셸을 실행

 

:!csh

Command

vi 중단하고 새로운 C-셸을 실행

 

:ls

Command

버퍼의 내용 보기

 

:find <filename>

Command

파일을 찾는다.

 

:grep /S main *.c

Command

지정된 파일에서 문자열 찾기

여기서 /S  sub directory 의미

:clist

Command

검색된 내역 list up

 

:copen

Command

창을 나누어서 open

 

:%!xxd

Command

Hexa editing

 

:%!xxd -r

Command

Hexa editing

 

n !! command

Normal

n 줄에서 command 실행

 

! move   command

Normal

커서부터 move까지 command 실행

 

! move  fmt

Normal

커서부터 move까지 줄들을 형식 맞추기

 

z+.

Normal

현재 행을 화면 중간으로

 

"[a]yw ==> "[a]p

Normal

named buffer 사용

 

ZZ

Normal

 닫기

 

gg=G

Normal

소스 전체가 자동 정렬

only GVIm

=

Normal

v  눌러 영역을 설정한  자동정렬

only GVIm



환경 설정

- 명령 모드나 vim 설정(.vimrc)에서 설정가능


set complete

set nocompatible - "VI 오리지널과 호환하는 모드를 사용하지 않음

set backspace=indent,eol,start - "들여쓰기,줄의 끝/시작에서

Backspace - 이전 줄과 연결

set nobackup - "백업 파일 생성하지 않음

set backup - "백업파일 만들기

set backupdir=~/.vim/backup - "백업 파일 저장 디렉토리 지정

set history=1000 - "편집 명령 기록 1000개까지 저장

set visualbell - 경고음(beep) 대신 한번 깜빡임으로 경고 사용

set mousehide - "타이핑시 마우스 커서 감추기

set title - "제목표시줄에 파일명 표시

set background=dark - "배경을 어두운 색으로 지정

colorscheme desert - "색깔 표현 방식을 desert로 설정

filetype on - "파일의 종류를 자동으로 인식

syntax on - "문법 색상 강조

set nu - "편집창에 줄 번호 출력

set showmatch - "괄호 닫기 할 때 열었던 괄호와 매칭 확인

set incsearch - "키워드를 입력할때마다 검색하는 점진검색 사용

set hlsearch - "검색어 색상 강조

set nows - "검색시 파일 끝에서 처음으로 되돌리기 안함

set enc-euc-kr - "인코딩 한글로 지정. 한글 삭제시 한글 단위로 삭제(2bytes)

set nowrap - "자동 줄바꿈 사용하지 않음

set wrap - "자동 줄바꿈

set showcmd - "현재명령 보이기, r등의 명령 사용시

set showmode - "삽입, 명령, 블럭모드등의 현재모드 표시

set ruler - "커서가 위치한 열과 행을 표시

set cindent - "C 스타일 들여쓰기 설정

set autoindent - "자동 들여쓰기 설정

set smartindent - "좀 더 똑똑한 들여쓰기

set shiftwidth=4 - "들여쓰기 간격 설정

set tabstop=4 - "탭 간격 설정

set softtabstop=2 - "tab 간격을 공백으로 변환하면, 삭제시 두칸단위로 삭제

set expandtab - "탭 문자를 공백문자로 바꿔 줌

set scs - "똑똑한 대소문자 구별 기능 사용

set ignorecase - "검색, 편집, 치환 시에 대소문자 구분 않는다.


set path=<path1>, <path2> - “path 설정하기, path에 지정된 path의 범위 내에서 파일 사이의 이동이 가능


set path+=<path3> - “path 설정 추가하기


단축 키 설정하기


- 명령 모드나 vim 설정(.vimrc)에서 설정가능


 map <F1> :!bash<CR>                    <F1> 기능키를 편집 중 쉘로 빠지는 명령으로 사용


map ,1 :b!1<CR>                         1을 입력하면 버퍼1(b1)에 편집 화면으로 이동

map <C-c> :’a,‘b w! ~/tmp/tmp<CR>

map <C-x> :’a,’b w! ~/tmp/tmp<CR> :’a,’b d<CR>

map <C-v> :r ~/tmp/tmp<CR>


* mark를 이용한 <Ctrl+c>, <Ctrl+x>, <Ctrl+v> 기능 설정

.vimrc

map <C-c> :’a,‘b w! ~/tmp/tmp<CR>

map <C-x> :’a,’b w! ~/tmp/tmp<CR> :’a,’b d<CR>

map <C-v> :r ~/tmp/tmp<CR>


'개발 > shell' 카테고리의 다른 글

bash 주석  (0) 2019.01.09
cat (concatenate) 사용법  (0) 2015.09.24
리눅스 명령어모음 [자주쓰는것]  (0) 2012.02.05
리눅스 명령어 모음 [알파벳순]  (0) 2012.02.05
crontab 걸기  (0) 2012.02.05