공부 기록/리눅스 기초

[리눅스 기초] 06 우분투 에디터

도도히히 2025. 11. 2. 21:29

텍스트 편집기

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 : 순환 이동