It's just like pok    version4


vim tips : 현재 편집중인 파일이름관련

 | 

얼마전 회사동료분께서 notepad++ 의 ‘Current dir path to Clipboard’ 기능이 파일 편집에 있어서 매우 유용하다라 요지의 말을 했었었다(-_- 한 1년전쯤?) 그리고 친구녀석이 vim에서 같은 기능을 찾았었던것 같다. 요새 Portable Apps 로 컴퓨터 사용환경을 바꾸면서 vim을 꾸미다가 생각이나서 관련자료들을 찾아보았다.

우선 vim에서 현재 편집중인 파일 - 버퍼 - 는 expand(“%”)라는 표현식을 통해서 문자열로 얻을수 있다. 예를들면, vim으로 문서를 열고

:echo expand("%")

라는 명령을 치면 커맨드라인에 현재 편집중인 버퍼의 이름이 출력된다.

둘째로, vim에는 ‘yank’등을 위한 register라는 특수한 변수들이 있다. 이러한 변수들은 @를 사용하여 vim script등에 사용할수 있다. 예를들면 제일만만한 이름없는 레지스터 “에 “hi”라는 값을 집어넣어서 p 단축키를 통해 “hi”를 붙여넣으려면

:let @" = "hi"

라고 커맨드 라인에서 입력하고 편집모드에서 p를 누르면 원하는대로 hi가 붙여넣어질 것이다. (좀더 자세한 사항은 :help let-@) 특별히, win32계열의 gvim에서 @* 는 윈도우 전역 클립보드를 의미한다.

마지막으로 substitute라는 vim 내장함수가 있는데, 이것은 정규표현식을 이용하여 vim script의 문자변수를 치환해준다. 예를들면 현재 편집중인 버퍼이름으로부터 디렉토리 패쓰만을 뽑아오려면

substitute( expand("%"), '\(.*\\\)\(\).*', '\1', 'g' )

와 같이 사용하면 된다. (이 정규표현식에 대한 좋은 설명을 http://www.kldp.org/node/91397 에서 볼수 있다.)

이 세가지 팁들을 합쳐서

:let @*= substitute( expand("%"), '\(.*\\\)\(\).*', '\1', 'g' )

를 입력해주면 현재 편집중인 버퍼의 디렉토리 패쓰가 윈도우 클립보드에 저장되며, ctrl+v 등을 이용하여 붙여넣기 할수 있다. 만일 자주사용된다면 키맵을 하거나 메뉴를 편집하여 추가하면 될것이다.


프로그래밍