6

ファイルを開くための相対パスを使用して、セッションを Vim に保存しようとしています。cur_dirinを使用sessionoptionsすると、ファイルへのパスは相対 wrt になります。現在のディレクトリですが、セッション ファイルには次のcd /path/to/base/directoryコマンドが含まれています。

...
cd /path/to/base
badd +0 relpath1/file
badd +0 relpath2/file
...

sessionoptionscurdirを省略した場合、cdコマンドは表示されなくなりますが、ファイル パスは絶対パスになります。

badd +0 /path/to/base/relpath1/file
badd +0 /path/to/base/relpath2/file

相対パスのみを wrtにする方法はありますか。プラグインやスクリプトの作成なしで、セッションが作成されたときの現在のディレクトリに移動しますか? したがって、セッションファイルには次のもののみが含まれます。

badd +0 relpath1/file
badd +0 relpath2/file

私の最終的な目標は、たとえば SVN チェックアウトから別のものにコピーできるセッション ファイルを用意することです。

4

4 に答える 4

7

ラッパー関数を設定しないと、それを行うことはできません。

例:

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
于 2012-11-10T15:17:53.260 に答える
0

絶対パスをグローバルに削除するために、Botykaiの回答を追加の行で変更しました。

function! MakeSession()
  let b:sessiondir = getcwd()
  let b:filename = b:sessiondir . '/_vimsession'
  exe "mksession! " . b:filename
  exe "edit! " . b:filename
  " Delete the line start with 'cd ...'
  exe "g:^cd :d"
  " Vim complains about b:sessiondir being undefined. So I use getcwd() directly
  " exe "%s:" . b:sessiondir . "::g". Use ':' to avoid path escape
  exe "%s:" . getcwd() . "/::g"
  " Save with 'x'
  exe "x"
endfunction

誰かが上記の機能を改善して、行を で始まる行だけに絞り込むことができればbadd、これはより良いでしょう.

于 2019-02-25T20:57:38.593 に答える