Keep going
텍스트 에디터 본문
Vim
- console 중심의 text editor만 사용가능한 경우가 있다. 데스크탑 버전이 아닌 서버 버전을 하게 되면 console을 만들게 된다. console terminal → graphic gui 사용 불가
- 유닉스/리눅스가 가지고 있는 가장 기본적인 text editor
Vim 파일 여는 방법
- vi + filename
- 가장 마지막에 커서 대기
- vi + n(숫자) filename
- 파일의 n번째 줄에서 커서 대기
- vi + /pat(패턴) filename
- 해당하는 패턴에 대해서 호출, 존재하는 패턴중 첫번째위치에서 커서 대기
- -R
- read only 파일
VI 종료하기
- w filename
- 수정하고 있는 파일은 유지, 새로운 파일명으로 저장
- 새로운 파일 작성하면 입력한 파일명으로 저장
- 저장만 함 꺼지지는 않음
- w
- 현재 파일명으로 파일 저장(저장만 함 꺼지지는 않음)
- q
- vi 종료 (이미 저장된 파일)
- wq
- 수정된 파일 저장하고 종료
- q!
- 저장하지 않고 강제 종료
- ZZ
- :wq와 같다.
파일 복구
- vi가 중단되어 파일을 저장하지 못 한 경우가 있다.
- 모든 text editor 들은 swap file을 가지고 있다.
- ex) b라는 파일은 vi로 editing 하는 동안은 swap file이 존재하게 되고 시스템 문제가 생겨서 vi 강제로 꺼질 상황에도 .b.swp파일 살아있다면 -r 옵션을 통해 해당 내용을 불러올 수 있다.
- vi -r
- 복구 가능한 모든 파일들을 리스트 한다.
- vi -r filename
- vi 를 열고 이전의 내용들을 복구 시킨다.
VI에서의 3가지 모드
- Insert mode
- 명령모드에서 i, a, o, I, A, O 명령을 통해서 입력 모드로 넘어 갈 수 있다. 입력 모드로 가게되면, 자유롭게 코드나 글을 작성할 수 있다. 명령 모드로 다시 돌아오려면 "Esc"를 누르면 된다.
- Command mode
- 처음 vi를 시작하게 되면 들어가게 된다. 방향키를 이용하여 커서를 이동할 수 있으며 명령어를 이용해 파일을 수정할 수 있다.
- Line mode
- 명령 모드에서 ' : ' , ' / ' , ' ? ' 를 이용하면 화면 맨 밑단에 :_____ 하며 입력을 할 수 있는 공간이 나온다. 여기서 파일을 저장하고 나간다던키 콜론을 통한 특별한 명령어를 적어줄수 있게 하는 명령어 모드이다.
커맨드 모드에서 커서 움직이기
- ←(h) ↓(j) ↑(k) →(l)
- ^ - 공백을 제외한 현재 행의 맨 앞으로 커서 이동
- $ - 현재 행의 맨 뒤로 커서 이동
- 화면 단위 커서 이동
- ctrl +b : 위로 한 화면 스크롤
- ctrl + f : 아래로 한 화면 스크롤
- ctrl + u : 위로 1/2 화면 스크롤
- ctrl + d : 아래로 1/2 화면 스크롤
커맨드 모드에서 입력 모드로 넘어가기
- i
- 현재 커서 위치에 삽입
- a
- 현재 커서 바로 다음위치에 삽입
- o
- 현재 줄 다음 위치에 삽입
- I
- 현재 줄의 처음에서 삽입
- A
- 현재줄의 끝에서 삽입
- O
- 현재 줄 위 줄로 삽입
커맨드 모드에서 파일 수정
- x
- 커서가 위치한 곳의 글자 1개 삭제
- 5x : 문자 5개 삭제
- dd
- 커서가 위치한 곳의 한 줄 삭제
- p로 복구 가능
- 4dd : 4행 삭제. 삭제가 되는 것처럼 보이지만 실제로는 버퍼에 들어가 있다. 버퍼에 들어가 있기 때문에 p를 이용해서 붙여넣기 가능하다.
- D
- 커서에서부터 맨 뒤쪽까지 삭제
- p로 복구 가능
- dw
- 커서가 위치한 곳에서 부터 단어 삭제 (커서가 위치한 곳부터 띄어쓰기 까지)
- p로 복구 가능
- yy
- 현재 줄을 버퍼로 복사
- 5yy : 현재 줄부터 5줄 복사
- p
- 현재 커서의 그 다음 커서에 붙이기
- 현재 줄의 그 다음 줄에 붙이기
- P
- 현재 커서에 붙이기
- 현재 줄에 붙이기
- v
- 문자 단위로 복사 할 영역 선택
- V
- 줄 단위로 복사 할 영역 선택
- r
- 한 문자 변경
- 8r : 8문자 변경
- R
- 현재 커서부터 덮어 쓰기. ESC로 끝내기
- C
- 현재 커서부터 줄의 끝까지 대체 . ESC로 끝내기
- S
- 전체 줄 대체. ESC로 끝내기
- 4S : 4개 줄 대체
- cw
- 현재 커서부터 한 단어 대체. ESC로 끝내기
라인 모드에서 움직이기
- :n → 파일의 n번째 줄로 이동
- :$ → 파일의 마지막 줄로 이동
- :$= → 파일의 전체 줄의 수 출력
- :.= → 현재 줄의 수를 출력
라인 모드에서 파일 수정하기
- : begin, end s/pattern1/pattern2/flag
- 패턴 1에서 패턴 2로 변경하기
- begin, end는 범위
- 숫자로 지정
- % - 전체 파일
- $ - 마지막 줄 표현
- . - 현재 줄 표현
- begin,end가 없다면 커맨드는 현재줄에서 적용된다.
- flag
- g - 모든 찾는 경우
- c - 사용자에게 물어봄
라인 모드에서 텍스트 검색
- /문자열
- 현재 커서 위치에서부터 파일 앞쪽으로 문자열 탐색
- ?문자열
- 현재 커서 위치에서 부터 파일 뒤쪽으로 문자열 탐색
라인 모드에서 다른 옵션들
- : begin, end w 파일명
- 시작 라인부터 끝 라인 까지 수정하고 있는 구역을 특정한 파일명으로 바꿀 수 있다.
- : 1,. w! 파일명
- 첫번째 줄부터 현재 위치까지 수정하고 있는 구역을 특정한 파일명으로 바꾼다.(파일명이 이미 존재한 파일이어도 덮어써진다.)
- :1,.w >> 파일명
- 첫번째 줄부터 현재 줄까지 내용을 특정한 파일에 추가하는 것이다.
- >> : append 시킨다.
- > : 파일을 새로 처음부터 적는다.
- :r 파일명
- 커서의 현재 위치부터 주어진 파일명 읽어온다.
- :e 파일명
- 파일 수정 종료하고 새로운 파일 읽어준다.
- :! 명령어
- shell 명령어 실행시킨다.
- :r! 명령어
- 쉘 명령어 실행시키고 파일에 결과 출력
UNDO & REDO & .
- u - 방금 한 명령 취소
- ^r (ctrl r) - 명령 취소한 것 재 명령
- . - 마지막 명령 반복
vi 환경 설정하기
- :set number / :set nonumber
- 라인수 보여주기/ 끄기(d)
- :set list / :set nolist
- 특수문자 보여주기/ 특수문자 숨기기(d)
- :set showmode / :set noshowmade
- 편집 상태를 하단에 보여주기 / 편집 상태를 숨기기 (d)
- :set tapstop=#(숫자)
- tab 간격 지정
- 나갔다 오면 초기화된다.
Comments