我正在尝试编写一个Vim函数,它将执行一系列操作,然后返回到首次触发函数的行.有可能以某种方式编写一个可以执行此行为的Vim函数吗?
例如,如果我在vim缓冲区中的某个位置 - 比如第55行并键入gg第一行,我可以返回第55行,<C-o>?如何在Vim函数中编写此行为?在此先感谢您的帮助.
首先,您可以在通常键入的函数中执行所有操作.要使用<C-o>,您只需要正确的转义:
:execute "normal! \<C-o>"
Run Code Online (Sandbox Code Playgroud)
除此之外,您还可以使用专用的Vimscript功能.最简单的是cursor(),它不会修改跳转列表(用于line('.')保存变量中的原始位置;我在这里进行硬编码):
:call cursor(55, 0)
Run Code Online (Sandbox Code Playgroud)
如果您希望您的操作完全不可见,那么仅恢复光标位置是不够的.这些举动也可能影响了视口; 即窗口中显示哪些缓冲行.为了保持完整,请使用:
:let save_view = winsaveview()
" Your actions here
:call winrestview(save_view)
" Now the window looks exactly as before.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |