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은 대문자 |
:qa | Command | 모든 창 닫기 | |
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 |