微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在尝试编写一个插件,它将进行系统调用,根据当前缓冲区生成一个文件,然后在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

从我应该保持的跳跃应该将光标返回到其先前的位置,然而,似乎并非如此.

解决方法

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

一个小好处,即使你在预览窗口中有一个文件,你仍然可以使用plain:q而不是:qa退出vim.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐