如何使vim恢复当前缓冲区的最后一个光标位置?
由于某些原因,vim不保存当前缓冲区的光标位置。例如,如果我打开了3个缓冲区(选项卡) 如果选择了“栏”,则在退出时,vim会将光标位置保存到“foo”和“foobar”标记处,而不是“bar”“。无论是否有其他缓冲区,退出前它始终是当前选定的缓冲区。下面是一个示例,演示了在我关闭vim会话后,如何使vim恢复当前缓冲区的最后一个光标位置?,vim,neovim,Vim,Neovim,由于某些原因,vim不保存当前缓冲区的光标位置。例如,如果我打开了3个缓冲区(选项卡) 如果选择了“栏”,则在退出时,vim会将光标位置保存到“foo”和“foobar”标记处,而不是“bar”“。无论是否有其他缓冲区,退出前它始终是当前选定的缓冲区。下面是一个示例,演示了在我关闭vim会话后,~/.local/share/shada/main.shada文件的外观: Local mark with timestamp 2019-07-27T21:29:30: % Key Desc
~/.local/share/shada/main.shada
文件的外观:
Local mark with timestamp 2019-07-27T21:29:30:
% Key Description Value
+ f file name "/home/damage/tmp/foo"
+ n name '"'
+ l line number 10
+ c column 0
Local mark with timestamp 2019-07-27T21:29:30:
% Key Description Value
+ f file name "/home/damage/tmp/bar"
+ n name '"'
+ l line number 1
+ c column 0
Local mark with timestamp 2019-07-27T21:29:30:
% Key Description Value
+ f file name "/home/damage/tmp/foobar"
+ n name '"'
+ l line number 20
+ c column 0
当前缓冲区的标记“
始终为1。当我强制vim使用命令m”
将光标位置显式保存到“
标记时,此信息在退出时丢失。不知道从何处开始
shada=!,'10,/100,:100,<0,@1,f1,h,s1,%10
shada=!,'10,/100,:100,问题是由我使用的会话管理器引起的。更具体地说,这一行
autocmd VimLeavePre * execute s:isActiveSession() && s:saveSession()
我将此事件替换为vimleeve
,该事件在写入shada
文件后调用
autocmd VimLeave * execute s:isActiveSession() && s:saveSession()
UPD:为了追求更小的代码库,我忘记了有移动光标的:n
命令。无论表达式的计算结果如何,光标都会放在第一行(:0
的工作原理与:1
)相同。因此,我应该编写另一个函数或用以下函数替换它
autocmd VimLeave * if s:isActiveSession() | call s:saveSession() | endif
问题是由我使用的会话管理器引起的。更具体地说,这一行
autocmd VimLeavePre * execute s:isActiveSession() && s:saveSession()
我将此事件替换为vimleeve
,该事件在写入shada
文件后调用
autocmd VimLeave * execute s:isActiveSession() && s:saveSession()
UPD:为了追求更小的代码库,我忘记了有移动光标的:n
命令。无论表达式的计算结果如何,光标都会放在第一行(:0
的工作原理与:1
)相同。因此,我应该编写另一个函数或用以下函数替换它
autocmd VimLeave * if s:isActiveSession() | call s:saveSession() | endif
读者注意:shada是一个nvim ism,它取代了viminfo文件。它们相似但不同。shada
控制保存的内容,f1
意味着保存所有标记。OP:您考虑过在neovim的github上提交问题吗?我想我可以。我认为我的文档有问题,因为shada
选项。您的vim配置是否保存光标位置?是:在github上查看我的点文件。我是我的vimrc,我设置viminfo+=f1
。然后使用自动命令恢复光标位置(在plugin/lastpos.vim中)。感谢您提供的配置。我的设置在vim上也失败了,因此我将首先尝试使用您的配置对其进行测试。读者注意:shada是一个nvim ism,它取代了viminfo文件。它们相似但不同。shada
控制保存的内容,而f1
意味着保存所有标记。OP:您考虑过在neovim的git上提交问题吗hub?我想我可以。我想我的文档有点问题,因为在shada
选项中有很多设置。你的vim配置是否保存光标位置?是:在github上查看我的点文件。我是我的vimrc,我设置viminfo+=f1
。然后我使用自动命令恢复光标位置(在plugin/lastpos.vim中)。感谢您的配置。我的设置在vim中也会失败,因此我将首先尝试使用您的配置进行测试。