Como posso fazer com que o vim mostre o caminho do documento no Terminal?

Como posso fazer com que o vim mostre o caminho do documento no Terminal?

OS X 10.11 adiciona um recurso interessante ao Terminal.app que interpreta sequências de controle do formulário

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

como especificar o "documento" que está sendo editado ou visualizado no momento. Como exemplo, entrar

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

fará com que o título do terminal exiba o filename passwd, que pode ser clicado com cmd + para obter uma trilha de navegação (um recurso do "título do documento" na maioria dos editores de arquivos no OS X). O padrão do OS X bashrcjá usa esta sequência para inserir o diretório de trabalho atual no título da janela.

Eu gostaria de saber como posso fazer com que o Vim produza essa sequência de escape específica sempre que editar um novo arquivo (e, idealmente, como desativá-lo quando a edição for interrompida - por exemplo, ao sair ou alterar o arquivo). Extensões para, por exemplo, lesse outros programas também seriam muito úteis.

Embora o URL tecnicamente deva ser codificado de maneira adequada, estou totalmente bem se não for - normalmente não edito arquivos com nomes de arquivo particularmente incomuns no Vim.

Responder1

Se você não se importa em desistir do titlemanuseio usual no Vim, você pode sequestrar isso. Ele emite para o terminal e pode ser ajustado para emitir as sequências apropriadas:

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

Use control+ve then escpara obter os caracteres literais dos caracteres de controle mostrados acima. Uma função vimem seu shell eliminará a configuração ( VimLeave autocmdnão consegui trabalhar no 7.3 e também há o vimproblema se você suspender).

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

:help titlepara obter detalhes sobre titleou dê uma olhada no src/term.carquivo Vim para obter o código.

informação relacionada