vi 에디터

EEEFFEE·2023년 10월 26일
0

Linux 환경

목록 보기
1/9

23.10.26 최초 작성

리눅스 환경에서 주로 사용하는 문서 편집기로는 크게 행 단위 편집기, 화면 단위 편집기로 나눌 수 있다. 이 중 vi의 기능과 특징에 대해 알아보도록 한다.

화면 단위 편집기특징
vi리눅스에서 일반적으로 사용하는 편집기
emacs제공하는 기능이 다양하지만 사용법이 복잡하다

행 단위 편집기특징
ed유닉스 초기의 행 편집기
ex주로 vi와 조합해 vi에 기능을 더 편리하게 하는 역할
sed지시된 명령에 따라 파일의 내용을 일괄적으로 바꿔 출력

1. vi 환경 설정

  • vi 에디터의 설정은 홈 디렉토리의 .exrc 파일로 저장

  • 환경 변수를 EXTINIT에 지정

  • vi의 마지막 행 모드에서 설정 가능

1.1 환경 설정 명령


환경 설정 명령기능
:set nu파일에 각 행 번호를 표시 (실제 값 X)
:set nonu행 번호를 감춤
:set list눈에 보이지 않는 특수문자 표시
:set nolist특수문자 감춤
:set showmode현재 모드 표시
:set noshowmode현재 모드 감춤
:setset으로 설정한 모든 vi 환경 설정 값 출력
:set all모든 vi 환경 변수와 현재 값 출력

1.2 .exrc 파일에 설정

  • 사용자 홈 디렉토리에 .exrc 파일로 저장

  • 기본적으로 없는 파일이므로 직접 작성해야 함

  • 파일에는 set 명령과 옵션 지정

  • vi 실행시 마다 적용됨

set nu
set list

1.3 EXINIT 환경변수에 설정

EXINIT = 'set nu list'
export EXINIT

au FileType * setl fo-=cro	
syntax on / off
set number / nonumber
set wrap / nowrap
set hlsearch
set ignorecase
set ts = 4
au BufReadPost * if line("'\'")|execute("normal '\"")|endif

  1. 자동 주석
  2. c문법에 맞는 파일인지 검사
  3. 행 번호 표시(=nu)
  4. 행이 길어질 경우 아래 행에 표시되는 것처럼 보임
  5. 검색 시 결과를 색깔로 표시
  6. 대소문자 구분 없이 검색
  7. 탭 크기를 4로 지정
  8. 파일을 열 때 원래 작성하던 위치로 자동으로 이동

2. vi 사용법

  • 명령 모드 : 파일의 내용을 수정, 복사, 붙여넣기 등의 작업을 수행하는 모드
  • 입력 모드 : 파일의 내용을 입력하는 모드
  • 마지막 행 모드 : 문서 작성을 마무리하고 검색, 저장 등의 작업을 하는 모드
vi [filename]	///filename을 이름으로 가진 파일을 생성하고 편집을 시작한다.

2.1 마지막 행 모드

입력기능
:qvi에서 작업한 것이 없을 때 종료
:q!작업한 내용을 저장하지 않고 종료
:w[파일명]작업한 내용을 저장
:wq, :wq!작업한 내용을 저장하고 종료

범위 지정기능
1.$, 1.%1행부터 마지막 행까지 지정
1..1행부터 커서가 있는 행까지 지정
..$커서가 있는 행부터 마지막 행까지 지정
.-3현재 행과 이전 세 행까지 지정
10.2010행부터 20행 지정

복사, 잘라내기기능
:(번호)y지정한 행 복사 (1y)
:(번호.번호)y범위로 지정한 행 복사 (2.4y)
:(번호)d지정한 행 잘라내기 (3d)
:(번호.번호)d지정한 행 잘라내기 (1.4d)
:pu현재 행 다음에 버퍼의 내용 붙이기
:(번호)pu지정핸 행 다음에 버퍼의 내용 붙이기 (4pu)

검색 (/이나 ?으로 진입)기능
/(문자열)문자열을 아래 방향으로 검색
?(문자열)문자열을 위 방향으로 검색
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 (파일)지정한 파일로 전환 (기존 파일 저장해야 함)
:nvi 시작 시 여러 파일을 지정했을 경우 다음 파일로 이동

쉘 명령어 사용기능
:! 쉘 명령vi 작업을 잠시 중단하고 쉘 명령 실행 (Enter시 vi 복귀)
:shvi를 잠시 중단하고 쉘 명령 실행 (exit 입력시 복귀)

2.2 명령 모드

입력 관련기능
ZZ작업한 내용을 저장하고 종료
i커서 앞에서부터 입력 시작
a커서 뒤어서부터 입력 시작
o커서가 위차한 행의 다음 행에 입력
I커서가 위치한 행의 첫 요소로 이동해 입력
A커서가 위치한 행의 마지막 요소로 이동해 입력
O커서가 위치한 행의 이전 행에 입력

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

화면 이동기능
ctrl + u반 화면 위로 이동
ctrl + d반 화면 아래로 이동
ctrl + b한 화면 위로 이동
ctrl + f한 화면 아래로 이동
ctrl + y한 행 화면 위로 이동
ctrl + e한 행 화면 아래로 이동

특정 행으로 이동기능
gg파일의 첫 행으로 커서 이동
G파일의 마지막 행으로 커서 이동
(번호)G지정한 행으로 커서 이동
:(번호)지정한 행으로 커서 이동 (마지막 행 모드)
:$파일의 마지막 행으로 커서 이동 (마지막 행 모드)

내용 수정기능
r커서가 위치한 글자를 다른 글자로 수정 (Esc 입력 필요 없음)
cw, #cw커서 위치부터 현재 단어의 끝까지 수정 (#에는 수정할 단어의 수)
s, #s커서 위치부터 Esc 입력할 때 까지 수정
cc커서가 위치한 행의 내용 모두 수정
C커서 위치부터 행의 끝까지 수정

내용 삭제기능
x, #x커서 위치의 글자 삭제 (#에는 삭제할 글자의 수)
dw, #dw커서 위치의 단어 삭제 (#에는 삭제할 단어의 수)
dd, #dd커서 위치의 행 삭제 (#에는 삭제할 행의 수)
D커서 위치부터 행 끝까지 삭제

복사 / 자르기기능
yy, #yy커서가 위치한 행을 복사 (#에는 복사할 행의 수)
p커서가 위치한 행의 아래쪽에 붙임
P커서가 위치한 행의 위쪽에 붙임
dd, #dd커서가 위치한 행을 잘라둠 (#에는 자를 행의 수)

버퍼 사용하기

  1. 언네임드 버퍼

    • yy, dd 명령 키로 복사하거나 잘라낸 경우 복사하거나 잘라낸 내용이 저장되는 공간

    • 내용을 하나만 저장 가능

  2. 네임드 버퍼

    • 각각 다른 이름을 붙인 버퍼에 독립적으로 내용을 저장하고 사용

    • 이름을 붙일 때 "(문자), "(숫자)의 형태로 사용 ("a, "1)

    • 네임드 버퍼에 커서가 위치한 행을 저장하려면 (버퍼 이름)yy를 입력 ("ayy)

    • 버퍼의 내용을 입력하려면 "(버퍼 이름)p를 입력 ("ap)


기타 명령기능
ctrl l현재 화면 다시 출력
ctrl g현재 커서 위치의 행 번호 마지막 행에 출력
shift j현재 행과 아랫행을 연결해 한 행으로 만듬
.바로 직전에 했던 명령 반복

2.3 입력 모드

입력 모드기능
esc명령 모드로 복귀

0개의 댓글

관련 채용 정보