移动最后一个编辑位置

时间:2014-01-14 14:10:52

标签: vim

我希望看到完整的编辑位置列表,而不仅仅是'.之类的最后一个 跳跃(<c-o>&amp; <c-i>)不是,因为您可以编辑几次而不会跳转。

是否可以实现这样的插件或插件?

修改

在空白行some text<esc>中输入,然后在0i1<esc>$a2<esc>进行o<esc>。我希望有一个密钥首先返回2然后1g; / g,不这样做,他们将这两个编辑视为单一编辑。

似乎这有效

set fo=
au InsertEnter * set tw=1 
au InsertLeave * set tw=78 

之后,您可以使用g; / g,

3 个答案:

答案 0 :(得分:4)

基本上,您希望内置g; / g,命令的功能不带 :help所述的特殊处理:

  

当两个可撤消的更改位于同一行且列位置较少时   比'textwidth'分开只记住最后一个。这避免了   一行中的小变化序列,例如“xxxxx”,增加了许多位置   到更改列表。当'textwidth'为零时,使用'wrapmargin'。当那个   也没有设置固定数量为79的使用。细节:用于计算   使用字节而不是字符,以避免速度惩罚(这只是重要的   用于多字节编码)。

不幸的是,您只有两个选择:

  1. 编写自己的插件来记录插入位置(例如通过:autocmd InsertLeave,但从其他模式捕获更改将更难),并提供跳转到它们的映射。
  2. 修改Vim的源代码,使上述特殊处理适应您的想法。

答案 1 :(得分:1)

  • 修改:试试http://lifehacker.com/202093/go-back-in-text-file-time-with-vim-70   它可能就是你要找的东西

  • 您可以尝试:

    :ju(显示所有“跳转”,即您进入文件的位置。但并不总是您编辑的位置)

    如果你想直接跳到“位置n-3”:3 <c-o>会这样做

  • 另一种方式:g ;返回g ,继续前进

  • 另一种方式:你可以“标记”位置,稍后再引用它们

    ma标记当前位置并将其标记为“a” mb标记另一个位置,并将其标记为“b”

    然后

    'a返回到位置a,'b转到位置b。

    它也适用于命令:

    :.,'as/^/# /:在当前行(。)到标记a为('a)的行前面添加“#” (等)

  • 另一种方法:快速跳转到当前结束的相同单词(从函数定义跳转到函数用法很有用:*(直到达到你想要的那个)

答案 2 :(得分:0)

我认为你想要的是g-。另见:help :undolist。有关详细信息,请阅读

:help undo-tree
:help usr_32.txt

编辑:正如评论所指出的,这不是问题所要求的。正如@Olivier Dulac所提到的那样,我真的在考虑g;g,