텍스트 편집기
X 윈도에서 실행
- [텍스트 편집기]는 UTF-8과의 호환성을 제공
- 프로그램 코딩, 마크업 언어와 같은 구조화된 텍스트 문서를 GUI 환경에서 편집하는 용도로 개발된 에디터
터미널 창에서 실행
- gedit 명령 : 터미널 창에서 [텍스트 편집기]를 실행
ex)
mkdir chap_07
cd chap_07
gedit study.txt
예시 내용 입력 후 저장
cat -n study.txt : 행 번호 포함 출력
vi 편집기
에디터 작업 모드
[명령 모드] ↔ [입력 모드] ↔ [라인 모드] 로 전환하면서 작업
[입력 모드]에서 사용하는 키
| 키 | 기능 | 키 | 기능 |
| i | 커서의 위치부터 입력 | I | 커서 행의 맨 앞부터 입력 |
| a | 커서의 다음 위치부터 입력 | A | 커서 행의 마지막부터 입력 |
| o | 커서의 다음 행에 입력 | O | 커서의 앞 행에 입력 |
| s | 커서 위치의 한 글자를 지우고 입력 | S | 커서의 행을 지우고 입력 |
[명령 모드]에서 사용하는 키
- 커서를 이동할 때 사용하는 키
| 키 | 기능 | 키 | 기능 |
| gg | 첫 행으로 이동 | 숫자G | 숫자의 행으로 커서를 이동 |
| G(Shitf+g) | 마지막 행으로 이동 | :숫자Enter | 숫자의 행으로 커서를 이동 |
| h | 커서를 왼쪽으로 한 칸 이동 | Ctrl+B | 이전 화면으로 커서를 이동 |
| l | 커서를 오른쪽으로 한 칸 이동 | Ctrl+F | 다음 화면으로 커서를 이동 |
| k | 커서를 위쪽으로 한 칸 이동 | ^ | 현재 행의 처음으로 커서를 이동 |
| j | 커서를 아래쪽으로 한칸 이동 | $ | 현재 행의 마지막으로 커서를 이동 |
| w | 오른쪽 단어의 시작 커서로 이동 | b | 왼쪽 단어의 시작 커서로 이동 |
- [명령 모드]에서 내용을 편집할 때 사용하는 키
| 키 | 기능 | 키 | 기능 |
| yy | 현재 커서의 행을 복사 | 숫자yy | 현재 커서부터 숫자만큼 행을 복사 |
| p | 복사 내용을 현재 행 뒤에 붙여넣음 | P | 복사 내용을 현재 행 앞에 붙여넣음 |
| x | 현재 커서 위치의 글자 삭제 | X | 현재 커서 위치의 앞 글자 삭제 |
| dd | 현재 커서 위치의 행 삭제 | 숫자dd | 현재 커서부터 숫자만큼 행 삭제 |
| r | 현재 커서 위치의 글자 수정 | cc | 커서가 위치한 행의 내용 모두 수정 |
| u | 수행한 명령 취소 | U | 해당 행에서 수행한 명령 취소 |
| ?문자열Enter | 커서 위치의 위쪽으로 문자열 검색 | /문자열Enter | 커서 위치의 아래쪽으로 문자열 검색 |
- [명령 모드]에서 특정 문자열을 치환할 때 사용하는 키
| 키 | 기능 |
| :s/문자열1/문자열2/ | 커서가 위치한 행에서 첫 번째로 나오는 문자열1을 문자열2로 치환 |
| :%s/문자열1/문자열2/g | 파일 전체에서 모든 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/ | 범위 내 모든 행의 각행에서 첫 번째로 검색되는 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/g | 범위 내 모든 행에서 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/gc | 범위 내 모든 행에서 문자열1을 문자열2로 치환할 때 수정할지에 대한 여부 확인 |
[라인 모드]에서 사용하는 키
- vi 에디터 명령을 저장하고 종료할 때 사용하는 키
| 모드 | 키 | 기능 |
| 라인 모드 | :q | vi 에디터에서 작업한 내용이 없으면 그냥 종료 |
| “ | :q! | 작업한 내용을 저장하지 않고 종료 |
| “ | :w [파일명] | 파일명을 지정하면 새 파일로 저장, 아니면 그냥 저장 |
| “ | :wq 또는 :wq! | 작업한 내용을 저장하고 vi 에디터를 종료 |
| 명령 모드 | ZZ (Shift+zz) | 작업한 내용을 저장하고 vi 에디터를 종료 |
파일 내용 편집
- vi 편집기를 사용하여 study.txt 파일의 내용을 수정
ex) cp study.txt study_cp.txt
vi study_cp.txt
수정 후 ESC → :wq → 엔터
도움말 사용
- 도움말이 필요할 때 : man 명령
ex) man vi : vi 명령어에 대한 도움말을 출력
도움말을 한 행씩 이동하면서 살펴보려면 엔터 키 누르기
q를 누르면 도움말 종료
vim
i와 a 명령키의 차이
ubuntu linux study
I like linux
커서가 마지막 글자인 x에 있을 때 i 키를 누르고 ‘ ubuntu’를 입력할 경우
ubuntu linux study
I like linu ubuntux
(여기서 a키를 누르고 입력하면 I like linux ubuntu가 됨)
커서가 u(x 앞에)에 있을 때 a키를 누르고 ‘ linu’를 입력할 경우
ubuntu linux study
I like linu ubuntu linux
(여기서 i키를 누르고 입력하면 I like linu ubunt linuux가 됨)
o 명령키를 사용하여 입력 모드로 전환
명령 모드에서 o를 입력하면 커서가 아래 행으로 이동
화면 이동 명령키
기존 명령키 기능 추가 명령키
| 기존 명령키 | 기능 | 추가 명령키 |
| ^u(Ctrl+u) | 반 화면 위로 이동 | |
| ^d(Ctrl+d) | 반 화면 아래로 이동 | |
| ^b(Ctrl+b) | 한 화면 위로 이동 | Page up |
| ^f(Ctrl+f) | 한 화면 아래로 이동 | Page down |
| ^y(Ctrl+y) | 화면을 한 행만 위로 이동 | |
| ^e(Ctrl+e) | 화면을 한 행만 아래로 이동 |
| 명령키 | 기능 |
| G(Shitf+g) | 파일의 마지막 행으로 커서가 이동 |
| 행 번호G(Shift+g) | 지정한 행 번호로 커서가 이동 |
| :행 번호 | 지정한 행 번호로 커서가 이동(마지막 행 모드) |
| :$ | 파일의 마지막 행으로 커서가 이동(마지막 행 모드) |
r 명령키 : 한 글자 수정 (한 글자만 입력하면 바로 명령 모드로 전환)
cw, #s 명령키 : 단어 수정 (단어는 현재 커서 위치부터 시작)
수정 완료 후 Esc를 눌러야 명령 모드로 전환됨
#에는 숫자가 올 수 있음, 숫자에 해당되는 글자만큼 수정
cw vs dw 차이?
cw : 단어 삭제 후 insert O (현재 커서 위치부터 공백 이전까지 지움)
dw : 단어 삭제 후 별도의 명령어 없이 insert X (현재 커서 위치부터 공백까지 지움)
cc 명령키 : 행 단위 수정 (현재 행의 모든 내용 삭제하고 다시 작성(입력 모드)), 행이 지워지진 X
dd : 행 지우고 명령 모드
글자 삭제
x : 현재 커서 위치의 글자 삭제 후 명령 모드
dw : 단어 삭제 후 명령 모드
#x : 현재 커서 위치 기준으로 해당 숫자만큼의 글자를 삭제
D(Shift+d) : 현재 커서 위치부터 행의 끝까지 삭제
dd : 행 전체 삭제 후 명령 모드
이전 명령 취소
| 명령키 | 기능 |
| u | 명령을 취소함 |
| U(Shift+u) | 해당 행에서 한 모든 명령을 취소 |
| :e! | 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업 |
| :undo | u와 같음 |
| :redo | 취소한 명령을 다시 실행 |
복사하기, 잘라내기, 붙이기 명령키
| 명령키 | 기능 |
| yy, #yy | 커서가 위치한 행을 복사함, #에는 복사할 행의 수를 지정 |
| p | 커서가 위치한 행의 아래쪽에 붙임 |
| P (Shift+p) | 커서가 위치한 행의 위쪽에 붙임 |
| dd, #dd | 커서가 위치한 행을 잘라둠, 삭제와 같은 기능, #에는 잘라둘 행의 수를 지정 |
잘라둔 행은 버퍼에 저장됨
마지막 행 모드에서 복사하기, 잘라내기, 붙이기 명령키
| 명령키 | 기능 |
| :#y | # 로 지정한 행을 복사 (ex. 3y는 세번째 행을 복사) |
| :<범위>y | 범위로 지정한 행을 복사 (ex. 2,4y는 2~4행을 복사) |
| :#d | #로 지정한 행을 잘라냄(삭제) (ex. 3d는 세번째 행을 잘라냄) |
| :<범위>d | 범위로 지정한 행을 잘라냄(삭제) (ex. 1,4d는 1~4행을 잘라냄) |
| :pu | 현재 행 다음에 버퍼의 내용을 붙임 |
| :#pu | #로 지정한 행 다음에 버퍼의 내용을 붙임 |
잘라내면 그 잘라낸 부분이 버퍼로 들어감
붙여넣기를 하면 잘라낸 부분이 붙여넣기가 됨
검색 명령키
| 명령키 | 기능 |
| /문자열 | 문자열을 아래 방향으로 검색 |
| ?문자열 | 문자열을 위 방향으로 검색 |
| n | 원래 찾던 방향으로 다음 문자열 검색 |
| N | 역방향으로 다음 문자열 검색 |
바꾸기 명령키
| 키 | 기능 |
| :s/문자열1/문자열2/ | 커서가 위치한 행에서 첫 번째로 나오는 문자열1을 문자열2로 치환 |
| :%s/문자열1/문자열2/g | 파일 전체에서 모든 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/ | 범위 내 모든 행의 각행에서 첫 번째로 검색되는 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/g | 범위 내 모든 행에서 문자열1을 문자열2로 치환 |
| :<범위>s/문자열1/문자열2/gc | 범위 내 모든 행에서 문자열1을 문자열2로 치환할 때 수정할지에 대한 여부 확인 |
파일 관련 명령키
| 키 | 기능 |
| :r 파일 | 지정한 파일을 읽어들여 현재 커서 위치에 삽입 |
| :e 파일 | 지정한 파일로 전환(기존 파일을 :w 로 저장한 뒤에 실행해야 함) |
| :n | vi 시작 시 여러 파일을 지정했을 경우 다음 파일로 작업을 이동 |
cf. Ctrl+^ : 문서 간 창 전환
여러 파일 편집하기
vi test.txt exec.txt exec2.txt
다음 파일 작업 하려면 :n 으로 이동
셸 명령 실행 명령키
| 키 | 기능 |
| :! 셸 명령 | vi 작업을 잠시 중단하고 셸 명령 실행(vi로 돌아오려면 엔터 누르기) |
| :sh | vi를 잠시 빠져나가서 셸 명령을 실행(vi로 돌아오려면 exit 명령을 입력) |
필요성
- 동시 작업: 하나의 vim 화면 안에서 여러 파일(또는 동일 파일의 다른 지점)을 확인하며 편집 가능
- 리소스 절약: 터미널을 여러 개 열 필요 없이 vim 안에서 모두 처리
- 효율성 증가: 소스 코드, 테스트 코드, 로그 파일 등을 함께 볼 때 유용
가로 분할 (Horizontal split)
- :split [파일이름]
- ex) :split main.c
세로 분할 (Vertical split)
- :vsplit [파일이름]
- ex) :vsplit myHeader.h
창 간 이동
- 단축키: Ctrl+w 입력 후 h/j/k/l
- Ctrl+w+w : 순환 이동
'공부 기록 > 리눅스 기초' 카테고리의 다른 글
| [리눅스 기초] 08 관리자 권한 실행 (0) | 2025.11.03 |
|---|---|
| [리눅스 기초] 07 파일 접근 권한 설정 (0) | 2025.11.02 |
| [리눅스 기초] 05 파일 명령어 (0) | 2025.10.31 |
| [리눅스 기초] 04 디렉터리 명령어 (0) | 2025.10.31 |
| [리눅스 기초] 03 디렉터리와 파일 (0) | 2025.10.31 |