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

Vim功能返回当前行

我正在尝试编写一个Vim函数,它将执行一系列操作,然后返回到首次触发函数的行.有可能以某种方式编写一个可以执行此行为的Vim函数吗?

例如,如果我在vim缓冲区中某处 – 比如第55行并输入gg转到第一行,我可以使用< C-o>返回第55行.如何在Vim函数中编写此行为?在此先感谢您的帮助.

解决方法

首先,您可以在通常键入的函数中执行所有操作.要使用< C-o>,您只需要正确的转义:

:execute "normal! \<C-o>"

除此之外,您还可以使用专用的Vimscript功能.最简单的是cursor(),它不修改跳转列表(使用line(‘.’)将原始位置保存在变量中;我在这里硬编码):

:call cursor(55,0)

如果您希望您的操作完全不可见,那么仅恢复光标位置是不够的.这些举动也可能影响了视口;即在窗口中显示哪些缓冲线.为了保持完整,请使用:

:let save_view = winsaveview()
" Your actions here
:call winrestview(save_view)
" Now the window looks exactly as before.

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

相关推荐