在vim帮助文件中使用CTRL-O会跳转到上一个文件

时间:2017-12-12 06:18:23

标签: vim

我正在使用Vim 8.0,当我使用CTRL-浏览vim帮助文件跳转时,我发现当旧位置在当前时,尝试使用CTRL-O返回跳转列表时工作正常文件,但是当我尝试将CTRL-O移到上一个文件中的旧位置时,事情就会中断。不知何故,这被视为跳转本身,而不是回到跳转列表中,而是将全新的条目添加到跳转列表中。

以下是一个例子来说明。假设我在motion.txt.gz中跳转,然后使用CTRL-链接到map.txt.gz的链接并在该文件中跳转。然后我的跳转列表可能如下所示:

:jump
 jump line  col file/text
   9     1    0 help.txt
   8     1    0 motion.txt.gz
   7   313   19 motion.txt.gz
   6    75    6 motion.txt.gz
   5    87    6 motion.txt.gz
   4    96   64 motion.txt.gz
   3     1    0 *map.txt*       For Vim version 8.0.  Last change: 2017 Mar 10
   2    56   23 :lm[ap]^I{lhs} {rhs}^I^I|mapmode-l|^I^I*:lm* *:lmap*
   1   361   12 *omap-info*
>

大!到现在为止还挺好。但是现在我想用CTRL-O一个接一个地浏览跳转列表,一直回到上面的#7(在motion.txt.gz中第313行第19行)。我发现CTRL-O会一直运行到上面的#3,就像这样:

:jump
 jump line  col file/text
   6     1    0 help.txt
   5     1    0 motion.txt.gz
   4   313   19 motion.txt.gz
   3    75    6 motion.txt.gz
   2    87    6 motion.txt.gz
   1    96   64 motion.txt.gz
>  0     1    0 *map.txt*       For Vim version 8.0.  Last change: 2017 Mar 10
   1    56   23 :lm[ap]^I{lhs} {rhs}^I^I|mapmode-l|^I^I*:lm* *:lmap*
   2   361    7 *omap-info*

然后下一个CTRL-O会做一些我没想到的事情。 vim神秘地将我的动作视为从motion.txt开始跳转到motion.txt的第96行col 64,而不是将我移动到跳转列表中的另一个位置,从而将motion.txt的开头添加到结尾跳转列表(以及通过vim跳转列表的规则,从列表中删除其副本):

:jump
 jump line  col file/text
   9     1    0 help.txt
   8   313   19 character |linewise|.
   7    75    6 *exclusive* *inclusive*
   6    87    6 *exclusive-linewise*
   5    96   64 motion isn't yet), a special set of mappings can be used.  See |:omap|.
   4     1    0 map.txt.gz
   3    56   23 map.txt.gz
   2   361    7 map.txt.gz
   1     1    0 *motion.txt*    For Vim version 8.0.  Last change: 2017 Mar 12
>

虽然最终结果是我确实在motion.txt的第96行col 64(未显示为>),但问题是我的跳转历史现在已被捏造。实际上,问题在于继续使用从上面#1到上面#2的CTRL-O(map.txt的顶部被添加,我最终到map.txt的第361行第7行)。基本上,我无法像我原先想要的那样导航回到motion.txt的第313行第19行。

真的很想了解造成这种行为的原因。我想我多年来一直在vim中遇到这个问题而且从未调查过。我希望最终找到答案。谢谢你的帮助!

0 个答案:

没有答案