728x90
반응형
vi 입력
- vi에디터는 명령 모드와 입력 모드가 명확이 나눠져 있다.
- 제일 처음은 명령모드 상태이다.
- 무언가를 입력하기 위해서는 입력모드로 전환이 필요하다.
입력 모드 전환 명령 키
- i
- 커서 앞에 입력
- 현재 커서 자리에서 입력
- a
- 커서 뒤에 입력
- 현재 커서 다음 자리에서 입력
- o
- 커서가 위치한 행의 다음 행에 입력
- I(대문자 i)
- 커서가 위치한 행의 첫 칼럼으로 이동하여 입력
- A
- 커서가 위치한 행의 마지막 칼럼으로 이동하여 입력
- O
- 커서가 위치한 행의 이전 행에 입력함
i 명령 키를 사용하여 입력 모드로 전환하기
- vi를 실행한 뒤 명령 모드에서 i 명령 키를 입력하고 나서 다음 내용을 입력
- 입력 모드에서 다시 명령 모드로 전환하기 위해 Esc 키를 누르면 커서가 x 위로 이동
i와 a 명령 키의 차이
- 명령 키 i는 커서 앞에, a는 커서 뒤에 입력
- 커서가 마지막 글자인 x 자 위에 있는 상태에서 i를 입력하고 ‘Space Bar+fedora’를 입력한 후 Esc 키를 누르면 명령 모드로 전환되어 마지막 입력 글자인 a 위에 커서가 놓임
- a 명령 키로 입력 모드로 전환한 후 ‘Space Bar+linu’를 입력하면 커서가 위치한 a 다음부터 글자가 입력되고, Esc키를 누르면 명령 모드로 전환되면서 마지막 입력 글자인 u 위에 커서가 놓임
o 명령 키를 사용해 입력 모드로 전환하기
- 명령 모드에서 현재 커서가 위치한 그 다음 행에 글자를 입력
커서 이동하기
- k
- 커서를 한 행 위로 이동함
- j
- 커서를 한 행 아래로 이동함
- l
- 커서를 한 글자 오른쪽으로 이동함
- h
- 커서를 한 글자 왼쪽으로 이동함
- ^ 또는 O
- 커서를 현재 행의 처음으로 이동함
- $
- 커서를 현재 행의 마지막으로 이동함
- -
- 커서를 앞 행의 처음으로 이동함
커서 이동하기
- 초기의 유닉스 vi: 화살표 키로 커서를 이동할 수 없었음
- 리눅스 vi: 화살표 키로도 커서를 이동할 수 있음
- 기존 vi 명령 키와 화살표 키, 페이지 업·다운 키
- k
- 위 화살표 키( ↑ )
- h
- 왼쪽 화살표 키( ← )
- j
- 아래 화살표 키( ↓ )
- ^ 또는 O
- [Home]
- l
- 오른쪽 화살표 키( → )
- $
- [End]
화면 이동하기
- 파일 크기가 터미널의 화면 크기보다 클 경우 화면을 이동하기 위한 명령
화면 이동 명령 키
- ^u (Ctrl+u)
- 반 화면 위로 이동함
- ^d (Ctrl+d)
- 반 화면 아래로 이동함
- ^b (Ctrl+b)
- 한 화면 위로 이동함 [Page Up]
- ^f (Ctrl+f)
- 한 화면 아래로 이동함
- [Page Down]
- ^y (Ctrl+y)
- 화면을 한 행만 위로 이동함
- ^e (Ctrl+e)
- 화면을 한 행만 아래로 이동함
특정 행으로 바로 이동하는 명령 키
- G(Shift + g)
- 파일의 마지막 행으로 커서가 이동함
- 행 번호G(Shift + g)
- 지정한 행 번호로 커서가 이동함
- :행 번호
- 지정한 행 번호로 커서가 이동함(마지막 행 모드)
- :$
- 파일의 마지막 행으로 커서가 이동함(마지막 행 모드)
내용 수정 명령 키
- r
- 커서가 위치한 글자를 다른 글자로 수정함
- cw, #cw
- 커서 위치부터 현재 단어의 끝까지 수정함
- #에는 수정할 단어의 수를 지정함
- 3cw는 커서 위치부터 세 단어를 수정함
- s, #s
- 커서 위치부터 [Esc] 키를 입력할 때까지 수정함
- #에는 수정할 글자의 수를 지정함
- 5s는 커서 위치부터 다섯 글자를 수정함
- cc
- 커서가 위치한 행의 내용을 모두 수정함
- C
- 커서 위치부터 행의 끝까지 수정함
내용 삭제 및 취소
- x, #x
- 커서 위치의 글자를 삭제함
- #에는 삭제할 글자 수를 지정함
- dw, #dw
- 커서 위치의 단어를 삭제함
- #에는 삭제할 단어 수를 지정함
- dd, #dd
- 커서 위치의 행을 삭제함
- #에는 삭제할 행의 수를 지정함
- D( shift +d)
- 커서 위치부터 행의 끝까지 삭제함
- u
- 명령을 취소함
- U
- 해당 행에서 한 모든 명령을 취소함
- :e!
- 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업함
복사 및 잘라서 붙이기
- yy, #yy
- 커서가 위치한 행을 복사함
- #에는 복사할 행의 수를 지정함
- p
- 커서가 위치한 행의 아래쪽에 붙임
- P
- 커서가 위치한 행의 위쪽에 붙임
- dd, #dd
- 커서가 위치한 행을 잘라둠
- 삭제와 같은 기능임
- #에는 잘라둘 행의 수를 지정함
마지막 행 모드에서의 복사 및 잘라서 붙이기
- 마지막 행 모드에서 행을 복사하거나 잘라낼 때는 범위를 지정해서 할 수 있음
- 범위 지정 명령 키
- 1, $ 또는 %
- 1행부터 마지막 행까지 지정함
- 1,.
- 1행부터 커서가 있는 행까지 지정함
- .,$
- 커서가 있는 행부터 마지막 행까지 지정함
- ,-3
- 현재 행과 이전 세 행까지(총 네 행) 지정함
- 10,20
- 10행부터 20행까지 지정함
vi 편집방법
검색하기
- 검색하기 위해 마지막 행으로 이동할 때는 ‘:’이 아니라 ‘/’ 이나 ‘?’를 입력
- 검색하기 명령 키
- /문자열
- 문자열을 아래 방향으로 검색함
- ?문자열
- 문자열을 위 방향으로 검색함
- 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 시작 시 여러 파일을 지정했을 경우 다음 파일로 작업을 이동함
파일 읽어와 삽입하기
- vi test.txt 실행 후 커서를 4행으로 이동한 후, :r exec2.txt를 실행하면 exec2.txt 파일의 내용이 test.txt 파일의 4행 다음에 삽입
vi에서 셸 명령 사용하기
- :! 셸 명령
- vi 작업을 잠시 중단하고 셸 명령을 실행함
- vi로 돌아오려면 [Enter]키를 누름
- :sh
- vi를 잠시 빠져나가서 셸 명령을 실행함
- vi로 돌아오려면 exit 명령을 입력함
기타 명령 키
- Ctrl+ l (소문자 L)
- 현재 화면을 다시 출력함
- Ctrl + g
- 현재 커서 위치의 행 번호를 마지막 행에 출력함
- Shift + j (대문자 J)
- 현재 행과 아래행을 연결하여 한 행으로 만듦
- . (마침표)
- 바로 직전에 했던 명령을 반복함
- ~
- 대문자를 소문자로, 소문자를 대문자로 변경
파일 편집하기
- 파일 편집을 마치고 다른 파일 편집하기
- :e 명령 키는 현재 작업 중인 파일의 작업을 마치고 다른 파일을 편집하려고 할 때 사용
- text.txt 파일 편집을 완료하고 exe.txt 파일 편집으로 바꾸려면 :e exe.txt 사용
- 이때 작업 중이던 파일을 먼저 저장하고 :e 명령을 실행해야 함
- :e 명령 키는 현재 작업 중인 파일의 작업을 마치고 다른 파일을 편집하려고 할 때 사용
- 여러 파일 편집하기
- vi를 시작할 때 파일명을 여러 개 지정
- 파일 작업을 마치고 다음 파일로 이동하려면 :n을 입력
728x90
반응형
'TEAM STUDY > LINUX' 카테고리의 다른 글
유닉스 쉘의 기능과 종류 (0) | 2021.01.16 |
---|---|
[ 리눅스 마스터 ] 디렉토리 ? (0) | 2021.01.13 |
vi 에디터의 개요 (0) | 2021.01.09 |
유닉스의 디렉토리 조작하기 (0) | 2021.01.03 |
유닉스 디렉토리 계층 구조 (1) | 2021.01.02 |