6

system現在のバッファに基づいてファイルを生成し、生成されたファイルを で開く呼び出しを行うプラグインを作成しようとしていますvsplit。または、既に開いている場合は、ソース ファイルが変更されたときに更新されます。

ファイルを生成して分割を開く/更新するところまでコードを取得しましたが、問題は、最初に分割を開いたときにフォーカスが分割に移動し、ソースファイルのカーソル位置を更新するとジャンプすることですページの上部。

これが私が試していることです。どんな助けでも大歓迎です。

execute 'keepjumps silent ! ' . s:cmd . ' ' . s:src_file . ' > ' . s:dst_file

if exists("s:outputbufnr") && bufexists(s:outputbufnr)
  execute 'keepjumps ' . bufwinnr(s:outputbufnr)
else
  " execute "keepjumps vnew " s:dst_file
  execute "keepjumps rightbelow vertical new " . s:dst_file
  let s:outputbufnr=bufnr(s:dst_file)
endif  

ただし、カーソルを以前の位置に戻す必要があることからkeepjumps、そうではないようです。

4

2 に答える 2

4

これは、vim のプレビュー ウィンドウの完璧な使い方のように思えます。プレビュー ウィンドウ ( ) でファイルを開くと:pedit /path/to/file、現在のウィンドウからフォーカスが移動しません。また、必要に応じていつでもプレビュー ウィンドウに直接ジャンプすることもwincmd Pできます。を使用して、どこからでもプレビュー ウィンドウを閉じることもできます:pclose。ファイルが変更されていて、更新を確認したい場合は、:pedit /path/to/fileもう一度更新を取得できます。

もう 1 つの小さな利点は、プレビュー ウィンドウにファイルがある場合でも:q:qa.

于 2012-05-03T14:55:24.803 に答える
1

wincmd p分割後に使用したいと思われます。これにより、以前のウィンドウに戻ります。

于 2012-05-03T14:39:46.307 に答える