Como posso obter o vim para mostrar o caminho do documento no Terminal?

0

O OS X 10.11 adiciona um recurso interessante ao Terminal.app que interpreta sequências de controle no formato

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

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

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

fará com que o título do terminal exiba o nome do arquivo passwd , que pode ser cmd + clicado 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 bashrc já usa essa sequência para inserir o diretório de trabalho atual no título da janela.

Gostaria de saber como posso obter o Vim para gerar essa seqüência de escape específica sempre que editar um novo arquivo (e, idealmente, como desativá-lo quando a edição parar - por exemplo, na saída ou alteração de arquivo). Extensões para, e. less e outros programas também seriam muito úteis.

Embora a URL tecnicamente tenha que ser codificada por URL, eu estou totalmente bem se não estiver - eu não costumo editar arquivos com nomes de arquivos particularmente incomuns no Vim.

    
por nneonneo 30.09.2016 / 00:04

1 resposta

1

Se você não se importar em desistir da usual manipulação title no Vim, você pode seqüestrar isso. Emite para o terminal e pode ser ajustado para emitir as seqüências apropriadas:

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

Use control + v e então esc para obter os caracteres literais para os caracteres de controle mostrados acima. Uma função em torno de vim em seu shell apagará a configuração (o VimLeave autocmd não consegui trabalhar em 7.3 e também há o problema if-you-suspend vim ).

function vim {
    command vim "$@"
    echo -ne "3]6;
set t_ts=^[]6;file://localhost
set t_fs=^G^M
set title
autocmd BufEnter * let &titlestring = expand("%:p")
7" }

:help title para detalhes sobre title , ou dê uma olhada no arquivo Vim src/term.c para o código.

    
por 30.09.2016 / 01:42