Vim功能返回到当前线路

Vim功能返回到当前线路,vim,Vim,我试图编写一个Vim函数,它将执行一系列操作,然后返回到函数第一次触发的行。是否有可能以某种方式编写一个能够执行此行为的Vim函数 例如,如果我在vim缓冲区的某个地方,比如说第55行,然后键入gg转到第一行,我可以返回到第55行,使用?如何在vim函数中写入此行为?提前感谢您的帮助。首先,您可以在通常键入的函数中执行所有操作。要使用,您只需要正确的转义: :execute "normal! \<C-o>" 但是,如果希望操作完全不可见,仅恢复光标位置是不够的。移动也可能会影响视口

我试图编写一个Vim函数,它将执行一系列操作,然后返回到函数第一次触发的行。是否有可能以某种方式编写一个能够执行此行为的Vim函数


例如,如果我在vim缓冲区的某个地方,比如说第55行,然后键入
gg
转到第一行,我可以返回到第55行,使用
如何在vim函数中写入此行为?提前感谢您的帮助。

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

:execute "normal! \<C-o>"
但是,如果希望操作完全不可见,仅恢复光标位置是不够的。移动也可能会影响视口;i、 e.窗口中显示哪些缓冲线。要保持其完整性,请使用:

:let save_view = winsaveview()
" Your actions here
:call winrestview(save_view)
" Now the window looks exactly as before.
为什么不干脆做
:''
:let save_view = winsaveview()
" Your actions here
:call winrestview(save_view)
" Now the window looks exactly as before.