- 검색은
/패턴(아래로) ·?패턴(위로), 다음 결과는n, 반대 방향은N이다. - 치환의 기본형은
:s/찾을것/바꿀것/이다. %는 파일 전체,g는 한 줄 안의 전부를 뜻한다.:%s/A/B/g가 대표적인 형태다.- vi 설정은
~/.vimrc(개인)와/etc/vimrc(전역)에 저장한다. - nano는 화면 아래에 단축키가 보이고, emacs는 모드가 없다. vi만 모드를 가진다.
기준: 리눅스마스터 2급 출제 기준오류 제보
/패턴(아래로) · ?패턴(위로), 다음 결과는 n, 반대 방향은 N 이다.:s/찾을것/바꿀것/ 이다.%는 파일 전체, g는 한 줄 안의 전부를 뜻한다. :%s/A/B/g 가 대표적인 형태다.~/.vimrc(개인)와 /etc/vimrc(전역)에 저장한다.| 명령 | 방향 |
|---|---|
/패턴 | 커서에서 아래로 검색 |
?패턴 | 커서에서 위로 검색 |
n | 같은 방향으로 다음 결과 |
N | 반대 방향으로 다음 결과 |
/error 아래로 error 찾기
?error 위로 error 찾기
n 다음 결과
N 반대 방향 다음 결과/를 누르면 화면 맨 아래에 입력줄이 나타난다.n과 N의 관계가 시험 포인트다. N은 "위로"가 아니라 처음 검색한 방향의 반대다. ?로 검색했다면 N이 아래로 간다.| 처음 검색한 방법 | n이 가는 쪽 | N이 가는 쪽 |
|---|---|---|
/패턴 | 아래 | 위 |
?패턴 | 위 | 아래 |
| 검색 | 찾는 것 |
|---|---|
/^root | root로 시작하는 줄 |
/bash$ | bash로 끝나는 줄 |
/a.c | a와 c 사이에 아무 한 글자 — abc, a1c |
/\<the\> | 단어 the만 (there, other는 제외) |
/\/etc\/hosts | 슬래시가 든 문자열 — \/로 적는다 |
/ 자체가 "검색 시작" 기호이므로, 찾을 문자열에 슬래시가 있으면 역슬래시를 앞에 붙인다.search hit BOTTOM, continuing at TOP 이 나온다.E486: Pattern not found: 패턴 이 나온다.:set ic, 검색 강조를 잠시 끄려면 :noh (vim)를 쓴다. : % s / 서울 / 부산 / g
│ │ │ │ │ │
│ │ │ │ │ └── g 그 줄의 모든 것
│ │ │ │ └──────── 바꿀 문자열
│ │ │ └─────────────── 찾을 문자열
│ │ └──────────────────── s substitute(치환)
│ └─────────────────────── % 파일 전체
└────────────────────────── : ex 모드| 명령 | 범위 |
|---|---|
:s/A/B/ | 커서가 있는 줄의 첫 번째 A만 |
:s/A/B/g | 커서가 있는 줄의 모든 A |
:%s/A/B/g | 파일 전체의 모든 A |
:1,10s/A/B/g | 1~10번째 줄의 모든 A |
:%s/A/B/gc | 전체를 바꾸되 하나씩 확인(confirm) |
%와g를 구분한다.%는 어느 줄까지를,g는 한 줄 안에서 몇 개를 정한다. 둘 다 붙인:%s/A/B/g가 "파일 전체의 모든 것을 바꿔라"다.
커서가 1번 줄에 있을 때, 같은 두 줄에 네 가지 명령을 각각 써 본 결과다.
원본 1 banana apple 2 grape banana
:s/a/A/ 1 bAnana apple 2 grape banana 현재 줄의 첫 번째만
:s/a/A/g 1 bAnAnA Apple 2 grape banana 현재 줄의 전부
:%s/a/A/ 1 bAnana apple 2 grApe banana 모든 줄의 첫 번째만
:%s/a/A/g 1 bAnAnA Apple 2 grApe bAnAnA 모든 줄의 전부%만 붙이면 "줄마다 하나씩"만 바뀐다. 2번 줄의 banana가 그대로 남았다.| 범위 | 대상 |
|---|---|
| (생략) | 커서가 있는 줄 |
% | 파일 전체 — 1,$ 와 같다 |
1,10 | 1~10번째 줄 |
.,$ | 현재 줄부터 마지막 줄까지 |
10,$ | 10번째 줄부터 마지막 줄까지 |
.,+5 | 현재 줄과 그 아래 다섯 줄 |
.은 현재 줄, $는 마지막 줄이다. %는 1,$를 줄여 쓴 것이다.:1,5d 는 1~5번째 줄 삭제다.| 명령 | 하는 일 |
|---|---|
:%s/A//g | A를 전부 삭제 (바꿀 것을 비운다) |
:%s/^/#/ | 모든 줄 앞에 # 붙이기 — 한꺼번에 주석 처리 |
:%s/^#// | 줄 맨 앞의 # 떼기 |
:%s/A/B/gi | 대소문자를 가리지 않고 바꾸기 |
:%s#/usr/local#/opt#g | 구분자를 #로 — 슬래시가 많은 경로를 바꿀 때 |
:g/패턴/d | 그 패턴이 있는 줄을 통째로 삭제 |
/가 아니어도 된다. s 바로 뒤에 온 글자가 구분자가 된다.c를 붙이면 일치할 때마다 replace with B (y/n/a/q/l/^E/^Y)? 라고 묻는다. y 바꾸기 · n 건너뛰기 · a 나머지 전부 · q 그만이다.u 로 되돌린다. 치환 한 번이 통째로 취소된다.g(옵션)와 맨 앞의 :g(명령)는 다른 것이다. 옵션 g는 "줄 안의 전부", 명령 :g는 "패턴이 있는 줄마다 뒤의 명령을 실행"이다.| 명령 | 하는 일 |
|---|---|
:set nu | 줄 번호 표시 |
:set nonu | 줄 번호 숨기기 |
:set ai | 자동 들여쓰기 (autoindent) |
:set ts=4 | 탭 크기 지정 (tabstop) |
:set ic | 검색 시 대소문자 무시 (ignorecase) |
:set hlsearch | 검색 결과 강조 |
:set sw=4 | 자동 들여쓰기 폭 (shiftwidth) |
:set sm | 괄호의 짝 보여 주기 (showmatch) |
:set list | 탭(^I)과 줄 끝($)처럼 보이지 않는 문자 표시 |
:set all | 모든 옵션의 현재 값 보기 |
:syntax on | 문법 강조 켜기 (vim) |
| 줄임 | 본딧말 | 줄임 | 본딧말 |
|---|---|---|---|
nu | number | ai | autoindent |
ic | ignorecase | ts | tabstop |
sw | shiftwidth | sm | showmatch |
끌 때는 앞에 no를 붙인다 — nonu, noai, noic, nolist. 옵션마다 끄는 명령이 따로 있는 것이 아니다.
값을 받는 옵션은 =로 준다 — ts=4. 켜고 끄는 옵션과 모양이 다르다.
지금 값이 궁금하면 물음표를 붙인다. :set ts? 는 tabstop=8 처럼 답한다(기본값이 8이다).
이렇게 준 설정은 편집기를 닫으면 사라진다.
계속 쓰려면 설정 파일에 적는다.
| 파일 | 범위 |
|---|---|
~/.vimrc | 개인 설정 |
/etc/vimrc | 전역 설정 (모든 사용자) |
~/.exrc | 예전 vi의 개인 설정 파일 |
" ~/.vimrc 예
set nu
set ai
set ts=4.bashrc와 같은 구조다. ~/로 시작하면 개인, /etc/면 전역이다.set nu 처럼 적는 것이 보통이다. 주석은 큰따옴표(") 로 시작한다. 셸의 #과 다르다./etc/vimrc, 데비안 계열은 /etc/vim/vimrc 다.| 헷갈리는 파일 | 실제 역할 |
|---|---|
~/.vimrc | 내가 직접 적는 설정 |
~/.viminfo | vim이 자동으로 남기는 기록 — 검색어, 명령 이력, 복사한 내용. 설정 파일이 아니다 |
~/.exrc | 원조 vi·ex의 설정 파일. vim은 ~/.vimrc가 없을 때에만 이것을 읽는다 |
.파일명.swp | 편집 중에 만들어지는 스왑 파일. 비정상 종료 때 복구에 쓴다 |
^G Get Help ^O Write Out ^X Exit
└ ^ 는 Ctrl 키를 뜻한다| 단축키 | 하는 일 |
|---|---|
Ctrl+O | 저장(Write Out) |
Ctrl+X | 종료(Exit) |
Ctrl+W | 검색 |
Ctrl+K | 한 줄 잘라내기 |
Ctrl+G | 도움말 |
| 단축키 | 하는 일 |
|---|---|
Ctrl+U | 잘라낸 줄 붙여넣기 |
Ctrl+R | 다른 파일의 내용 읽어 넣기 |
Ctrl+\ | 문자열 바꾸기 |
Ctrl+C | 현재 커서 위치 표시 |
Ctrl+X
Save modified buffer? Y Yes N No ^C Cancel ← Y
File Name to Write: memo.txt ← EnterCtrl+X를 누르면 저장할지 묻는다. Y 다음에 파일 이름을 확인하고 엔터를 치면 저장하며 끝난다. vi처럼 경고만 하고 버티지 않는다.^는 Ctrl, M-는 Alt(Meta) 키다.| 단축키 | 하는 일 |
|---|---|
Ctrl+X Ctrl+S | 저장 |
Ctrl+X Ctrl+C | 종료 |
Ctrl+G | 명령 취소 |
| 단축키 | 하는 일 |
|---|---|
Ctrl+X Ctrl+F | 파일 열기 (find file) |
Ctrl+S / Ctrl+R | 아래로 / 위로 검색 |
Ctrl+K | 커서부터 줄 끝까지 잘라내기 (kill) |
Ctrl+Y | 붙여넣기 (yank) |
Ctrl+A / Ctrl+E | 줄의 맨 앞 / 맨 끝 |
Ctrl+X u | 실행 취소 |
Ctrl+X Ctrl+S 는 Ctrl을 누른 채 x, 이어서 s 를 누른다는 뜻이다. emacs 문서는 이것을 C-x C-s 로 적는다. C-는 Ctrl, M-는 Meta(Alt)다.Ctrl+X로 시작하고 뒤의 글자만 다르다 — Ctrl+S가 붙으면 저장(save), Ctrl+C가 붙으면 종료다.yy는 복사, emacs의 Ctrl+Y는 붙여넣기다.Ctrl+A·Ctrl+E·Ctrl+K·Ctrl+R 이 바로 emacs 방식 단축키다. 지난주에 쓴 키가 여기서 왔다.| 구분 | vi / vim | emacs | nano |
|---|---|---|---|
| 만든 사람 | Bill Joy | Richard Stallman | GNU (pico 개선) |
| 모드 | 있다 (3개) | 없다 | 없다 |
| 저장 | :w | Ctrl+X Ctrl+S | Ctrl+O |
| 종료 | :q | Ctrl+X Ctrl+C | Ctrl+X |
| 설정 파일 | ~/.vimrc | ~/.emacs | ~/.nanorc |
| 성격 | 어디에나 있다 | 확장성이 크다 | 배우기 쉽다 |
"모드가 있는 편집기는?" 이라는 문제의 답은 vi 다. emacs와 nano는 모드가 없다.
| 하려는 일 | vi / vim | emacs | nano |
|---|---|---|---|
| 저장하고 끝내기 | :wq | Ctrl+X Ctrl+S 다음 Ctrl+X Ctrl+C | Ctrl+X 다음 Y, 엔터 |
| 저장하지 않고 끝내기 | :q! | Ctrl+X Ctrl+C 다음 저장 여부에 아니오 | Ctrl+X 다음 N |
| 검색 | /패턴 | Ctrl+S | Ctrl+W |
| 한 줄 잘라내기 | dd | Ctrl+K (커서부터 줄 끝) | Ctrl+K |
| 붙여넣기 | p | Ctrl+Y | Ctrl+U |
Ctrl 조합이면 emacs나 nano, 콜론이나 글자 하나면 vi 다. 보기에 섞여 나올 때 이 기준으로 먼저 가른다.Ctrl+X 하나로 끝나면 nano, Ctrl+X Ctrl+C 두 번이면 emacs 다. 종료 키가 비슷해 바꿔 묻는다.Ctrl+K는 두 편집기 모두 잘라내기지만, 붙여넣기는 emacs가 Ctrl+Y, nano가 Ctrl+U 로 다르다.내일은 실행 중인 프로그램 — 프로세스의 개념과 유형을 다룬다.
/패턴 : 커서 아래 방향으로 문자열을 검색하는 vi 명령.n / N : 검색 결과를 같은 방향 / 반대 방향으로 이동하는 키.:s/A/B/ 형식으로 문자열을 바꾸는 ex 명령.% : 치환에서 파일 전체를 대상으로 지정하는 범위 기호.g : 치환에서 한 줄 안의 모든 일치를 바꾸도록 지정하는 옵션.~/.vimrc : vim의 개인 설정 파일. 전역 설정은 /etc/vimrc다.선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
다음 중 vi 편집기에서 파일 전체의 모든 apple을 orange로 바꾸는 명령으로 알맞은 것은?
문제 2
다음 중 vi 편집기에서 화면에 줄 번호를 표시하는 명령으로 알맞은 것은?
문제 3
다음 중 vim의 개인 환경 설정을 저장하는 파일로 알맞은 것은?
문제 4
다음 중 편집 모드의 구분이 없어 실행 직후 바로 문자를 입력할 수 있는 편집기로 알맞은 것은?
문제 5
다음 중 nano 편집기에서 작성한 내용을 저장하는 단축키로 알맞은 것은?