2

Я использую такие сессионные опции:

set ssop=blank,buffers,sesdir,folds,localoptions,tabpages,winpos,winsize

"Sesdir" в отличие от "curdir" должен хранить все пути относительно каталога, в котором находится файл сеанса. К сожалению, в файле сессии есть строка:

args absolute/path/to/file1 absolute/path/to/file2 and/so/on

Как заставить vim использовать только относительные пути, чтобы я мог просто поместить файл сеанса в git-репо и возобновить мой сеанс с любой машины?

2 ответа2

1

Решение Гросстала не работает. Вероятно, нужно сослаться на ответ Жолта Ботяки на SO:

Вы не можете сделать это, не настроив для этого функцию-обертку, AFAIK.

function! MakeSession()
  let b:sessiondir = getcwd()
  let b:filename = b:sessiondir . '/session.vim'
  exe "mksession! " . b:filename
  exe "edit! " . b:filename
  exe "g:^cd :d"
  exe "x" 
endfunction
0

Это звучит странно. Когда вы устанавливаете sesdir вы объявляете, что местоположение сеанса будет установлено как текущий рабочий каталог, и весь путь в файле сеанса станет относительным путем, а не абсолютным путем.

Я использовал ваши сессионные опции, и это работает. Я не могу найти ни одной строки, связанной с путями. Как вы создаете файл сессии? Стандарт это:

  1. :mksession [filename]
  2. vim -S [имя файла]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .