Как заставить 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"

заставит заголовок терминала отображать имя файла passwd, по которому можно щелкнуть с помощью cmd, чтобы получить навигационную цепочку (функция «заголовка документа» в большинстве редакторов файлов в OS X). По умолчанию OS X bashrcуже использует эту последовательность для вставки текущего рабочего каталога в заголовок окна.

Я хотел бы узнать, как заставить Vim выводить эту конкретную escape-последовательность всякий раз, когда он редактирует новый файл (и, в идеале, как сбросить ее после остановки редактирования - например, при выходе или смене файла). Расширения для eg lessи других программ также были бы очень полезны.

Хотя технически URL-адрес должен быть правильно закодирован, меня вполне устраивает, если это не так, — я обычно не редактирую в Vim файлы с особенно необычными именами.

решение1

Если вы не против отказаться от обычной titleобработки в Vim, вы можете перехватить это. Он выдает в терминал и может быть настроен для выдачи соответствующих последовательностей:

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

Используйте control+vи затем, escчтобы получить буквальные символы для управляющих символов, показанных выше. Функция vimв вашей оболочке сотрет настройку ( VimLeave autocmdя не мог заставить ее работать в 7.3, и есть также vimпроблема if-you-suspend).

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

:help titleдля получения подробной информации titleили посмотрите src/term.cкод в файле Vim.

Связанный контент