如何让 vim 会话使用相对路径?

如何让 vim 会话使用相对路径?

我正在使用这样的 sessionopts:

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 repo 并从任何机器恢复我的会话?

答案1

grosshat 的解决方案不起作用。可能需要参考 Zsolt Botyaki 在 SO 上的回答

据我所知,如果不为其设置包装函数,你就无法做到这一点。

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

答案2

这听起来很奇怪。当你设置时,sesdir你声明会话的位置将设置为当前工作目录,并且会话文件中的所有路径将变为相对路径而不是绝对路径。

我使用了您的 sessionopts,它有效。我找不到任何与路径相关的行。您如何创建会话文件?标准是:

  1. :mksession [filename]
  2. vim -S [文件名]

相关内容