在行中保存准确的光标位置

问题描述

我正在寻找让 Vim 在退出或在缓冲区之间切换时保存我的确切光标位置的方法。

我的配置中有以下配置:

autocmd BufReadPost *
  \ if line("'\"") > 0 && line ("'\"") <= line("$") |
  \ exe "normal g'\"" |
  \ endif

它只将光标返回到我的光标所在行的开头,而不是光标在其中的位置;即我的光标返回到行首,而不是它所在的位置。

有什么办法可以带回光标的准确位置吗?

解决方法

您的代码段似乎是在 :help restore-cursor 下找到的代码段的变体,它以您想要的方式工作:

autocmd BufReadPost *
  \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
  \ |   exe "normal! g`\""
  \ | endif

区别在于您使用 g'(“g 然后单引号”)与使用 g`(“g 然后反引号”):

  • 前者跳转到标有"的行的开头,就像'a会跳转到标有a的行的开头一样,
  • 后者跳转到标记"的确切位置,就像`a会跳转到标记a的确切位置一样。

参见:help mark-motions,更具体地说,参见:help g'

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...