본문 바로가기

스터디/리눅스 커맨드라인

[리눅스] 12. VI

 

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