1. vi를 왜 배워야 할까?
- vi는 어디에서나 사용할 수 있는 장점이 있다. 원격 서버나 x의 환셩설정이 망가진 로컬 시스템처럼 그래픽 환경이 지원되지 않는 시스템을 접하게 됐을 때에도 사용할 수 있다.
- vi는 가볍고 빠르다.
2. vi 시작과 종료
vi를 시작하기 위해서는 아래와 같이 입력하면 된다.
$ vi
~ VIM - Vi IMproved
~
~ version 8.2.3489
~ by Bram Moolenaar et al.
~ Vim is open source and freely distributable
~
~ Become a registered Vim user!
~ type :help register<Enter> for information
~
~ type :q<Enter> to exit
~ type :help<Enter> or <F1> for on-line help
~ type :help version8<Enter> for version info
~
vi 편집기를 종료하려면,
Esc -> : -> q
esc + : + q를 순서대로 입력하면 된다. (본인은 vim 명령어를 사용하기 esc는 습관적으로 입력한다. vi는 esc는 입력하지 않아도 된다.)
★ esc를 누르면 편집기는 명령어 모드로 전환된다. 명령어 모드에서 : 를 누르게 되면 마지막 행 입력 모드라는 것으로 들어가게 되는데
편집기에서 나가고 싶으면 q를 수정된 내용을 저장하고 싶으면 w, 저장 후 나가고 싶으면 wq를 입력하고 엔터를 누르면 된다.
여기서..
마지막 행 입력 모드에서 !(느낌표) 기호도 어떠한 역할을 하는데, 그 역할은 '강제'이다.
마지막 행 입력 모드에서 wq! 를 입력하고 엔터를 누르면, 수정된 내용을 '강제로 저장 후 나가기' 라는 의미를 가지게 된다.
3. 편집 모드
# foo.txt가 있으면 삭제
$ rm -f foo.txt
# foo.txt 파일 생성 후 편집
$ vi foo.txt
위의 명령어를 입력하면 foo.txt 편집을 한다.
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"foo.txt" [New]
~ 기호들은 해당 줄에 아무런 텍스트가 없다는 것을 나타낸다. 즉 파일이 비어있담는 뜻이다.
텍스트 입력 모드로 들어가기
: 텍스트 입력 모드로 들어가기 위해서는 I 키(i)를 입력하면 된다. ( 본인은 vim 확장 모드에서 실행되기에 A 키를 입력한다. I도 가능)
-- INSERT --
입력 모드에서 종료하기를 원하면 esc를 입력한다.
저장하기
: 파일에 변경된 사항을 저장하기 위해서는 반드시 ex 명령어를 명령어 모드에서 입력해야 한다.
: 키를 입력하면 클론 기호가 화면 아래에 나타난다.
:
변경된 파일을 저장하려면, 클론 다음에 w 문자를 입력하고 엔터키를 누른다.
:w
4. 커서 이동
커서 이동 키
- L 또는 오른쪽 방향키 : 오른쪽 한 문자
- H 또는 왼쪽 방향키 : 왼쪽 한 문자
- J 또는 아래쪽 방향키 : 한 줄 아래로
- K 또는 위쪽 방향키 : 한 줄 위로
- 0 (zero) : 현재 줄 처음으로
- SHIFT-6 (^) : 현재 줄 첫 번째 공백이 아닌 글자로
- SHIFT-4 ($) : 현재 줄 마지막으로
- W : 다음 단어나 구두점 기호 처음으로
- SHIFT-W : 다음 단어 처음으로, 구두점 무시
- B : 이전 단어나 구두점 기호 처음으로
- SHIFT-B : 이전 단어나 구두점 기호 무시
- CTRL-F 또는 PAGE DOWN : 한 페이지 아래로
- CTRL-B 또는 PAGE UP : 한 페이지 위로
- number-SHIFT-G : 줄 번호로 이동
- SHIFT-G : 파일의 마지막 줄로
5. 기본 편집
텍스트 덧붙이기
: vi는 a 명령어를 통해서 텍스트 덧붙이기 위한 명령어를 제공한다.
텍스트 문장의 맨 끝($) 으로 이동한 다음, a를 입력하면 그 줄 끝을 지나 입력할 수 있게끔 이동한다. 그 다음에 텍스트 입력 모드로 들어가게 된다.
즉 a 명령어는 입력모드가 실행되기 전에 이미 커서를 줄의 맨 끝으로 이동시켜주기 때문에 매우 편리하다.
빈줄 추가
줄을 띄우는 방법 또한 텍스트 입력 모드에서 들어갈 수 있는 방법이다.
- o : 현재 줄 아래에 빈 줄 추가
- O : 현재 줄 위에 빈 줄 추가
텍스트 삭제
텍스트 삭제 명령어
- x : 현재 문자
- 3x : 현재 문자를 포함한 다음 2개 문자
- dd : 현재 줄
- 5dd : 현재 줄을 포함한 다음 4줄
- d| : 현재 커서 위치부터 다음 단어 앞까지
- d$ : 현재 커서 위치부터 현재 줄 끝까지
- d0 : 현재 커서 위치부터 현재 줄 맨 앞까지
- d^ : 현재 커서 위치부터 그 줄의 공백이 아닌 첫 번째 글자까지
- dG : 현재 줄부터 그 파일 끝까지
- d20G : 현재 줄부터 파일의 20번째 줄까지
텍스트 자르기, 복사하기 그리고 붙이기
: d 명령어가 단순히 텍스트 삭제만 하는 기능이 아니라 삭제하고 복사하는 '자르기' 기능도 수행한다.
d 명령어로 텍스트를 자르고 p 명령어를 통해서 복사한 텍스트를 붙여놓을 수 있다.
d 명령어로 복사하는 것 뿐만 아니라 해당 텍스트를 자르지 않고 복사하는 명령어도 있다.
복사 명령어
- yy : 현재 줄
- 5yy : 현재 줄을 포함한 다음 4줄
줄 합치기
- j 명령어 : 해당 줄 커서에서 j를 입력하면 밑의 줄과 합쳐진다.
6. 다중 파일 편집
파일 간 전환
- :n -> 다음 파일로 전환하기 위한 명령어
- :N -> 이전 파일로 되돌아가기 위한 명령어
vi는 다른 파일로 전환할 때, 현재 파일이 저장되지 않았으면 파일을 전환할 수 없도록 되어있다.
강제로 파일을 전환하고 변경 사항을 저장하지 않으려면 명령어에 느낌표(!)를 붙이면 된다.
다른 파일 열어서 편집
: 현재 편집 세션에 파일을 추가할 수도 있다. ex 명령어인 :e (edit의 준말)을 통해서 다른 파일을 열 수 있다.
$ vi foo.txt
:e ls-output.txt
파일 내용을 다른 파일로 복사
$ vi foo.txt
:buffers
1 %a "foo.txt" line 4
Press ENTER or type command to continue
(ENTER)
# 1번 파일을 연다.
:buffer 1
'스터디 > 리눅스 커맨드라인' 카테고리의 다른 글
[리눅스] 14. 패키지 관리 (0) | 2022.05.08 |
---|---|
[리눅스] 13. 프롬프트 커스터마이징 (0) | 2022.05.08 |
[리눅스] 11. 환경 (0) | 2022.04.27 |
[리눅스] 10. 프로세스 (0) | 2022.04.25 |
[리눅스] 9. 퍼미션 (0) | 2022.04.25 |