서버에 반드시 있는 편집기
vi와, 접속이 끊겨도 작업이 살아 있는tmux의 키를 한 장에 모았습니다. 명령어 묶음 02 의 최소 키 열 개에서 출발해 이동·편집·검색·치환·여러 파일·설정까지 넓혔고,tmux는 세션·창·분할·복사 모드와 설정 파일까지 다룹니다.
| 상황 | 키 |
|---|---|
| 입력 시작 / 끝 | i / Esc |
| 저장 / 나가기 / 둘 다 / 버리기 | :w / :q / :wq / :q! |
| 줄 삭제 / 복사 / 붙여넣기 / 되돌리기 | dd / yy / p / u |
| 검색 / 다음 / 전체 치환 | /단어 / n / :%s/a/b/g |
| 처음 / 끝 / N번 줄 | gg / G / :N |
| 줄 번호 | :set nu |
| 막혔을 때 | Esc Esc :q! |
| tmux 새 세션 / 떼기 / 붙기 | tmux new -s x / Ctrl+B d / tmux attach -t x |
| 모드 | 들어가기 | 나가기 | 용도 |
|---|---|---|---|
| 명령 | 시작 상태, Esc |
이동·삭제·복사 | |
| 입력 | i a o A O |
Esc |
글자 입력 |
| 비주얼 | v V Ctrl+V |
Esc |
범위 선택 |
| 명령줄 | : / ? |
Enter Esc |
저장·검색·치환 |
화면 아래 -- INSERT -- 가 보이면 입력 모드입니다. 명령이 안 먹으면 Esc 를 두 번 누르고 다시 합니다.
| 키 | 위치 |
|---|---|
i |
커서 앞 |
a |
커서 뒤 |
I |
줄 처음 |
A |
줄 끝 |
o |
아래 새 줄 |
O |
위 새 줄 |
cw |
단어 바꾸기 |
cc |
줄 바꾸기 |
ciw |
커서 단어 통째로 바꾸기 |
ci" |
따옴표 안 바꾸기 |
설정 값을 고칠 때 A 로 줄 끝에 붙이거나 ci" 로 따옴표 안만 바꾸는 것이 빠릅니다.
| 키 | 동작 |
|---|---|
h j k l |
좌·하·상·우 (화살표도 됨) |
w b |
다음·이전 단어 |
e |
단어 끝 |
0 ^ $ |
줄 처음·첫 글자·끝 |
gg G |
파일 처음·끝 |
:15 15G |
15번 줄 |
Ctrl+F Ctrl+B |
한 화면 아래·위 |
Ctrl+D Ctrl+U |
반 화면 |
% |
짝 괄호로 |
{ } |
문단 단위 |
'' |
직전 위치로 |
숫자를 앞에 붙이면 반복입니다. 5j 는 5줄 아래, 3w 는 3단어 뒤입니다.
| 키 | 동작 |
|---|---|
x X |
글자 삭제 (뒤·앞) |
dd 5dd |
줄 삭제 |
dw d$ d0 |
단어·줄 끝·줄 처음까지 삭제 |
D |
d$ 와 같음 |
yy 5yy |
줄 복사 |
yw y$ |
단어·줄 끝까지 복사 |
p P |
아래·위에 붙여넣기 |
u Ctrl+R |
되돌리기·다시 |
. |
직전 편집 반복 |
r |
글자 하나 바꾸기 |
~ |
대소문자 바꾸기 |
J |
다음 줄 붙이기 |
>> << |
들여쓰기 |
dd 로 지운 줄은 버퍼에 남아 p 로 붙일 수 있습니다. 잘라내기·붙여넣기가 dd·p 입니다. . 반복이 같은 수정을 여러 곳에 할 때 가장 빠릅니다.
| 키 | 동작 |
|---|---|
v |
글자 단위 선택 |
V |
줄 단위 |
Ctrl+V |
사각 블록 |
선택 후 d y > |
삭제·복사·들여쓰기 |
선택 후 :s/a/b/ |
범위 치환 |
Ctrl+V 후 I 입력 Esc |
여러 줄 앞에 같은 글자 |
여러 줄 앞에 # 을 붙여 주석 처리하려면 Ctrl+V 로 줄들을 선택하고 I# 뒤 Esc 입니다. V 로 줄을 선택한 뒤 :s/old/new/g 를 치면 그 범위만 치환됩니다.
| 명령 | 동작 |
|---|---|
/단어 ?단어 |
아래·위 검색 |
n N |
다음·이전 |
* # |
커서 단어 검색 아래·위 |
:noh |
강조 끄기 |
:%s/a/b/g |
전체 치환 |
:%s/a/b/gc |
확인하며 (y n a q) |
:5,20s/a/b/g |
줄 범위 |
:.,$s/a/b/ |
현재 줄부터 끝 |
:g/패턴/d |
패턴 줄 전부 삭제 |
:v/패턴/d |
패턴 없는 줄 삭제 |
:%s/\s\+$// |
줄 끝 공백 제거 |
vi 정규식은 BRE 라 +·(·| 에 \ 가 필요합니다. :%s/\v(a|b)+/x/g 처럼 \v 를 붙이면 ERE 처럼 씁니다. 자세한 문법은 정규식 명령어에 있습니다.
| 명령 | 동작 |
|---|---|
:e 파일 |
다른 파일 열기 |
:w 이름 |
다른 이름으로 저장 |
:r 파일 |
파일 내용 끼워 넣기 |
:r !명령 |
명령 출력 끼워 넣기 |
:ls :bn :bp |
버퍼 목록·다음·이전 |
:sp 파일 :vsp 파일 |
가로·세로 분할 |
Ctrl+W w |
분할 창 이동 |
Ctrl+W q |
분할 창 닫기 |
:!명령 |
셸 명령 실행 |
:w !sudo tee % |
권한 없이 열었을 때 저장 |
:r !date 로 현재 시각을 끼워 넣거나 :r !ls 로 파일 목록을 넣을 수 있습니다. 읽기 전용으로 열었다가 고친 뒤 저장이 안 될 때 :w !sudo tee % 가 해결책입니다.
| 명령 | 동작 |
|---|---|
"ayy "ap |
a 레지스터에 복사·붙여넣기 |
"+y "+p |
시스템 클립보드 (gvim·ssh 에서는 제한) |
qa ... q |
a 매크로 기록 시작·끝 |
@a |
매크로 실행 |
10@a |
10번 반복 |
@@ |
직전 매크로 반복 |
같은 편집을 100줄에 하려면 한 줄에 대해 qa 로 기록하고 99@a 로 반복합니다. 로그 형식 변환이나 설정 일괄 수정에 씁니다.
" ~/.vimrc
set number " 줄 번호
set hlsearch " 검색 강조
set incsearch " 입력하며 검색
set ignorecase " 대소문자 무시
set smartcase " 대문자 있으면 구분
set tabstop=4 " 탭 폭
set shiftwidth=4 " 들여쓰기 폭
set expandtab " 탭을 공백으로
set autoindent " 자동 들여쓰기
set encoding=utf-8
set fileencodings=utf-8,euc-kr
syntax on " 색
set paste " 붙여넣기 시 자동 들여쓰기 꺼짐 (붙여넣을 때만 켜기)세션 안에서 잠깐 켜려면 :set nu, 끄려면 :set nonu 입니다. 붙여넣기가 계단처럼 밀리면 :set paste 후 붙이고 :set nopaste 로 돌립니다. fileencodings 에 euc-kr 을 넣어야 옛 파일의 한글이 보입니다.
| 상황 | 해결 |
|---|---|
입력 모드에서 :wq 를 쳤다 |
Esc 뒤 u 로 되돌리고 다시 |
| 저장 안 하고 나가고 싶다 | :q! |
| 파일을 처음 상태로 | :e! |
| 화면이 멈췄다 | Ctrl+Q (Ctrl+S 를 누른 것) |
.swp 파일 경고 |
다른 세션 확인 후 rm .파일.swp |
| 읽기 전용이라 저장 안 됨 | :w !sudo tee % |
| 붙여넣기가 계단식 | :set paste |
| 한글 깨짐 | :e ++enc=euc-kr |
| 명령 | 동작 |
|---|---|
tmux |
새 세션 |
tmux new -s deploy |
이름 붙여 새 세션 |
tmux ls |
세션 목록 |
tmux attach -t deploy |
다시 붙기 |
tmux attach |
마지막 세션 |
Ctrl+B d |
떼어 두기 (작업은 계속) |
tmux kill-session -t deploy |
세션 종료 |
exit |
마지막 창을 닫으면 세션 끝 |
긴 배포·마이그레이션·대용량 복사는 반드시 tmux new -s 이름 안에서 시작합니다. 접속이 끊겨도 tmux attach -t 이름 으로 돌아옵니다. 모든 키는 Ctrl+B 를 누른 뒤 뗀 다음 다음 키를 누릅니다.
| 키 (Ctrl+B 뒤) | 동작 |
|---|---|
c |
새 창 |
n p |
다음·이전 창 |
0~9 |
번호로 창 이동 |
, |
창 이름 변경 |
& |
창 닫기 |
% |
세로 분할 |
" |
가로 분할 |
| 화살표 | 분할 창 이동 |
o |
다음 분할 창 |
x |
분할 창 닫기 |
z |
분할 창 확대·복원 |
Space |
배치 바꾸기 |
한 창을 " 로 위아래 나눠 위에는 tail -f 로그, 아래에는 명령을 치는 배치가 배포 때 표준입니다. z 로 하나를 잠시 키웠다 돌립니다.
| 키 (Ctrl+B 뒤) | 동작 |
|---|---|
[ |
복사 모드 (스크롤) |
복사 모드에서 Space 이동 Enter |
선택 시작·복사 |
] |
붙여넣기 |
PgUp / q |
위로·나가기 |
? |
키 목록 |
: |
tmux 명령 입력 |
t |
시계 |
tmux 안에서는 마우스 휠 스크롤이 기본으로 안 되므로 Ctrl+B [ 로 복사 모드에 들어가 화살표·PgUp 으로 올려 봅니다. q 로 나옵니다.
# ~/.tmux.conf
set -g mouse on # 마우스로 분할 창 선택·스크롤
set -g history-limit 50000 # 스크롤 버퍼
set -g base-index 1 # 창 번호 1부터
setw -g mode-keys vi # 복사 모드에서 vi 키
set -g status-right '#H %F %R' # 상태줄에 호스트·날짜
bind r source-file ~/.tmux.conf \; display "reloaded"적용은 tmux source-file ~/.tmux.conf 또는 위 r 바인딩입니다. mouse on 이면 휠 스크롤과 클릭 창 이동이 됩니다. 운영 서버 상태줄에 호스트명이 보이면 창 착각을 줄입니다.
| 동작 | tmux | screen |
|---|---|---|
| 새 세션 | tmux new -s x |
screen -S x |
| 목록 | tmux ls |
screen -ls |
| 떼기 | Ctrl+B d |
Ctrl+A d |
| 붙기 | tmux attach -t x |
screen -r x |
| 새 창 | Ctrl+B c |
Ctrl+A c |
| 다음 창 | Ctrl+B n |
Ctrl+A n |
| 분할 | Ctrl+B % " |
`Ctrl+A |
| 스크롤 | Ctrl+B [ |
Ctrl+A [ |
tmux 가 없는 옛 서버는 screen 이 있습니다. 접두 키가 Ctrl+A 라는 것만 다르고 개념은 같습니다. 폐쇄망이면 dnf install tmux 대신 반입 rpm 이 필요합니다.