Programming Insights

Linux vi 본문

Programming/LINUX

Linux vi

PassiveIncomePioneer 2023. 10. 1. 07:46

vi Editor = 리눅스에서 메모장 이라고 생각!

# vi ->빈문서 편집 ( 문서 파일 작업 및 생성)

# vi 편집할 파일명 ->지정한 파일 열고 편집

**vi editor : 문서편집기

명령,실행(EX),입력모드가 있음.

명령모드

-vi의 기본모드

-vi가 처음실행되거나, 입력모드에서 ESC키 누른경우

-커서이동,문자열수정,복사&붙여넣기 등

-엔터키 누 필요 없 이 각각의 명령에 따른 버튼 누르면 바로 실행.

★커서이동 : 텍스트편집기의 방향키라고 생각

h
커서를 왼쪽으로 이동
j
커서를 아래로 이동
k
커서를 위로 이동
l
커서를 오른쪽으로 이동

★커서이동(단어단위)

W,w
다음 단어의 처음으로 이동
E,e
단어의 끝으로 이동
B,b
단어의 처음으로 이동

소문자 : 공백 및 특수기호를 기준으로 단어인식

※_(언더바)는 글자로본다.

대문자 : 공백만 기준으로 단어인식

★커서이동(행단위)

0(zero)
행의 처음으로 이동
$
행의 마지막으로 이동

G
문서의 마지막으로 이동
gg
문서의 처음으로 이동

 

★명령모드 -> 입력모드

i
현재 커서에서 입력모드로 변경
a
현재 커서에서 우측으로 한칸 이동 후 입력 모드로 변경
o
커서 아래에 새로운 행을 추가하고 입력모드로 변경
O
커서 위에 새로운행을 추가하고 입력모드로 변경

x
커서가 있는 문자 삭제(delete키와 가음)
X
커서가 있는 앞 문자 삭제(Backspace키)
dd
현재 커서의 행 삭제
숫자 + dd
현재커서부터 숫자만큼 행 삭제
ex) 5dd(커서 기준으로 3줄 삭제)
yy
현재 커서가 있는 라인을 복사
숫자 + yy
현재 커서부터 숫자만큼의 행을 복사
p
복사한 내용을 현재 커서 이후에 붙여넣기(커서이후줄)
P
복사한 내용을 현재 커서 이전에 붙여넣기(커서이전줄)
u
되돌리기(u는 undo)
Ctrl + r
앞으로(r은 redo)
r
한 글자 치환

dw : w이동한 만큼 삭제

yw : w이동한 만큼 복사

--------------------------------------------------------------

입력모드

-버퍼에 내용을 입력할 수 있는 모드

-명령상태에서 a, i , o ,O등의 키를 누르면 진입

-왼쪽 하단에 --INSERT--라고 표시됨

--------------------------------------------------------------

EX모드(실행모드) ->실행모드는 무조건 엔터쳐야함 !

esc눌러 명령모드

검색

/Pattern
Pattern을 검색
?Pattern
Pattern을 검색

 

/

패턴이 검색 된 후 n 키를 통해 위 -> 아래 방향으로 계속 찾기

패턴이 검색 된 후 N 키를 통해 아래 -> 위 방향으로 계속 찾기

?

패턴이 검색 된 후 N 키를 통해 위 -> 아래 방향으로 계속 찾기

패턴이 검색 된 후 n 키를 통해 아래 -> 위 방향으로 계속 찾기

치환

:[범위]s/[Old]/[New]/[옵션] Old를 New로 치환

여기서 s는 string

[옵션]은 g만 존재.

g를 쓰면 라인의 모든 부분 변경가능.

한줄에 여러개의 단어가 존재할 경우 다 바꿔준다

g를 쓰지않을경우는

한줄에 여러개의 단어가 있어도 처음 찾은단어만 바꿔줌.

치환법

1)범위 생략

:s/[바꿀대상]/[바꾸고싶은이름]/g

g없을시 : 현재 커서에 있는 줄에서 맨 처음 찾은 것만 치환

g있을시 :현재 커서에 있는 줄에 있는 모든것 치환

2)n

:10s/sam/madal/g

10번째 줄에 있는 "sam"을 "madal"로 치환

3)n,m

:3,10s/sam/madal/g

3번째 줄~10번째까지 "sam" -> "madal"로 치환

4)%(문서전체)

:%s/sam/madal/g

문서 전체에 "sam" -> "madal"로 다 치환

shell 명령어 : 명령어 해석기, 통역사 역할!

:.! [command] : vi를 잠시 중단하고 명령어 수행

:..! [command] : 수행한 명령의 결과를 vi 편집기로 출력

:e [filename]
파일열기
:enew
현재 창을 닫고 빈 문서를 연다
:q
종료(변경된 내용이 없는 경우)
:q!
강제 종료(변경된 내용이 있어도 무시)
:w
현재 파일 저장
:w [파일이름]
다른이름으로 파일 저장
:wq
파일 저장 후 종료

파일 및 실행 관련

:w >> [filename]
filename에 내용추가
ex>
:w >> ./2/txt
:f
현재 작업중인 파일의 이름과 , 라인수
:[n]r[filename]
filename 파일의 내용을 현재 편집중인 파일의 n라인 아래부터 삽입
:[n]r![command]
command 실행결과를 파일을 n 라인 아래부터 삽입

ETC

:set nu 줄번호 매김!

**실습**