vim이 터미널에 문서 경로를 표시하도록 만드는 방법은 무엇입니까?

vim이 터미널에 문서 경로를 표시하도록 만드는 방법은 무엇입니까?

OS X 10.11은 양식의 제어 순서를 해석하는 Terminal.app에 멋진 기능을 추가합니다.

ESC ] 6 ; file://hostname/<path-as-URL> BEL

현재 편집 중이거나 보고 있는 "문서"를 지정합니다. 예를 들어 다음을 입력합니다.

echo -e "\x1b]6;file://localhost/etc/passwd\a"

터미널 제목에 filename 이 표시됩니다. passwd이는 탐색 경로(대부분의 OS X 파일 편집기에 있는 "문서 제목" 기능)를 cmd+클릭하여 얻을 수 있습니다. OS X은 bashrc이미 기본적으로 이 순서를 사용하여 현재 작업 디렉터리를 창 제목에 삽입합니다.

새 파일을 편집할 때 Vim이 이 특정 이스케이프 시퀀스를 출력하도록 하는 방법을 알고 싶습니다(이상적으로는 편집이 중지된 후(예: 종료 시 또는 파일이 변경될 때) 설정을 해제하는 방법). 예를 들어 다른 프로그램에 대한 확장 less도 매우 도움이 될 것입니다.

기술적으로 URL은 적절하게 URL 인코딩되어야 하지만, 그렇지 않더라도 괜찮습니다. 저는 일반적으로 Vim에서 특히 특이한 파일 이름을 가진 파일을 편집하지 않습니다.

답변1

Vim의 정상적인 처리를 포기해도 괜찮다면 titleVim을 하이재킹할 수 있습니다. 이는 터미널로 전송되며 적절한 시퀀스를 내보내도록 조정될 수 있습니다.

set t_ts=^[]6;file://localhost
set t_fs=^G^M
set title
autocmd BufEnter * let &titlestring = expand("%:p")

위에 표시된 제어 문자에 대한 리터럴 문자를 가져오려면 control+v및 then을 사용하세요 . esc셸에는 vim해당 설정을 지우는 기능이 있습니다( VimLeave autocmd7.3에서는 작동할 수 없으며 일시 중지하는 경우 vim문제가 있습니다).

function vim {
    command vim "$@"
    echo -ne "\033]6;\007"
}

:help title자세한 내용을 알아보거나 Vim 파일의 코드를 title확인하세요 .src/term.c

관련 정보