프로그래밍 공부
작성일
2022. 9. 26. 22:58
작성자
WDmil
728x90

리눅스 문서편집기

GUI 환경인 그놈에서 제겅화는 gedit

유닉스에서부터 사용했던 행 편집기와 화면 편집기

구분 종류
행 단위 편집기 ed, ex, sed
화면 단위 편집기 vi, emacs
GUI 편집기 gedit

행 단위 편집기

  • ed : 유닉스 초기 편집기 잘 안쓴다
  • ex : 행 편집이지만 vi에 연결하여 vi의 확장자형태로 사용
  • sed : 스트림 편집기로 일반적 편집기와 다르게 지시명령에 따라 파일의 내용을 일괄적으로 바꿔서 출력해준다.

화면단위 편집기

  • vi : 리눅스에서 일반적으로 사용할 수 있는 화면 편집기
  • emacs : 제공하는 기능이 매우 다양하지만, 사용법이 어렵고 복잡하여 전문가가 사용

모드형과 비모드형 편집기

모드형

  • 입력모드, 명령모드 구분
  • 입력모드 = 텍스트 입력 , 명령모드 = 텍스트 수정, 삭제, 복사, 붙여넣기 가능한 모드
  • 같은 글자라도 입력모드에서는 텍스트로 명령모드에서는 편집 명령으로 사용
  • vi 는 모드형 편집기

비모드형

  • 입력과 명령이 구분되어 있지 않음
  • 편집기능을 Ctrl이나 Alt같은 특수키와 같이 사용
  • 한글과 워드는 비모드형 편집기
구분 모드형 (vi) 비모드형 (메모장)
입력 모드 텍스트 입력
명령모드 복사 yy Ctrl + c
붙이기 p Ctrl + v
저장 :wq, ZZ Ctrl + s
모드 전환 i, a, o, esc 해당 없음

Vi 시작과 종료

vi 시작

  • 파일을 지정할 경우 : 해당 파일이 있으면 파일의 내용이 열리고 아니면 빈 파일이 열린다.

vi 종료

  • 명명모드나 마지막 행 모드에서 저장하고 종료 가능
구분 명령 키 기능
마지막 행 모드 :q vi에서 작업한 것이 없을 때 그냥 종료한다.
:q! 작업한 내용을 저장하지 않고 종료한다.
:w [ 파일명 ]  작업한 내용을 저장만 한다. 파일명을 지정하면 새 파일을 생성해서 저장한다.
:wq, wq! 작업한 내용을 저장하고 vi를 종료한다.
명령 모드 ZZ ( Shift + zz ) 작업한 내용을 저장하고 vi를 종료한다.

입력 모드로 전환하기

명령 키 기능
i 커서 앞에 입력한다.
a 커서 뒤에 입력한다.
o 커서가 위치 한 행의 다음 행에 입력한다.
I 커서가 위치한 행의 첫 칼럼으로 이동하여 입력한다.
A 커서가 위치한 행의 마지막 칼럼으로 이동하여 입력한다.
O 커서가 위치한 행의 앞 행에 입력한다.

커서 이동하기

명령 키 기능
k 커서를 한 행 위로 이동한다.
j 커서를 한 행 아래로 이동한다
l 커서를 한 글자 오른쪽으로 이동한다.
h 커서를 한 글자 왼쪽으로 이동한다.
^또는 O 커서를 현재 행의 처음으로 이동한다.
$ 커서를 현재 행의 마지막으로 이동한다.
- 커서를 앞 행의 처음으로 이동한다.
+ 또는 Enter 커서를 다음 행의 처음으로 이동한다.
H 커서를 화면의 맨 윗행으로 이동한다.
M 커서를 화면의 중간 행으로 이동한다.
L 커서를 화면의 맨 아랫행으로 이동한다.
w 커서를 다음 단어의 첫 글자 위치로 이동한다.
b 커서를 앞 단어의 첫 글자 위치로 이동한다.
e 커서를 다음 단어의 마지막 글자 위치로 이동한다.

화면 이동하기

기존 명령 키 기능 추가 명령 키
^u(ctrl + u) 반 화면 위로 이동한다.  
^d(ctrl + d) 반 화면 아래로 이동한다.  
^b(ctrl + b) 한 화면 위로 이동한다. Page Up
^f(ctrl + f) 한 화면 아래로 이동한다. Page Down
^y(ctrl + y) 화면을 한 행만 위로 이동한다.  
^e(ctrl + e) 화면을 한 행만 아래로 이동한다.  

특정 행으로 바로 이동하기

  • 원하는 행으로 커서를 바로 이동
  • 예:
  • 60G -> 60행으로 이동
  • 40(enter) -> 40행으로 이동
명령 키 기능
G(Shift + g) 파일의 마지막 행으로 이동한다
행 번호G(Shift + g) 지정한 행 번호로 이동한다.
:행번호 지정한 행 번호로 이동한다(마지막 행 모드)
:$ 파일의 마지막 행으로 이동한다(마지막 행 모드)

내용 수정하기

명령 키 기능
r 커서가 위치한 글자를 다른 글자로 수정한다
cw, #cw 커서부터 현재 단어의 끝까지 수정한다. #에는 수정할 단어의 수를 지정한다. 예를 들어 3cw는 커서 위치부터 세 단어를 수정한다.
s, #s 커서부터 Esc 키를 입력할 때 까지 수정한다 # 에는 수정할 글자 수를 지정한다. 예를 들어 5s는 커서 위치부터 다섯 글자를 수정한다.
cc 커서가 위치한 행의 내용을 모두 수정한다.
C 커서 위치부터 행의 끝까지 수정한다.

네임드 버퍼 사용하기

언네임드 버퍼

  • 이름을 붙이지 않은 버퍼
  • yy 명령키로 복사하거나 dd명령키로 잘라내기를 할 경우, 복사하거나 잘라낸 내용이 저장
  • 언네임드 버퍼는 내용을 하나만 저장

네임드 버퍼

  • 이름을 붙여서 사용할 수 있는 버퍼
  • 네임드 버퍼를 사용하면 각각 다른 이름을 붙인 버퍼에 독립적으로 내용을 저장하고 사용
  • 넹비드 버퍼에 이름을 붙일 때는 "+문자 또는 "+ 숫자(숫자 버퍼)의 형태로 사용
  • 네임드 버퍼 : "a, "b, "c, "d ..., "z
  • 숫자 버퍼 : "1, "2, "3, "4, "5...., "9
  • 네임드 버퍼에 커서가 위치한 행을 저장하려면 '버퍼 이름 +yy를 입력
  • a버퍼에 복사한 내용을 저장하려면 "ayy를 입력
  • 네입드 버퍼의 내용을 붙이려면 "ap와 같이 버퍼이름 +p를 입력

마지막 행 모드에서 복사하기, 잘라내기, 붙이기

마지막 행 모드에서 행을 복사하거나 잘라낼 때는 범위를 지정해서 할 수 있음.

명령키 기능 기능
1,$ 또는 % 1행부터 마지막행까지 지정한다/.
1, 1행부터 커서가 있는 행까지 지정한다
,3 커서가 있는 행부터 마지막 행까지 지정한다
,-3 현재 행과 이전 세번째 행까지 (총 네행)을 지정한다
10,20 10행부터 20행까지 지정한다
명렁키 기능 기능
:#y #로 지정한 행을 복사한다 3y는 3행복사
:<범위>y 범위로 지정한 행을 복사한다. 예를들어 2,4y는 2~4행을 복사한다.
:#d #로 지정한 행을 잘라낸드(삭제). 예를들어 3d는 3행을 잘라낸다.
:<범위>d 범위로 지정한 행을 잘라낸다(삭제). 예를들어 1,4d는 1~4행을 잘라낸다.
:pu 현재 행 다음에 버퍼의 내용을 붙인다.
:#pu #로 지정한 행 다음에 버퍼의 내용을 붙인다. 예를들어 4pu와 같이 지정한다.

검색하기

검색하기 위해 마지막 행으로 이동할 때는 :이 아니라 /이나 ?를 입력한다

명령 키 기능
/문자열 문자열을 아래방향으로 검색한다.
?문자열 문자열을 위 방향으로 검색한다.
:n 원래 찾던 방향으로 다음 문자열을 찾는다.
:N 역방향으로 다음 문자열을 찾는다.

 

바꾸기

기존의 문자열을 다른 문자열로 바꾸려면 먼저 :을 입력하여 마지막 행 모드로 이동

커서 위치의 문자열만 바꿀 수도 있고, 파일 전체나 특정 범위 내에서 해당하는 문자열을 모두 바꿀 수도 있음.

명령키  기능
:s/문자열1/문자열2/ 커서가 위치한 행에서 첫번째로 나오는 문자열 1을 문자열 2로 바꾼다
:%s/문자열1/문자열2/  

파일 읽어오기, 여러파일 편집하기

명령 키 기능
:r 파일명 지정한 파일을 읽어들여 현재 커서 위치에 삽입한다.
:e 파일명 지정한 파일로 전환한다 ( 기존파일을 :w로 저장한 뒤 실행해야 한다.)
:n vi 시작시 여러 파일을 지정했을 경우 다음 파이로 작업을 이동한다.

 

파일 편집을 마치고 다른 파일 편집하기

:e 명령 키는 현재 작업 중인 파일의 작업을 마치고 다른 파일을 편집하려고 할 때 사용

test.txt 파일 편집을 완료하고 exec.txt 파일 편집으로 바꾸려면 :e exec.txt 사 용

이때 작업 중이던 파일을 먼저 저장하고 :e 명령을 실행해야 함

파일을 저장하지 않고 :e exec.txt를 실행하면 다음과 같은 오류 메시지가 출력

 

여러 파일 편집하기

vi를 시작할 때 파일명을 여러 개 지정

파일 작업을 마치고 다음 파일로 이동하려면 :n을 입력

 

vi에서 쉘 명령 사용하기

명령 키 기능
:! 셸 명령 vi작업을 잠시 중단하고 셸 명령을 실행한다(vi로 돌아오려면 Enter 키를 입력해야 한다.
:sh vi를 잠시 빠져나가서 셸 명령을 실행한다(vi로 돌아오려면 exit 명령을 이볅해야 한다.)

기타 명령 키

명령 기능
Ctrl + l [ 소문자 L ] 현재 화면을 다시 출력한다
Ctrl + g 현재 행 번호를 마지막 행에 출력한다.
Shift + j 현재 행과 아랫 행을 연결하여 한 행으로 만든다.
, 바로 직전에 했던 명령을 반복한다.

vi환경 설정 방법

사용자 홈 디렉터리에 vimrc 파일로 저장

환경변수 EXTINIT에 지정

vi의 마지막 행 모드에서 명령으로 실행

vi 환경 설정 명령(set)

set 명령 과 옵션 기능
set nu 파일 내용의 각 행에 행 번호를 표시한다( 보이기만 할 뿐 저장되지는 않는다)
set nonu 행 번호를 감춘다.
set list 눈에 보이지 않는 특수 문자를 표시한다
set nolist 특수 문자를 감춘다
set showmode 현재 모드를 표시한다
set noshowmode 현재 모드를 감춘다.
set set로 설정한 모든 vi환경 설정 값을 출력한다.
set all 모든 vi 환경 변수와 현재 값을 출력한다.

 

728x90