###1. 파일 관련 기능
- 파일 열기
- 저장하기
- 파일브라우저(netrw)
##1. 용어정의
#1. vim terminology (vim 용어)
1) buffer: 파일 편집 위한 임시 공간
==> 편집하는거 자체가 buffer이다. 파일명없이 vim 실행 시 이름 없는 buffer가 작업이 되고, 파일을 저장하면, buffer가 해당 파일에 저장되어 이름을 가지게된다.
2)register: 텍스트 일부를 저장하고 있는 임시 공간
==> dd 문자삭제하여, p로 붙여넣기 할때 그 문자를 저장하는 임시공간
#2 vim에서 다른 파일을 편집하려는 경우
| 명령어 | 설 명 |
| : e [filename] | filename을 편집모드로 오픈 filename 이 생략되면 현재 파일을 다시 오픈 |
| :e #[count] | count번째 파일을 오픈 count가 생략되면 바로 이전 파일이다. |
| : find filename | filename에 해당하는 파일을 검색하여 오픈. 매칭결과가 복수개이면 에러메시지를 출력. |
| CTRL-^ | 명령어 단축키로서 ":e #"과 동일 |
** e: editor
** 실수로 :E 눌렀는데 디렉토리로 트리로 가는구나... 좋다 !
:find ~/tmp //절대경로
Ctrl+^(6) 은 이전 편집 창으로 돌아가기
#3 복수개 파일 열기
vim file1 file2 file3
:n => next
:N => back (반대방향)
#4
| 명령어 | 설명 |
| :q[!] | 현재 창(window) 종료 !는 강제종료(저장하지 않고 종료할 때 유용함) |
| :qa[!] | (quit all) 모든 창을 종료 복수개의 창을 열고 있을 때 유용. |
| :wq | 저장하면서 종료 : x 를 주로 사용 또는 입력창에서 ZZ |
| :wqa | 저장하면서 종료하되 모든 창에 대해 종료 |
a: all
#5 파일저장
| 명령어 | 설명 |
| : w [filename] | filename이 지정되면 해당 파일에 쓰기를 지정(복사본) filename이 생략되면 현재 파일에 쓰기를 지정 사본을 만든 경우에는 편집중인 파일은 원래 파일로 편집한다. |
| :sav file | (saveas) 현재 파일을 다른 이름으로 저장. 편집중인 파일도 새로 저장된 파일로 교채됨. |
| :up | 변경된 점이 있는 경우만 ":w" 명령어를 실행. up:업데이트 |
| :x | up+quit (up : 업데이트) (일반모드는 ZZ 로~) |
#6 파일저장의 예
| 명령어 | 설 명 |
| :10,50w history | 10~50번 행을 history라는 파일로 저장. |
| :.,+10w history | 현재행 ~ 아래로 10번행을 history 파일에 저장 |
| :10,$w history | 10 ~ 끝까지.. history 파일에 저장 |
| :%w history | 전체를 history파일로 저장, 즉 %는 있으나 없으나 결과는 동일 |
#7 vim으로 디렉터리 열기
명령모드
:e . : 아까 내가 발견한 E 입력해서 디렉터리 연 것처럼 동일 기능.
e . == E
Ctrl^ 은 이전에 실행한 곳으로 가는 명령어 적용가능.
디렉토리창에서 F1 키는 help창 뜸.
디렉토리창에서의 명령어

netrw(con't) 디렉토리 창에서 아래 명령어 적용. // netrw(con't) 디렉토리창 == 파일탐색기
| 명령어 | 설명 |
| <Enter> | 파일을 현재 창에 열어준다 |
| i | 파일 표시방법 변경(한줄, 파일정보도 함께, 와이드형식, 트리방식) |
| s | 정렬방식을 바꿔줌(이름 순,시간 순,크기 순) |
| o | 커서위치의 파일을 수평 분할된 새창으로 열어줌 |
| v | 커서 위치의 파일을 수직 분할된 새 창으로 열어줌 |
| p | 커서위치의 파일을 미리보기 창으로 열어줌 (미리보기 창닫기는 <CTRL-W> z 나 :pclose를 사용 |
| t | 새로운 탭으로 분할하여 열어줌 |
| - | 상위 디렉토리로 이동 |
ctrl ^ (6번) 왔다갔다하는 명령어 .
###2. 복수의 파일 다루기
- 분할창( split window)
- 탭(tab page)
#1
수평분할
<CTRL-W> s
:sp [file]
필자는 :sp 방식 선호 , ctrl-w s는 손가락아프고 잘 안먹힘..
수직분할
<CTRL-W> v
:vs [file]
#2 창분할, 생성 명령
| 명령어 | 설명 |
| :[#]sp [파일명] [#]CTRL-W s |
상하로 창을 분할. 파일명을 생략하면 현재 파일을 의미. #는 분할창의 크기(생략시 이전 창의 절반크기) |
| :[#]vs [파일명] [#]CTRL-W v |
좌우로 창 분할 |
| :[#]new [#]CTRL-W n |
상하로 분할하고 위쪽에 새로운 창 만듦. |
| :[#]vnew [#]CTRL-W v |
좌우로 창 분할하고, 왼쪽에 새로운 창을 만듦 |
* vim 실행 옵션: -o , -O Vim 파일 실행할 때 애초에 분할한 상태에서 열어주는 역할.

O : 수직분할, -o 수평분할
vim FILE1 -O FILE2
#3 창 이동 관련 명령
| 명령어 | 설명 |
| CTRL-W CTRL-방향키 CTRL-W 방향키 (창 3개 이상인 경우) |
방향키 h,j,k,l 이나 화살표 키 사용가능 |
| CTRL-W CTRL-W CTRL-W w (메뉴얼 볼때) |
현재 창에서 오른쪽 방향으로 이동 오른쪽 끝 창이면 아래로 내려간다. |
| CTRL-W CTRL-P CTRL-W p |
바로 이전에 사용한 창으로 이동 |
#4 창 크기 관련 명령
| 명령어 | 설명 |
| CTRL-W= | 모든 창 크기 동일하게 조절 |
| CTRL-W [#]+ | #크기만큼 크기 키움( #을 생략하면 1을 키움) |
| CTRL-W[#]- | #크기만큼 크기 줄임(#생략시 1을 줄임) |
diff


편집기안에서 가능
해당 블로그참고‘:
비교할 코드 창에 추가로 만들어서 비교 기준 창에서 :diffthis
https://danguria.tistory.com/210
vim에서 diff 사용하기
커맨드창에서 두개의 파일을 비교 하는 방법은 vimdiff a.c b.c 이렇게 바로 실행 할 수도 있고, 아래와 같이 실행 할 수도 있따.(수평 분할) vim a.c :diffs b.c (:diffsplit b.c) 수직 분할하려 비교 하려면
danguria.tistory.com
해당 블로그 유익한 글.(특히 이미 에디터 켜진 상태에서 diff 하는 방식 있음)
do (get) , dp(put) 통해 하나로 통일 시키는 merge 가능
#5 분할 창의 단점
1) 분할 할 때마다 원래 창의 크기가 줄어듦 => 탭 페이지 기능이 필요함.
#6 탭 열기 vim 실행 옵션 : -p
복수의 파일을 탭으로 열기) vim -p file1 file 2 file3
| 명령어 | 설명 |
| :[#]tabe[dit] file | #번째 탭에 파일을 연다. #을 생략 시 현재 탭 뒤에 생성 e:editor (editor생략해서 tabe 로 씀) |
| :[#]tabnew file | #번째 위치에 비어있는 탭을 만듦 |
| :[#]tabc[lose] | #번째 탭을 닫음. #을 생략하면 현재 탭을 닫음. |
** o 나 O는 수직/수평분할.
#7 tabpage cmd(con't)
1) 탭 사이 이동명령(tabnext, tabprev)는 key map[후술]이 편함
| 명령어 | 설명 |
| :[#]tabn[ext] [#]gt [#]<CTRL-PageDown> |
다음 탭으로 이동하며, 일반 모드의 gt와 동일. #에 숫자를 지정하면 탭 번호 지정 |
| :[#]tabp[revious] [#]gT [#]<CTRL-PageUp> |
이전 탭으로 이동하며 일반 모드의 gT와 동일 #에 숫자 지정 시 반복수가 지정됨 |
| :tabm[ove] [#] | #번쨰 탭으로 현재 탭 이동 시킴(0부터 시작) #이 생략 되면 가장 오른쪽으로 이동시킴. |
###3 Buiffer
- buffers 목록
- goto
##1. vim buffer =file

하기에 명령모드에서 버퍼 목록 확인가능
:files
:buffers
이 둘은 현재 버퍼 목록을 출력한다.
버퍼는 저장이 되기 전 anonymous(이름 없는) 공간이다.
#2 파일 번호에 상태 플래그 (flags)
| 기호 | 의미 |
| % | 현재 편집 중인 버퍼 |
| # | 바로 이전에 열었던 버퍼 혹은 다음에 열도록 예비된 버퍼 ctrl-^ 를 누르면 #이 표시된 파일이 열림. |
| a | 활성화된 버퍼(현재 화면에 보이는 버퍼) 창 분할 기능을 쓰는 경우, 여러 파일에 a 표시가 나타남. |
| + | 변경된 부분이 있는 버퍼 |
#3 커서 아래의 파일명을 인식하여 오픈 하는 기능:ㅣ
gf(이동), CTRL-^ (이전파일로 되돌아가기)

C파일을 만들어서 VIM에디터내에서 헤더파일에 커서 올려놓고 gf 를 누르면 하기와 같이 정의로 가게 된다

원래 파일로 돌아오는 명령 ctrl+^
#4 커서 위 파일 열기 명령어
| 명령어 | 설명 |
| gf | 커서 위치의 파일명을 인식해서 열어줌 |
| <CTRL-W> f | 커서 위치의 파일명을 분할된 창에 열어줌 |
| <CTRL-W> gf | 커서 위치의 파일명을 탭에 열어줌 |
| <CTRL-^> | 이전 파일로 되돌아감. |
해당 내용은 프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.
'프로그래머스 > 리눅스' 카테고리의 다른 글
| 리눅스의 기초 (4-1) -File System (basic) (0) | 2022.11.06 |
|---|---|
| 리눅스의 기초(3-7) encoding, 편리한 기능들 (vim editor Final) (0) | 2022.11.06 |
| 프로그래머스 리눅스(3-5) 문자열 (0) | 2022.11.06 |
| 리눅스(기초 3-4) vim의 매뉴얼 (0) | 2022.11.05 |
| 리눅스 기초 (3-3) vim editor(패키지) (0) | 2022.11.05 |