*usr_22.txt* Vim version 7.4 대상. 새로 고침: 2012년 11월 15일 VIM 사용설명서 - Bram Moolenaar 저 정지용 역 편집할 파일 찾기 파일이 여기저기 사방에 흩어져 있습니다. 어떻게 원하는 파일을 찾을 수 있을까요? Vim을 이용하면 다양한 방법으로 디렉터리 구조를 둘러볼 수 있습니다. 한 파일 안에 적혀있는 경로를 따라가 파일을 편집하는 명령도 있습니다. Vim은 그동안 편집했었던 파일들의 목록도 기억합니다. |22.1| 파일 탐색기 |22.2| 현재 디렉터리 |22.3| 파일 찾기 |22.4| 버퍼 목록 다음 장: |usr_23| 특별한 파일 편집하기 이전 장: |usr_21| 나갔다가 되돌아오기 차례: |usr_toc|
*22.1* 파일 탐색기 Vim 플러그인으로 디렉터리의 내용을 수정할 수 있습니다. 다음 명령을 실행해보세요:
:edit .
자동명령(autocommand)과 Vim 스크립트가 수행되면서 디렉터리의 내용이 창에 표시됩니다. 표시되는 내용은 다음과 같습니다.
" ============================================================================
" Netrw Directory Listing (netrw v109)
" Sorted by name
" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$
" Quick Help:
<F1>
:help -:go up dir D:delete R:rename s:sort-by x:exec" ============================================================================
../
./
check/
Makefile
autocmd.txt
change.txt
eval.txt~
filetype.txt~
help.txt.info
다음 내용들이 표시됩니다: 1. 탐색 프로그램의 이름과 버전 번호 2. 탐색 중인 디렉터리의 이름 3. 정렬 기준 (이름, 시간, 크기 중 하나) 4. 이름이 어떻게 정렬되었는지 (디렉터리 우선, 그 후 *.h 파일, *.c 파일, 등) 5. 도움말을 어떻게 보는지(<F1>
키 사용), 그리고 사용 가능한 명령들의 약어 목록 6. 상위 디렉터리를 나타내는 "../"를 포함한 파일 목록 문법 강조를 사용하면, 각 부분이 다른 색으로 표시되어 구별하기 쉬워집니다. Vim의 보통 모드 명령들을 사용해서 내용 위를 움직이며 파일들을 편집할 수 있습니다. 예를 들어, 파일명 위로 커서를 옮긴 후,<Enter>
를 눌러보십시오. 그 파일을 편집하도록 바뀌었을 것입니다. 다시 탐색기로 돌아가려면 ":edit ." 명령이나 ":Explore" 명령을 사용하십시오.CTRL-O
를 사용해도 됩니다. 이번에는 커서를 디렉터리명 위로 옮긴 후,<Enter>
를 눌러보십시오. 탐색기가 그 디렉터리로 이동한 후, 디렉터리의 내용을 보여주도록 바뀌었을 것입니다. 커서를 첫 번째 디렉터리인 "../"로 옮긴 후<Enter>
를 누르면 상위 디렉터리로 이동할 수 있습니다. 아니면 커서를 옮길 필요도 없이 "-"키를 눌러도 됩니다.<F1>
키를 눌러서 netrw 파일 탐색기에서 할 수 있는 일들에 대한 도움말을 볼 수 있습니다. 도움말의 내용은 다음과 같습니다:
9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help
MAPS netrw-maps
<F1>
.............Help.......................................|netrw-help
|
<cr>
.............Browsing...................................|netrw-cr
|
<del>
............Deleting Files or Directories..............|netrw-delete
|-................Going Up...................................|
netrw--
|a................Hiding Files or Directories................|
netrw-a
|mb...............Bookmarking a Directory....................|
netrw-mb
|gb...............Changing to a Bookmarked Directory.........|
netrw-gb
|c................Make Browsing Directory The Current Dir....|
netrw-c
|d................Make A New Directory.......................|
netrw-d
|D................Deleting Files or Directories..............|
netrw-D
|
<c-h>
............Edit File/Directory Hiding List............|netrw-ctrl-h
|i................Change Listing Style.......................|
netrw-i
|
<c-l>
............Refreshing the Listing.....................|netrw-ctrl-l
|o................Browsing with a Horizontal Split...........|
netrw-o
|p................Use Preview Window.........................|
netrw-p
|P................Edit in Previous Window....................|
netrw-p
|q................Listing Bookmarks and History..............|
netrw-q
|r................Reversing Sorting Order....................|
(등등)netrw-r
|<F1>
키를 누르면 netrw 디렉터리 탐색기의 도움말 페이지로 갑니다. 일반 도움말과 같으니, |CTRL-]
|로 태그의 도움말로 갔다가 |CTRL-O
|로 돌아올 수 있습니다. 표시하고 편집할 파일을 고르려면: (커서를 파일명 위에 놓은 채로)<enter>
파일을 현재 창에서 열기. |netrw-cr
| o 화면을 수평으로 쪼개고 파일을 표시. |netrw-o
| v 화면을 수직으로 쪼개고 파일을 표시. |netrw-v
| p |preview-window
|(미리보기 창)을 사용. |netrw-p
| P 이전 창에서 편집. |netrw-P
| t 새 탭에서 파일 열기. |netrw-t
| 아래 보통 모드 명령은 탐색기의 표시를 제어하는데 사용합니다: i 목록 형식을 제어(짧게, 길게, 넓게, 트리로). 긴 목록에는 크기와 날짜 정보가 표시됩니다. s s를 누를 때마다 파일이 정렬되는 방식이 바뀝니다. 이름 또는 변경한 시간, 크기순으로 정렬됩니다. r 정렬 순서를 뒤집습니다. 그 밖의 보통 모드 명령을 몇 개 보면: c Vim의 현재 디렉터리를 탐색중인 디렉터리로 바꿉니다. (디렉터리를 바꾸려면 |g:netrw_keepdir
|도 참고하세요.) R 커서 밑에 있는 파일이나 디렉터리를 바꿉니다. 새 이름을 입력받을 프롬프트가 나옵니다. D 커서 밑에 있는 파일이나 디렉터리를 지웁니다. 한 번 더 확인을 받을 것입니다. mb gb 책갈피를 만들거나, 이동합니다. 명령줄도 사용하는 분들이 있을 텐데요, 역시 몇 가지만 살펴보겠습니다: :Explore [directory] 지정한 혹은 현재 디렉터리를 탐색 :NetrwSettings 현재 netrw 설정의 종합 목록. 도움말도 연결되어있음. netrw 브라우저는 컴퓨터 내의 파일만 보는 것뿐 아니라, 다음과 같은 url도 볼 수 있습니다: (맨 끝의 / 가 중요합니다) :Explore ftp://somehost/path/to/dir/ :e scp://somehost/path/to/dir/ 더 자세한 내용은 |netrw-browse
|를 참고하세요.
*22.2* 현재 디렉터리 셸과 마찬가지로, Vim에도 현재 디렉터리라는 개념이 있습니다. 현재 디렉터리가 홈 디렉터리이고, "길고긴디렉터리이름"이라는 디렉터리안의 파일들을 열고 싶다고 합시다. 다음과 같이 할 것입니다:
:edit 길고긴디렉터리이름/file1.txt
:edit 길고긴디렉터리이름/file2.txt
:edit 길고긴디렉터리이름/file3.txt
타자치는 양을 줄이고 싶다면 다음과 같이 하면 됩니다:
:cd 길고긴디렉터리이름
:edit file1.txt
:edit file2.txt
:edit file3.txt
":cd" 명령은 현재 디렉터리를 바꿉니다. 현재 디렉터리는 ":pwd" 명령으로 확인할 수 있습니다:
:pwd
/home/Bram/길고긴디렉터리이름
Vim은 마지막으로 사용한 디렉터리를 기억합니다. "cd -"를 사용하면 가장 마지막으로 사용한 디렉터리로 돌아갑니다. 예:
:pwd
/home/Bram/길고긴디렉터리이름
:cd /etc
:pwd
/etc
:cd -
:pwd
/home/Bram/길고긴디렉터리이름
:cd -
:pwd
/etc
특정 창에 대해서만 디렉터리 설정하기 ------------------------------------ 창을 나누면, 두 창이 모두 같은 현재 디렉터리를 갖게 됩니다. 새 창에서는 다른 디렉터리에 있는 여러 파일을 편집하고 싶다면, 원래 창의 현재 디렉터리는 놔둔 채 새 창만 다른 디렉터리로 설정할 수 있습니다. 바로 창 한정 디렉터리(window local directory) 기능입니다.
:pwd
/home/Bram/길고긴디렉터리이름
:split
:lcd /etc
:pwd
/etc
CTRL-W
w:pwd
/home/Bram/길고긴디렉터리이름
":lcd" 명령어가 사용되지 않으면, 모든 창이 같은 현재 디렉터리 값을 공유하게 됩니다. 어느 창에서 ":cd" 명령을 사용하든지, 모든 창의 현재 디렉터리가 바뀌기 때문입니다. 하지만 ":lcd"로 현재 디렉터리가 지정된 경우에는 바뀌지 않습니다. 즉, 다른 창에서 ":cd"나 ":lcd"를 하더라도 아무 영향이 없습니다. 현재 디렉터리가 따로 설정되어있는 창에서 ":cd" 명령을 수행하면, 다시 다른 창들과 현재 디렉터리를 공유하게 됩니다.
*22.3* 파일 찾기 C 프로그램을 편집하는 중에 다음과 같은 내용이 있다고 해봅시다:#include "inits.h"
"inits.h"의 내용을 보려면, 커서를 파일명이 있는 곳으로 옮긴 후 다음 명령을 사용하면 됩니다:
gf
Vim은 해당 파일을 찾아서 열 것입니다. 하지만 파일이 현재 디렉터리에 없다면 Vim이 파일을 찾지 못합니다. 이때는 'path' 옵션을 사용하면 됩니다. 이 옵션은 파일을 찾을 디렉터리들을 지정합니다. "c:/prog/include"에 포함(include)시킬 헤더파일들을 모아놓았다고 합시다. 다음 명령으로 'path' 옵션에 경로를 추가할 수 있습니다:
:set path+=c:/prog/include
이 디렉터리는 절대경로로 표현되어있습니다. 따라서 현재 편집 중인 파일의 디렉터리에 상관없이 항상 같은 경로를 가리킬 것입니다. 만약 현재 편집 중인 파일의 하위 디렉터리에 찾을 파일들을 모아놓았다면 어떻게 해야 할까요? 이때는 상대경로로 지정하면 됩니다. 상대경로는 마침표(.)로 시작합니다:
:set path+=./proto
위 명령은 파일을 현재 "gf"를 사용하는 파일이 있는 디렉터리 하위의 "proto"라는 디렉터리에서 찾도록 지정합니다. 따라서 "init.h" 위에서 "gf"를 하면, 현재 파일이 있는 디렉터리를 기준으로 "proto/inits.h" 파일을 찾게 됩니다. "./"없이 "proto"만 지정하는 경우에는 현재 디렉터리를 기준으로 "proto" 디렉터리를 찾습니다. 현재 디렉터리는 현재 편집 중인 파일의 디렉터리와 다를 수 있다는 데 주의하십시오. 'path' 옵션은 이 외에도 파일을 찾을 디렉터리를 지정할 수 있는 여러 가지 방법을 제공합니다. 'path' 옵션의 도움말을 참고하십시오. 'isfname' 옵션은 어떤 문자가 파일명에 포함되고, 어떤 문자는 포함되지 않는지를 지정합니다(예를 들어, 위 예에서 " 문자는 포함되지 않습니다). 파일명은 아는데 현재 편집 중인 파일에 나오지 않아 "gf"를 쓸 수 없을 때는, 다음 명령을 사용하십시오:
:find inits.h
'path' 설정을 참고하여 파일을 찾습니다. 이 명령은 'path'에서 파일을 찾는다는 점만 빼고 ":edit" 명령과 동일합니다. 파일을 열 때 새 창에서 열려면 "gf" 대신
CTRL-W
f를, ":find" 대신 ":sfind"를 쓰면 됩니다. 처음 Vim을 시작할 때 'path'안 어딘가에 있는 파일을 열려면 다음과 같이 하면 됩니다:
vim "+find stdio.h"
위 명령은 'path' 설정에서 "stdio.h"를 찾아서 열어줍니다. 따옴표는 find명령 전체를 하나의 인자로 만들기 위해 사용했습니다 |
-+c
|.
*22.4* 버퍼 목록 Vim은 현재 편집중인 파일을 표현하기 위해 문자열 버퍼를 사용합니다. 사실, 버퍼는 현재 편집중인 파일의 복사본입니다. 실제로는 버퍼를 변경하다가, 편집이 끝나면 버퍼의 내용을 파일에 쓰게 됩니다. 버퍼는 파일의 내용뿐 아니라, 마크나 옵션 등등 편집에 필요한 여러 가지 내용을 갖고 있습니다. 숨겨진 버퍼 ----------- 하나.txt 파일을 편집하는 도중에, 둘.txt 파일을 편집해야 한다고 합시다. ":edit 둘.txt" 명령으로 간단하게 편집중인 파일을 바꿀 수 있지만, 하나.txt 파일에 고친 내용이 있을 경우에는 동작하지 않을 것입니다. 하지만 고친 내용을 섣불리 하나.txt 파일에 저장하고 싶지도 않다면, 다음 명령을 사용하면 됩니다:
:hide edit 둘.txt
"하나.txt" 버퍼는 화면에서 사라지지만, 이 버퍼를 사용하고 있다는 정보는 그대로 남습니다. 따라서 변경한 사항들도 계속 유지됩니다. 이 기능은 내용이 있지만, 화면에는 나타나지 않는 버퍼란 의미에서 숨겨진 버퍼라고 합니다. ":hide" 명령의 인자는 다른 명령입니다. ":hide" 명령은 다른 명령을 마치 'hidden' 옵션을 켠 것처럼 동작하게 만듭니다. 대신 'hidden' 옵션을 켜도 됩니다. 이 경우 어떤 버퍼도 사라지지 않고 모두 숨겨진 상태가 됩니다. 주의하십시오! 변경사항이 있는 숨겨진 버퍼가 있을 경우, Vim을 종료하기 전에 꼭 모든 버퍼를 저장해야만 합니다. 비활성 버퍼 ----------- 버퍼가 한 번이라도 사용되면, Vim에는 그에 대한 정보가 기록됩니다. 어떤 버퍼가 화면에 표시되지 않고, 숨겨진 상태도 아닌 경우라도 버퍼목록에는 남아있습니다. 이런 버퍼를 비활성 버퍼라고 합니다. 전체적으로 다음과 같은 버퍼들이 있습니다: 활성 화면에 표시되고, 문서내용이 로드됨. 숨겨짐 화면에 표시되지는 않으나, 문서내용이 로드됨. 비활성 화면에 표시되지도 않고, 문서내용도 로드되어 있지 않음. 비활성 버퍼도 마크 같은 다른 정보들의 기록을 위해 여전히 남아있습니다. 또한, 최근에 내가 어떤 파일을 열어봤는지 알려주므로, 나중에 그 파일을 다시 열고 싶을 때도 유용합니다. 버퍼 목록 보여주기 ------------------ 버퍼 목록을 보려면 다음 명령을 사용하면 됩니다:
:buffers
조금 이름이 이상하긴 하지만, 다음의 짧은 명령도 똑같이 버퍼 목록을 보여줍니다:
:ls
다음과 같이 버퍼목록이 표시됩니다:
1 #h "help.txt" line 62
2 %a+ "usr_21.kox" line 1
3 "usr_21.txt" line 1
줄의 맨 앞에는 버퍼 번호가 옵니다. 이 번호로 버퍼의 이름을 모두 입력할 필요 없이 버퍼를 선택할 수 있습니다. 아래 설명을 참고하십시오. 버퍼 번호 다음에는 버퍼의 상태 표시 문자들이 옵니다. 그 뒤에는 파일의 이름과 마지막으로 커서가 위치했던 줄의 번호가 나옵니다. 상태 표시 문자는 다음과 같습니다 (왼쪽에서 오른쪽 순서): u 목록에 없는 버퍼 |unlisted-buffer
|. % 현재 버퍼. # 교대 버퍼. a 버퍼가 로드되었고 화면에 표시됨. h 버퍼가 로드되었지만 숨겨짐. = 읽기 전용 버퍼 - 버퍼 내용을 수정할 수 없음, 'modifiable' 설정이 꺼져있음. + 버퍼에 수정사항이 있음. 버퍼 편집하기 ------------- 파일명을 모두 칠 필요 없이, 다음과 같이 버퍼 번호로 버퍼를 선택할 수 있습니다::buffer 2
하지만 번호를 알려면 버퍼 목록을 봐야하는 단점이 있습니다. 이때는 파일명이나 파일명의 일부를 대신 쓸 수도 있습니다:
:buffer help
Vim은 입력한 이름과 일치하는 버퍼를 찾습니다. 만약 일치하는 버퍼가 하나 밖에 없다면, 그 버퍼가 사용됩니다. 위 예의 경우에는 "help.txt"입니다. 버퍼를 새 창에서 열려면:
:sbuffer 3
물론 버퍼 번호가 아니라 이름을 써도 됩니다. 버퍼 목록 사용하기 ------------------ 다음 명령들로 버퍼 목록을 돌아다닐 수 있습니다: :bnext 다음 버퍼로 가기 :bprevious 이전 버퍼로 가기 :bfirst 첫 버퍼로 가기 :blast 마지막 버퍼로 가기 버퍼를 목록에서 지우려면 다음 명령을 사용하십시오:
:bdelete 3
역시 버퍼 이름이나 그 일부를 써도 됩니다. 만약 활성 버퍼(창에 표시된)를 지운 경우에는, 해당 창이 닫힙니다. 현재 버퍼를 지우면, 현재 창이 닫힙니다. 만약 창이 하나 밖에 없는 경우에는, Vim이 편집할 다른 버퍼를 찾아서 표시합니다. 아무것도 편집하지 않는 상태란 없습니다!
Note:
":bdelete"로 버퍼를 지운 경우에도, Vim에는 버퍼 정보가 남아있습니다. 사실 ":bdelete"로는 버퍼가 "목록에 없는" 상태가 될 뿐이고, 이 버퍼는 ":buffers"명령으로 표시가 안 됩니다. ":buffers!" 명령은 이런 "목록에 없는" 버퍼까지 보여줍니다(Vim에게 불가능이란 없습니다). 진짜로 버퍼를 지우고 싶다면 ":bwipe" 명령을 사용하십시오. 'buflisted' 옵션도 참고하십시오.
다음 장: |usr_23| 특별한 파일 편집하기 저작권: |manual-copyright| 참고 vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on 2013. 12. 14. (토) 20:47:01 KST