在vsplit中打开可编辑文件,但在vimscript中保持原始位置

Jar*_*eer 6 vim

我正在尝试编写一个插件,它将system调用一个基于当前缓冲区生成文件的调用,然后在a中打开生成的文件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  
Run Code Online (Sandbox Code Playgroud)

keepjumps然而,从我应该将光标返回到其先前的位置,看起来并非如此.

Ran*_*ris 4

这听起来像是 vim 中预览窗口的完美使用。当您在预览窗口 ( ) 中打开文件时,:pedit /path/to/file焦点不会离开当前窗口。如果需要,您还可以随时直接跳转到预览窗口wincmd P。您还可以使用 关闭预览窗口:pclose。如果文件已更改并且您想查看更新,您可以再次:pedit /path/to/file获取更新。

另一个小好处是,即使你在预览窗口中有一个文件,你仍然可以用普通的:q而不是:qa.