2012-07-07 4 views
2

최근에 vim 설정에 sessionman 플러그인을 추가했는데, 지금까지이 플러그인을 좋아합니다.상태 줄에 현재 세션 파일명 추가하기

vim은 세션이 사용 중일 때 세션 파일 이름에 v:this_session을 설정하고이를 내 상태 표시 줄에 추가하고 싶습니다. 불행하게도 v:this_session에는 전체 파일 경로가 포함되어 있으며 길이가 너무 길어서 상태 표시 줄에 맞지 않는 경우가 많습니다.

제 질문은 : 전체 경로가없는 파일 이름을 v:this_session에서 어떻게 추출하고 내 상태 표시 줄에 추가 할 수 있습니까?

감사합니다.

답변

4

을, 빔이 파일의 마지막 구성 요소에 대한 :t 같은 :help filename-modifiers있다.

:echo fnamemodify(v:this_session, ':t') 
+0

유용한 루틴입니다! 어떤 이유로 든 (버전 5.2에서 소개되었지만!) 인식하지 못했습니다. 감사! –

+0

감사합니다. 사람을 도울 수있는 쪽지 : 테스트 할 때 세션을로드하자마자 상태 표시 줄에 아무 것도 표시하지 않고 그 이유를 알 수 없었습니다. 세션이 실제로 statusline 값을 저장한다는 것을 알려주고 ** statusline이 업데이트되기 전에 저장된 ** 모든 세션이로드시 잘못 변경되었습니다. 해결책은 간단히 세션 파일에서'statusline' 항목을 삭제하는 것입니다. – ereOn

1

슬래시 문자는 모든 운영 체제에서 Vim의 경로 구분 기호로 사용되므로 전체 경로에서 파일 이름을 얻으려면 경로의 마지막 구성 요소를 추출하는 것으로 충분합니다. matchstr() 또는 substitute() 기능을 사용할 수 있습니다 하나 일 경우 :이를 위해

substitute(t, '^.*/', '', '') 

또는

matchstr(t, '[^/]*$') 
+0

감사 : (당신이 % 같은 빔 내장 된 파일 식별자를 수정하려는 경우 또는 expand()) 당신은 fnamemodify() 기능을 사용할 수 있습니다. 상태 선을 작성하여이 내용을 포함시키는 방법에 대한 아이디어가 있습니까? – ereOn

+0

@ereOn : 평상시와 같이'statusline' 옵션을 설정할 때 단지'% {}'-field를 사용하십시오. [: setstatline + = % {matchstr (t, '[^ /] * $')}'또는': let & statusline + = '% {matchstr (t, "[^ /] * $")} '. StackOverflow (또는 일반적으로 인터넷)에서 Vim 상태 라인 구성 검색에 대한 추가 정보를 얻으려면. 이것은 잘 다루어 져 있습니다 (http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that-own.html). –